Pengambilan paket: memfilter pada RX vs TX

8

Saya memiliki masalah jaringan di mana frame dengan MAC sumber yang cocok dengan salah satu MAC sumber host saya tiba di host - MAC duplikat yang jelas, atau loop, atau masalah L2 lainnya.

Saya percaya ini adalah situasinya karena tabel MAC (CAM tables) dari linux linux saya mendaftarkan MAC lokal (untuk mesin virtual yang dihosting) sebagai port upstream, dan log kernel menunjukkan kesalahan:

bridgename: received packet on bond0.2222 with own address as source address

Saya ingin mendapatkan detail lebih lanjut tentang paket / bingkai "nakal" ini, tapi saya tidak tahu bagaimana cara membidiknya. Dengan tcpdump Anda dapat memfilter pada sumber MAC tertentu ('eter src MAC'), tetapi ini didasarkan pada byte dalam bingkai - bukan apakah frame itu "dikirim" versus "diterima dalam". Kami biasanya menganggap frame dengan sumber kami MAC berarti kami mengirimkannya, tetapi jika frame duplikat diterima, isinya akan terlihat persis sama dengan filter.

Bagaimana kita bisa mengamati apakah frame diterima versus ditransmisikan dalam paket capture?

Joshua Miller
sumber
1
Tidak tcpdump -i <interface> inbound(atau "keluar") berfungsi?
Halaman manual tampaknya menunjukkan bahwa itu terbatas pada SLIP. Ketika saya mencobanya terhadap semua antarmuka saya (loopback, eth / em, bond, vlan, ketuk ...) tcpdump mengatakan: "tcpdump: inbound / outbound tidak didukung pada linktype 1"
Joshua Miller
2
Itu tidak menjawab pertanyaan Anda, tetapi menggunakan iptables dan ulogd Anda akan bisa mendapatkan pcap dengan hanya paket-paket menarik di dalamnya.
lsmooth
gunakan tcpdump -Luntuk melihat antarmuka yang didukung,
PersianGulf
gunakanngrep -d dev
PersianGulf

Jawaban:

7

Gunakan --directionopsi untuk tcpdump:

-Q direction
--direction=direction
       Choose send/receive direction direction for which packets should be
       captured. Possible values are `in', `out' and `inout'. Not available on
       all platforms.
abacabadabacaba
sumber
1
Pilihan ini tampaknya hanya tersedia dengan rilis stabil terbaru dari tcpdump - 4.6.2. Tetapi setelah membangunnya di ubuntu, tampaknya berhasil membedakan antara frame masuk dan keluar. Sabas!
Joshua Miller
1
@ JoshuaMiller Saya baru saja memeriksa tcpdumphalaman manual di Ubuntu 14.04, dan ada pilihan dengan deskripsi yang sama persis ada, tetapi disebut -Pbukan -Q(dan formulir panjang tidak disebutkan).
kasperd
@kasperd Anda benar! tcpdump 4.5.1 sebenarnya memiliki -P. Mungkin fungsi ini tidak baru seperti yang saya pikirkan.
Joshua Miller
0

Dengan iptables, Anda memiliki 'rantai' berbeda untuk paket masuk dan keluar. Dari halaman manual iptables (8):

... the chains INPUT and OUTPUT are only traversed for packets coming into 
the local host and originating from the local host  respectively.   Hence 
every  packet  only  passes  through one of the three chains (except 
loopback traffic, which involves both INPUT and OUTPUT chains) ...

iptables dapat melakukan logging (-l), yang mungkin menunjukkan apa yang Anda butuhkan. Mungkin juga dapat meneruskan salinan paket ke antarmuka untuk masuk dengan alat lain, tapi saya belum punya alasan untuk melakukan itu.

mc0e
sumber