Saya ingin menangkap lalu lintas di antarmuka virtual Linux, untuk keperluan debugging. Saya telah bereksperimen dengan veth
, tun
dan dummy
tipe antarmuka; pada ketiga, saya mengalami kesulitan tcpdump
untuk menunjukkan apa pun.
Inilah cara saya mengatur antarmuka dummy:
ip link add dummy10 type dummy
ip addr add 99.99.99.1 dev dummy10
ip link set dummy10 up
Di satu terminal, tontonlah dengan tcpdump
:
tcpdump -i dummy10
Dalam sedetik, dengarkan dengan nc
:
nc -l 99.99.99.1 2048
Yang ketiga, buat permintaan HTTP dengan curl
:
curl http://99.99.99.1:2048/
Meskipun di terminal 2 kita dapat melihat data dari curl
permintaan, tidak ada yang muncul tcpdump
.
Sebuah Tun / Tap tutorial memperjelas beberapa situasi di mana kernel mungkin tidak benar-benar mengirim paket ketika salah satu beroperasi pada antarmuka lokal:
Melihat output dari tshark, kita melihat ... tidak ada apa-apa. Tidak ada lalu lintas melalui antarmuka. Ini benar: karena kita melakukan ping alamat IP antarmuka, sistem operasi dengan benar memutuskan bahwa tidak ada paket yang perlu dikirim "pada kabel", dan kernel itu sendiri membalas ping ini. Jika Anda memikirkannya, itulah yang akan terjadi jika Anda melakukan ping alamat IP antarmuka lain (misalnya eth0): tidak ada paket yang akan dikirim. Ini mungkin terdengar jelas, tetapi bisa menjadi sumber kebingungan pada awalnya (itu untuk saya).
Namun, sulit untuk melihat bagaimana ini bisa berlaku untuk paket data TCP.
Mungkin tcpdump
harus terikat ke antarmuka dengan cara yang berbeda?