デバッグ目的でLinux仮想インターフェイスからトラフィックをキャプチャしたいと思います。私は3つすべてでveth
、tun
そしてdummy
インターフェースタイプを試してきましたが、何も表示するのが難しいですtcpdump
。
仮想インターフェイスを設定する方法は次のとおりです。
ip link add dummy10 type dummy
ip addr add 99.99.99.1 dev dummy10
ip link set dummy10 up
端末で次のコマンドを使用して視聴してくださいtcpdump
。
tcpdump -i dummy10
後で次のコマンドを聞いてくださいnc
。
nc -l 99.99.99.1 2048
3番目のステップでは、次のコマンドを使用してHTTP要求を作成しますcurl
。
curl http://99.99.99.1:2048/
端末2では要求データを表示できますが、curl
何も表示されませんtcpdump
。
ㅏチューニング/タブチュートリアルローカルインターフェイスで動作するときにカーネルが実際にパケットを送信しない可能性があるいくつかのケースを明確にしました。
tsharkの出力を見ると、何も表示されません。このインターフェイスを通過するトラフィックはありません。そうですね。インターフェイスのIPアドレスに対してpingを送信しているため、オペレーティングシステムは「オンライン」でパケットを送信する必要がないと正しく決定し、カーネル自体はこれらのpingに応答しています。考えてみると、他のインターフェイス(eth0など)のIPアドレスをpingすると、次のことが起こります。つまり、パケットは送信されません。これは当然聞こえるかもしれませんが、最初は混乱する可能性があります。
しかし、これがTCPパケットにどのように適用されるかを知ることは困難です。
たぶんtcpdump
インターフェイスに異なるバインディングが必要ですか?
ベストアンサー1
トラフィックはインターフェイスを通って流れますlo
。
IPがボックスに追加されると、そのアドレスへのパスが「ローカル」テーブルに追加されます。このテーブルのすべてのルートは、ループバックインターフェイスを介してトラフィックをルーティングします。
次のコマンドを使用して、「ローカル」テーブルの内容を表示できます。
ip route show table local
私のシステムでは、次のようになります。
local 10.230.134.38 dev tun0 proto kernel scope host src 10.230.134.38
broadcast 10.230.134.38 dev tun0 proto kernel scope link src 10.230.134.38
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 172.17.0.0 dev docker0 proto kernel scope link src 172.17.42.1
local 172.17.42.1 dev docker0 proto kernel scope host src 172.17.42.1
broadcast 172.17.255.255 dev docker0 proto kernel scope link src 172.17.42.1
broadcast 192.168.0.0 dev enp6s0 proto kernel scope link src 192.168.0.20
local 192.168.0.20 dev enp6s0 proto kernel scope host src 192.168.0.20
broadcast 192.168.0.255 dev enp6s0 proto kernel scope link src 192.168.0.20
10.230.134.38
したがって、基本的にトラフィック127.0.0.0/8
を127.0.0.1
(追加の)、172.17.42.1
または192.168.0.20
、IPが実際に別のインターフェイスにある場合でも、トラフィックはループバックインターフェイスを介してルーティングされます。