GNU/Linux >> Linux の 問題 >  >> Linux

Linux - デフォルトルートのヒットを見つける

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 その内容を表示 (または表示してリセット) します。


Linux
  1. LinuxでFINDを使用する方法

  2. Linuxでファイルを見つける方法

  3. Linuxの検索コマンド

  1. Linux –デフォルトルートの送信元アドレスを取得するためのポータブルな方法?

  2. LinuxでデフォルトゲートウェイIPを見つける方法

  3. Linux の孤立したプロセスを見つける

  1. Linuxでファイルを見つける方法

  2. Linux での find コマンドの例

  3. Linux はハイパースレッド化されたコア ID を見つけます