自宅のラボにスイッチがあり、特にVLANやその他プロトコルについて理解を深めたいと考えています。このスイッチ(TP-Link 5ポート やや管理されたスイッチ) はポートミラーリングを可能にします。
このミラーリングされたトラフィックを、監視マシンから導入される「新しい」トラフィックをできるだけ少なくして、自分のコンピューターで分析したいと考えています。どうすればそれを実現できますか?
元々自分の PC 宛てではないパケットを受信するには、NIC をプロミスキャス モードにする必要があることは既に知っています。これは通常、Wireshark 自体によって実行されるため、心配する必要はありません。
しかし、他のポートで生成されたトラフィックだけを見るために、ポートにできるだけ「ノイズ」を生じさせないようにしたいと考えました。私はすでにこの答えこれは、実行中のすべてのサービス (DHCP など) を無効にすることを示唆しており、これは理にかなっています。ただし、これによってノイズは大幅に削減されますが、ARP 解決やその他のカーネルベースのネットワーク相互作用を防ぐことはできない可能性があります。
また、この目的に特化したプロトコルがあることも知りました(例えばシスコのSPAN) ですが、私のスイッチにはその機能がありません。
そこで質問なのですが、ネットワーク インターフェイスを読み取り専用として使用するにはどうすればよいでしょうか?
答え1
Linuxでインターフェースを「読み取り専用」にする最も簡単な方法は、出力を適用することです。tc
フィルターをかけて落とす すべて。
フィルターを適用するには、クラスフル qdisc設置する必要があります。優先qdisc は最も単純なクラスフル qdisc であり、独自の機能ではなく、インターフェースでフィルターを使用できるようにするためだけに使用されます。
最後にインターフェースを設定するeth1「読み取り専用」:
tc qdisc add dev eth1 root prio
tc filter add dev eth1 matchall action drop
これにより、このインターフェイス上の送信トラフィックがブロックされます。RAW ソケット (ファイアウォールの影響を受けない) もブロックされるため、IPv4 DHCP クライアント (ファイアウォールがあってもアドレスを取得できる) もブロックされます。これをバイパスする方法はまだありますが、非常に慎重に行う必要があります。私が知っている方法を 2 つ紹介します。
- 使用
PACKET_QDISC_BYPASS
生のソケットのソケットオプション - 使用するAF_XDPソケット。
インターフェースを元の状態に戻すには、qdisc を削除するだけです。
tc qdisc del dev eth1 root
ノート:
ポートがミラーリング モードに設定されているスイッチでは、おそらくこのポートが既に読み取り専用モードに設定されていると考えられます。
それはテストすべきことです。そして、それが真実であれば、上記のフィルターまたは以下の箇条書き 2 を使用することは無意味になります。
UP状態にあり、追加の設定が適用されていないインターフェースは、引き続きトラフィックを交換できます。
前のフィルターがなければ、未設定でも UP インターフェースがトラフィックを残す可能性があります。少なくとも次の 2 つのケースがあります。
IPv6自動設定
使用
sysctl -w net.ipv6.conf.eth1.disable_ipv6=1
ARPが無効になっていない場合(
ip link set eth1 arp off
)このケースは、LAN内のシステムが、他のネットワーク(仮想ネットワークを含む)で既知のアドレスを使用しているかどうかを確認するためにプローブを実行する、より一般的な情報漏洩のケースと同じです。Linuxでは、デフォルトで、インターフェースは、どれでもその他の住所どれでもその他のインターフェース。それは 一部弱者のホストモデル。
例えば、OPのシステムがlivbirt QEMU/KVMをデフォルト設定で実行している場合、192.168.122.1/24はvirbr0、未設定の UP インターフェースにのみ接続されている他の Linux システムは、次のコマンドを実行すると、引き続き ARP 応答を取得します。
arping -I eth0 192.168.122.1
プロービング システムに 192.168.122.1 へのルートがあるかどうかは関係ありません。これは ARP (およびルートを気にしないコマンド) に関するものです。LXC や 10.0.3.1 などについても同様です。