GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux - Treffer der Standardroute finden

Der Linux-Routing-Cache für IPv4 wurde in Linux 3.6 entfernt (es bleibt nur die Verwendung eines optimierten LPC-Trie). Es gibt also keine Möglichkeit mit einem Linux-System mit einem OS von nach 2012 an den Routing-Cache zu kommen Statistiken.

Eine einfache Möglichkeit zum Taggen Die Verwendung der Standardroute besteht darin, einen Realm zu platzieren Wert auf dieser Strecke. Ein Paket, das zu dieser Route passt (und nicht zu einer spezifischeren Route, die dasselbe Gateway verwendet), wird als Paket mit dem angegebenen Bereichswert identifiziert. Wenn also die Standardroute 192.0.2.1 über eth0 wäre , würde die Route beispielsweise so eingestellt:

ip route add default via 192.0.2.1 proto static realm 10

Oder Sie könnten eine vorherige Standardroute (ohne Realm) ändern, indem Sie add ersetzen mit change , ohne Unterbrechung.

Dieses Realm-Tag kann dann mindestens in zwei anderen Netzwerk-Subsystemen wiederverwendet werden:tc filter ... route oder nft ... meta rtclassid von nftables .

Verkehrskontrolle

tc ist ziemlich grob und arbeitet normalerweise auf der Schnittstellenebene. Der einfachste Weg, einen Filter hinzuzufügen, ist die Verwendung von prio qdisc, die einfachste klassengerechte qdisc. Seine spezifischen Prioritätseigenschaften werden nicht wirklich verwendet. Also nach dem vorherigen Beispiel:

tc qdisc add dev eth0 root handle 1: prio

Fügen Sie nun den Filter mit einer leeren Aktion hinzu (und mit einem pref bestellen und weiter Kontrolle, um bei Bedarf zusätzliche ähnliche Filter zuzulassen), nur um Statistiken darüber zu haben:

tc filter add dev eth0 parent 1: protocol ip pref 1 route to 10 action continue

Jetzt wird jedes IP-Paket, das zu Route Realm 10 passt, in der Statistik angezeigt, indem tc -s filter show dev eth0 verwendet wird . Beispiel:

# tc -s filter show dev eth0
filter parent 1: protocol all pref 1 route chain 0 
filter parent 1: protocol all pref 1 route chain 0 fh 0xffff000a to 10 
    action order 1: gact action continue
     random type none pass val 0
     index 1 ref 1 bind 1 installed 48 sec used 4 sec
    Action statistics:
    Sent 12230 bytes 79 pkt (dropped 0, overlimits 0 requeues 0) 
    backlog 0b 0p requeues 0

Hinweis:beide werden an und weitergeleitet lokal erzeugte Pakete stimmen überein, was ein Problem für Messungen sein könnte.

nftables

nftables hier wird nicht für irgendwelche Firewalls verwendet, sondern nur um einige Zähler zu erhöhen.

nftables installiert nur die angeforderten Netfilter-Hooks, anstatt alle verfügbaren, und hat daher normalerweise einen geringeren Platzbedarf als iptables . Hier brauchen wir nur eine zum Realm passende Regel - das ist die Rolle der rtclassid Ausdruck - mit einem Zähler darauf. Wenn es sich um lokal erzeugte Pakete handelt, verwenden Sie einfach die Ausgabe Haken. Der Forward-Hook passt nur zu weitergeleiteten Paketen.

nft add table ip mystats
nft add chain ip mystats forward '{ type filter hook forward priority 0; policy accept; }'
nft add rule ip mystats forward meta rtclassid 10 counter

Was würde zB später geben:

# nft list ruleset
table ip stats {
    chain forward {
        type filter hook forward priority filter; policy accept;
        meta rtclassid 10 counter packets 1453 bytes 118264
    }
}

Das Nullen des Werts ist nur möglich, wenn er in einem benannten Objekt gespeichert wird, der Regelsatz wäre stattdessen (zu laden mit nft -f file ):

table ip mystats {
    counter defaultroutecount { }

    chain forward {
        type filter hook forward priority filter; policy accept;
        meta rtclassid 10 counter name "defaultroutecount"
    }
}

Dann nft list counters oder nft reset counters wird seinen Inhalt anzeigen (oder anzeigen und zurücksetzen).


Linux
  1. So verwenden Sie FIND unter Linux

  2. So finden Sie eine Datei in Linux

  3. So finden Sie die Standard-Gateway-IP in Linux

  4. Linux-Suchbefehle

  5. Finden Sie Befehlsbeispiele in Linux

So finden Sie den Hostnamen unter Linux

Route-Befehl unter Linux

So fügen Sie eine Route unter Linux hinzu

So finden Sie die letzte Anmeldung unter Linux

Finden Sie Befehl in Linux/UNIX

route-Befehlsbeispiele in Linux