IPv4 の Linux ルーティング キャッシュは Linux 3.6 で削除されました (最適化された LPC-trie の使用のみが残ります)。したがって、2012 年以降の OS を搭載した Linux システムでルーティング キャッシュ を取得する方法はありません。
タグ付けの簡単な方法 デフォルト ルートの使用法は、レルム を配置することです。 このルートの値。 (同じゲートウェイを使用するより具体的なルートではなく) このルートに一致するパケットは、指定されたレルム値を持つものとして識別されます。したがって、デフォルト ルートが eth0 経由の 192.0.2.1 だった場合 、ルートはたとえば次のように設定されます:
ip route add default via 192.0.2.1 proto static realm 10
または、 add
を置き換えることで、以前のデフォルト ルート (レルムなし) を変更できます。 change
で 、混乱なく。
このレルム タグは、少なくとも他の 2 つのネットワーク サブシステムで再利用できます:tc filter ... route
または nftables の nft ... meta rtclassid
.
交通管制
tc
非常に粗雑で、通常はインターフェイス レベルで動作します。フィルターをアタッチする最も簡単な方法は、prio
を使用することです。 qdisc、最も単純なクラスフル qdisc。その特定の優先度プロパティは実際には使用されません。前の例に続いて:
tc qdisc add dev eth0 root handle 1: prio
ここで、空のアクション (および pref を含む) でフィルターを追加します。 注文と続行 必要に応じて追加の同様のフィルターを許可するように制御します)、統計を取得するためだけに:
tc filter add dev eth0 parent 1: protocol ip pref 1 route to 10 action continue
これで、ルート レルム 10 に一致するすべての IP パケットが、tc -s filter show dev eth0
を使用して統計に表示されます。 .例:
# 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
注:との両方が転送されました ローカルで発信されたパケットが一致しているため、測定の問題になる可能性があります。
nftables
nftables ここでは、いかなる種類のファイアウォールにも使用されませんが、いくつかのカウンターをインクリメントするためだけに使用されます.
nftables 利用可能なすべてではなく、要求された netfilter のフックのみをインストールするため、通常、iptables よりもフットプリントが小さくなります。 .ここでは、レルムに一致するルールが必要です - それが rtclassid の役割です 式 - カウンター付き。ローカルで発信されたパケットの場合は、出力 を使用してください 針。 forward フックは、転送されたパケットのみに一致します。
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
たとえば、後で次のようになります:
# nft list ruleset
table ip stats {
chain forward {
type filter hook forward priority filter; policy accept;
meta rtclassid 10 counter packets 1453 bytes 118264
}
}
値をゼロにすることは、それを名前付きオブジェクトに格納する場合にのみ可能です。ルールセットは代わりに (nft -f file
でロードする) ):
table ip mystats {
counter defaultroutecount { }
chain forward {
type filter hook forward priority filter; policy accept;
meta rtclassid 10 counter name "defaultroutecount"
}
}
次に nft list counters
または nft reset counters
その内容を表示 (または表示してリセット) します。