tcpdump: จับหนึ่งใน vlans หลาย ๆ


11

ฉันต้องการ tcpdump เพื่อจับภาพ VLAN 1000 หรือ VLAN 501 man pcap-filterพูดว่า:

นิพจน์ vlan [vlan_id] อาจถูกใช้มากกว่าหนึ่งครั้งเพื่อกรองตามลำดับชั้นของ VLAN การใช้นิพจน์นั้นแต่ละครั้งจะเพิ่มตัวกรองออฟเซ็ตทีละ 4

เมื่อฉันทำ:

tcpdump -vv -i eth1 \( vlan 1000 \) and \( ip host 10.1.1.98 or ip host 10.1.1.99 \)

ฉันได้รับแพ็คเก็ตที่ถูกจับ

แต่เมื่อฉัน:

tcpdump -vv -i eth1 \( vlan 1000 or vlan 501 \) and \( ip host 10.1.1.98 or ip host 10.1.1.99 \)

ฉันไม่ได้รับแพ็กเก็ตใด ๆ - ฉันคิดว่าเป็นเพราะพฤติกรรม "การเพิ่มขึ้น 4" ที่อธิบายไว้ในหน้าคน

ฉันจะจับปริมาณข้อมูลบน VLAN มากกว่าหนึ่งครั้งได้อย่างไร

คำตอบ:


15

ฉันจำได้ว่าคุณสามารถตรวจสอบแพ็คเก็ตไบต์โดยตรง ดังนั้นการดูโดยตรงไปยังส่วนหัวของอีเธอร์เน็ตทำงาน:

tcpdump -vv -i eth1 '( vlan and ( ether[14:2] & 0xfff == 1000 or ether[14:2] & 0xfff == 501 ) ) and ( ip host 10.1.1.98 or ip host 10.1.1.99 )'

อย่าลืมนะ:2นี่คือฟิลด์ 2 ไบต์ - ฉันติดอยู่กับมันซักพัก


6

มันสามารถทำได้ง่ายกว่าการใช้การทดสอบแพ็คเก็ตลึกเพียงแค่ใช้ grep:

tcpdump -n -i eth1 -e | grep "vlan 1000" 

-e:พิมพ์ส่วนหัวระดับลิงค์ในแต่ละบรรทัดดัมพ์

มันจะพิมพ์บรรทัดเช่น

ethertype 802.1Q (0x8100), length 60: vlan 1000, p 0, ethertype ARP

ซึ่งสามารถจับได้อย่างง่ายดายโดย grep

ถ้าคุณต้องการจับมากกว่าหนึ่ง VLAN ID คุณสามารถใช้คำสั่งเช่น:

tcpdump -n -i eth1 -e | grep "vlan 1000\|vlan 501"

-1

ดูเหมือนว่าตัวกรอง vlan เปลี่ยนเนื้อหาของแพคเก็ต ....

http://www.christian-rossow.de/articles/tcpdump_filter_mixed_tagged_and_untagged_VLAN_traffic.php


2
โปรดอย่าโพสต์คำตอบแบบลิงก์เท่านั้น มีคุณภาพต่ำเนื่องจากลิงก์สามารถเปลี่ยน / ไปค้างได้ ทางที่ดีควรใส่รายละเอียดที่จำเป็นลงในโพสต์ของคุณโดยตรงและระบุลิงก์เพื่อการอ้างอิงเท่านั้น
Castaglia
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.