Skip to main content

Tcpdump: ตัวอย่างตัวเลือกและอื่น ๆ

รวมคำสั่ง Linux จัดการ Network (อาจ 2025)

รวมคำสั่ง Linux จัดการ Network (อาจ 2025)
Anonim

Tcpdump เป็นคำสั่งที่ใช้ในระบบปฏิบัติการ Linux ต่างๆซึ่งรวบรวม TCP / IP packets ที่ส่งผ่านอะแดปเตอร์เครือข่าย เหมือนกับเครื่องมือ sniffer ของแพคเก็ต tcpdump ไม่เพียงวิเคราะห์การรับส่งข้อมูลเครือข่าย แต่ยังบันทึกลงในไฟล์

ซึ่งแตกต่างจากคำสั่งบางอย่างที่มาจากระบบปฏิบัติการโดยค่าเริ่มต้นคุณอาจพบว่าคุณไม่สามารถใช้ tcpdump ได้เนื่องจากไม่มีการติดตั้ง เมื่อต้องการติดตั้ง tcpdump ให้รัน ติดตั้ง apt-get tcpdump หรือ ติดตั้ง tcpdump yumขึ้นอยู่กับระบบปฏิบัติการของคุณ

วิธีการทำงานของ Tcpdump

Tcpdump พิมพ์ส่วนหัวของชุดข้อมูลบนอินเทอร์เฟซเครือข่ายที่ตรงกับ Boolean การแสดงออก . นอกจากนี้ยังสามารถใช้งานได้ด้วย-w ซึ่งทำให้มันเพื่อบันทึกข้อมูลแพคเก็ตไปยังแฟ้มสำหรับการวิเคราะห์ในภายหลังและ / หรือด้วย-r ซึ่งทำให้อ่านจากแฟ้มแพ็คเก็ตที่บันทึกแทนที่จะอ่านแพ็กเก็ตจากอินเทอร์เฟซเครือข่าย ในทุกกรณีเฉพาะแพ็คเก็ตที่ตรงกับ การแสดงออก จะดำเนินการโดย tcpdump .

tcpdump จะถ้าไม่ใช้กับ-c ธง, ดำเนินการจับแพ็คเก็ตจนกว่าจะถูกขัดจังหวะโดยสัญญาณ SIGINT (สร้างขึ้นเช่นโดยการพิมพ์ตัวขัดจังหวะของคุณโดยปกติ CTRL + C) หรือสัญญาณ SIGTERM (โดยปกติจะสร้างด้วยฆ่า(1) คำสั่ง); ถ้าใช้กับ-c ธงจะจับแพ็คเก็ตจนกว่าจะถูกขัดจังหวะโดย SIGINT หรือ SIGTERM สัญญาณหรือจำนวนที่ระบุของแพ็คเก็ตได้รับการประมวลผล

สวิตช์ที่กล่าวมาข้างต้นจะอธิบายในรายละเอียดในบทความนี้

เมื่อ tcpdump เสร็จสิ้นการจับแพ็คเก็ตจะรายงานจำนวน:

  • แพ็คเก็ต "ที่ได้รับโดยตัวกรอง"
    • ความหมายของสิ่งนี้ขึ้นอยู่กับระบบปฏิบัติการที่คุณใช้อยู่ tcpdump , และอาจเป็นไปในทางที่มีการกำหนดค่าระบบปฏิบัติการ ถ้ามีการระบุตัวกรองในบรรทัดคำสั่งในบางระบบปฏิบัติการจะนับแพ็คเก็ตโดยไม่คำนึงถึงว่ามีการจับคู่ด้วยนิพจน์ตัวกรองหรืออื่น ๆ นับเฉพาะแพ็คเก็ตที่ถูกจับคู่โดยนิพจน์ตัวกรองและประมวลผลโดย tcpdump
  • แพ็คเก็ต "ลดลงตามเคอร์เนล"
    • นี่คือจำนวนแพ็คเก็ตที่ถูกลดลงเนื่องจากไม่มีพื้นที่บัฟเฟอร์โดยกลไกการจับ packet ในระบบปฏิบัติการที่ tcpdump กำลังทำงานอยู่ถ้าระบบปฏิบัติการรายงานข้อมูลดังกล่าวไปยังแอพพลิเคชัน ถ้าไม่ใช่จะรายงานเป็น 0

บนแพลตฟอร์มที่สนับสนุนสัญญาณ SIGINFO เช่น BSDs ส่วนใหญ่ (Berkeley Software Distributions) จะรายงานจำนวนดังกล่าวเมื่อได้รับสัญญาณ SIGINFO (สร้างขึ้นโดยการพิมพ์อักขระ "สถานะ" ของคุณโดยทั่วไป Ctrl + T) และจะยังคงจับแพ็คเก็ต

ความเข้ากันได้ของ Tcpdump

การอ่านชุดข้อมูลจากอินเทอร์เฟซเครือข่ายที่มีคำสั่ง tcpdump อาจต้องการให้คุณมีสิทธิ์พิเศษ ( การอ่าน ไฟล์แพ็คเก็ตที่บันทึกไว้ไม่จำเป็นต้องมีสิทธิ์ดังกล่าว):

  • SunOS 3.x หรือ 4.x พร้อม NIT หรือ BPF: คุณต้องมีสิทธิ์อ่าน / dev / จู้จี้ หรือ dev / BPF * .
  • Solaris กับ DLPI: คุณต้องมีสิทธิ์อ่าน / เขียนไปยังอุปกรณ์ปลอมแบบเครือข่ายเช่น / dev / le . อย่างน้อยบางรุ่นของ Solaris แต่นี้ไม่เพียงพอที่จะอนุญาตให้ tcpdump เพื่อจับภาพในโหมดสำส่อน; ใน Solaris เวอร์ชันเหล่านี้คุณต้องเป็น root หรือ tcpdump ต้องติดตั้ง setuid กับ root เพื่อที่จะจับภาพในโหมด promiscuous โปรดทราบว่าในอินเทอร์เฟซจำนวนมาก (อาจทั้งหมด) ถ้าคุณไม่ได้อยู่ในโหมดพรอมซึ่งคุณจะไม่เห็นแพ็คเก็ตที่ส่งออกใด ๆ ดังนั้นการจับภาพที่ไม่ได้ทำในโหมด promiscuous อาจไม่เป็นประโยชน์มากนัก
  • HP-UX พร้อมด้วย DLPI: คุณต้องเป็น root หรือ tcpdump ต้องติดตั้ง setuid ไว้ที่ root
  • IRIX พร้อมสอดแนม: คุณต้องเป็น root หรือ tcpdump ต้องติดตั้ง setuid ไว้ที่ root
  • ลินุกซ์: คุณต้องเป็น root หรือ tcpdump ต้องติดตั้ง setuid ไว้ที่ root
  • Ultrix และ UNIX / Tru64 UNIX แบบดิจิตอล: ผู้ใช้รายใดสามารถจับภาพการรับส่งข้อมูลด้วยเครือข่ายได้ tcpdump . อย่างไรก็ตามผู้ใช้ (ไม่แม้แต่ผู้ใช้ super) สามารถจับภาพในโหมด promiscuous บนอินเทอร์เฟซเว้นแต่ผู้ใช้ super ได้เปิดใช้งานการทำงานแบบ promiscuous ในอินเทอร์เฟซดังกล่าวโดยใช้ pfconfig (8) และไม่มีผู้ใช้ (ไม่แม้แต่ผู้ใช้ super-user) สามารถจับภาพการรับส่งข้อมูลแบบ unicast ที่ได้รับโดยหรือส่งโดยเครื่องได้บนอินเทอร์เฟซเว้นแต่ผู้ใช้ super-user ได้เปิดใช้งานการทำสำเนาทุกรูปแบบบนอินเทอร์เฟซดังกล่าวโดยใช้ pfconfig ดังนั้น มีประโยชน์ การจับ packet บนอินเทอร์เฟซอาจต้องการให้มีการเปิดใช้งานโหมดสำส่อนหรือการทำสำเนาทุกโหมดหรือโหมดการทำงานทั้งสองแบบ
  • BSD: คุณต้องมีสิทธิ์อ่าน / dev / BPF * .

ไวยากรณ์คำสั่ง Tcpdump

เหมือนกับคำสั่งคอมพิวเตอร์ทั้งหมดคำสั่ง tcpdump ทำงานได้อย่างถูกต้องเฉพาะเมื่อไวยากรณ์ถูกต้อง:

tcpdump -adeflnNOpqRStuvxX -c นับ

-C FILE_SIZE -F ไฟล์

-ผม อินเตอร์เฟซ -m โมดูล -r ไฟล์

-s snaplen -T ชนิด -ยู ผู้ใช้งาน -w ไฟล์

-E อัลโก: ความลับ การแสดงออก

ตัวเลือกคำสั่ง Tcpdump

เหล่านี้คือตัวเลือกทั้งหมดที่คุณสามารถใช้กับคำสั่ง tcpdump:

  • -a: พยายามแปลงที่อยู่เครือข่ายและการเผยแพร่ไปยังชื่อ
  • -c: ออกหลังจากได้รับ นับ แพ็คเก็ต
  • -C: ก่อนที่จะเขียนแพ็กเก็ตดิบลงในไฟล์ savefile ให้ตรวจสอบว่าไฟล์มีขนาดใหญ่กว่าหรือไม่ FILE_SIZE และถ้าใช่ให้ปิดไฟล์บันทึกปัจจุบันและเปิดไฟล์ใหม่Savefiles หลังจาก savefile แรกจะมีชื่อที่ระบุด้วย-w ธงที่มีหมายเลขหลังจากนั้นเริ่มต้นที่ 2 และต่อเนื่องขึ้นไปข้างบน หน่วยของ FILE_SIZE เป็นล้านไบต์ (1,000,000 ไบต์ไม่ใช่ 1,048,576 ไบต์)
  • -d: ถ่ายโอนรหัสจับคู่ที่รวบรวมไว้ในรูปแบบที่มนุษย์สามารถอ่านได้เพื่อเอาต์พุตมาตรฐานและหยุดทำงาน
  • -DD: ถ่ายโอนรหัสการจับคู่แพคเก็ตเป็น aC ส่วนของโปรแกรม
  • -ddd: ถ่ายโอนรหัสการจับคู่รหัสเป็นเลขฐานสิบ (ก่อนหน้าด้วยจำนวน)
  • -e: พิมพ์ส่วนหัวระดับลิงก์บนบรรทัดการถ่ายโอนข้อมูลแต่ละรายการ
  • -E: ใช้ อัลโก: ความลับ สำหรับการถอดรหัส IPsec ESP packets อัลกอริธึมอาจจะdes-CBC, 3DES-CBC, ปักเป้า-CBC, RC3-CBC, CAST128-CBC, หรือไม่มี. ค่าดีฟอลต์คือdes-CBC. ความสามารถในการถอดรหัสลับแพ็กเก็ตจะปรากฏเฉพาะเมื่อ tcpdump ถูกรวบรวมด้วยการเข้ารหัสที่เปิดใช้งาน ลับ ข้อความ ASCII สำหรับคีย์ลับ ESP เราไม่สามารถใช้ค่าไบนารีตามอำเภอใจได้ในขณะนี้ ตัวเลือกจะถือว่า RFC2406 ESP ไม่ใช่ RFC1827 ESP ตัวเลือกนี้ใช้สำหรับวัตถุประสงค์ในการดีบักเท่านั้นและไม่สามารถใช้ตัวเลือกนี้กับคีย์ 'ลับ' อย่างแท้จริงได้ เมื่อนำเสนอคีย์ลับของ IPsec ลงในบรรทัดคำสั่งที่คุณเห็นให้คนอื่นเห็นผ่าน PS (1) และโอกาสอื่น ๆ
  • -f: พิมพ์ที่อยู่อินเทอร์เน็ต 'ต่างชาติ' เป็นตัวเลขแทนที่จะเป็นสัญลักษณ์ (ตัวเลือกนี้มีจุดมุ่งหมายเพื่อให้ได้รับความเสียหายร้ายแรงจากสมองในเซิร์ฟเวอร์ yp ของ Sun - โดยปกติแล้วจะทำให้แฮงค์ตลอดเวลาในการแปลหมายเลขอินเทอร์เน็ต nonlocal)
  • -F: ใช้ ไฟล์ เป็นข้อมูลสำหรับนิพจน์ตัวกรอง นิพจน์เพิ่มเติมที่ระบุในบรรทัดคำสั่งจะถูกละเว้น
  • -ผม: ฟังต่อ อินเตอร์เฟซ . ถ้าไม่ระบุ, tcpdump ค้นหารายการอินเทอร์เฟซระบบสำหรับอินเทอร์เฟซที่กำหนดค่าไว้ต่ำที่สุดที่มีหมายเลขไว้ (ยกเว้นลูปแบ็ค) ความสัมพันธ์จะถูกหักโดยการเลือกการแข่งขันที่เร็วที่สุด บนระบบ Linux ที่มีเมล็ด 2.2 ขึ้นไป a อินเตอร์เฟซ อาร์กิวเมนต์ของ "any" สามารถใช้ในการจับภาพแพ็คเก็ตจากอินเทอร์เฟซทั้งหมดโปรดทราบว่าการจับภาพบนอุปกรณ์ "any" จะไม่สามารถกระทำได้ในโหมด promiscuous
  • -l: ทำบรรทัด stdout ที่ buffered มีประโยชน์หากคุณต้องการดูข้อมูลขณะจับภาพ ตัวอย่างเช่น "tcpdump -l | tee dat" "หรือ" tcpdump -l> dat & tail -f dat ""
  • -m: โหลดข้อกำหนดของโมดูล SMI MIB จากไฟล์ โมดูล . ตัวเลือกนี้สามารถใช้งานได้หลายครั้งในการโหลดโมดูล MIB หลายชุดเข้า tcpdump .
  • -n: อย่าเปลี่ยนที่อยู่โฮสต์เป็นชื่อ ซึ่งสามารถใช้เพื่อหลีกเลี่ยงการค้นหา DNS
  • -nn: อย่าแปลงโปรโตคอลและหมายเลขพอร์ต ฯลฯ เป็นชื่ออย่างใดอย่างหนึ่ง
  • -N: อย่าพิมพ์ชื่อโดเมนของคุณสมบัติชื่อโดเมน ตัวอย่างเช่นถ้าคุณให้ธงนี้แล้ว tcpdump จะพิมพ์ "nic" แทน "nic.ddn.mil" "
  • -O: อย่าใช้โปรแกรมเพิ่มประสิทธิภาพรหัสจับคู่แพ็กเก็ต นี้จะเป็นประโยชน์เฉพาะในกรณีที่คุณสงสัยว่าข้อผิดพลาดในการเพิ่มประสิทธิภาพ
  • -p: อย่า ใส่อินเตอร์เฟซลงในโหมดสำส่อน โปรดทราบว่าอินเทอร์เฟซอาจอยู่ในโหมดสำส่อนด้วยเหตุผลอื่น เพราะฉะนั้น '-p' ไม่สามารถใช้เป็นคำย่อของ 'อีเทอร์โฮสต์ (local-hw-addr} หรือ ether broadcast'
  • -q: เอาท์พุทเร็ว (เงียบ) พิมพ์ข้อมูลโพรโทคอลน้อยลงเพื่อให้เส้นผลผลิตสั้นลง
  • -R: สมมติว่าแพ็คเก็ต ESP / AH จะขึ้นอยู่กับข้อกำหนดเก่า: RFC1825 ถึง RFC1829 ถ้าระบุ, tcpdump จะไม่พิมพ์ฟิลด์ป้องกัน replay เนื่องจากไม่มีฟิลด์โปรโตคอลในข้อกำหนด ESP / AH, tcpdump ไม่สามารถอนุมานได้ว่าเป็นรุ่นของโปรโตคอล ESP / AH
  • -r: อ่านแพ็กเก็ตจาก ไฟล์ (ซึ่งถูกสร้างขึ้นด้วยตัวเลือก -w) อินพุตมาตรฐานใช้ถ้า ไฟล์ คือ "-''.
  • -S: พิมพ์แน่นอนมากกว่าญาติหมายเลขลำดับ TCP
  • -s: Snarf snaplen ไบต์ของข้อมูลจากแต่ละแพ็กเก็ตมากกว่าค่าเริ่มต้นของ 68; กับ NIT ของ SunOS ค่าต่ำสุดคือ 96 บิตหกสิบแปดไบต์เพียงพอสำหรับ IP, ICMP, TCP และ UDP แต่อาจตัดทอนข้อมูลโปรโตคอลจากเซิร์ฟเวอร์ชื่อและแพคเก็ต NFS (ดูด้านล่าง) แพ็คเก็ตที่ถูกตัดทอนเนื่องจากมี snapshot จำกัด จะระบุไว้ในเอาต์พุตด้วย "| โปรโต '' ที่ไหน โปรโต คือชื่อของระดับโพรโทคอลที่เกิด truncation โปรดทราบว่าการนำภาพรวมขนาดใหญ่ขึ้นจะช่วยเพิ่มระยะเวลาในการประมวลผลแพ็คเก็ตและลดจำนวนบัฟเฟอร์ของแพ็คเก็ตได้อย่างมีประสิทธิภาพ ซึ่งอาจทำให้แพ็คเก็ตสูญหายได้ คุณควร จำกัด snaplen ไปยังหมายเลขที่เล็กที่สุดซึ่งจะจับข้อมูลโปรโตคอลที่คุณสนใจได้ snaplen ถึง 0 หมายถึงใช้ความยาวที่ต้องการเพื่อจับแพ็คเก็ตทั้งหมด
  • -T: บังคับให้แพ็กเก็ตที่เลือกโดย " การแสดงออก "เพื่อตีความตามที่ระบุ ชนิด . ประเภทที่รู้จักกันในปัจจุบันคือcnfp (โปรโตคอล Cisco NetFlow),RPC (การเรียกกระบวนการระยะไกล),RTP (โปรโตคอลแอพพลิเคชัน Real-Time Applications),RTCP (Real-Time Applications protocol ควบคุม),SNMP (Simple Network Management Protocol),ภาษีมูลค่าเพิ่ม (เครื่องมือเสียงภาพ) และwb (คณะกรรมการสีขาวกระจาย)
  • t-: อย่า พิมพ์เครื่องหมายเวลาในบรรทัดการถ่ายโอนข้อมูลแต่ละรายการ
  • -tt: พิมพ์ประทับตราที่ไม่ได้จัดรูปแบบไว้ในบรรทัดการถ่ายโอนข้อมูลแต่ละรายการ
  • -ยู: ลดสิทธิพิเศษของ root และเปลี่ยน ID ผู้ใช้เป็น ผู้ใช้งาน และกลุ่ม ID ไปยังกลุ่มหลักของ ผู้ใช้งาน .
  • บันทึก: Red Hat Linux จะลดสิทธิพิเศษให้กับผู้ใช้ "pcap" โดยอัตโนมัติหากไม่มีการระบุอะไรเลย
  • -ttt: พิมพ์เดลต้า (หน่วยเป็นมิลลิวินาที) ระหว่างบรรทัดปัจจุบันและบรรทัดก่อนหน้าในแต่ละบรรทัดการถ่ายโอนข้อมูล
  • -tttt: พิมพ์ประทับเวลาในรูปแบบเริ่มต้นที่ดำเนินการตามวันที่ในแต่ละบรรทัดการถ่ายโอนข้อมูล
  • -ยู: พิมพ์ NFS ที่ไม่ได้เข้ารหัส
  • -v: (มากขึ้น) ผลผลิต verbose ตัวอย่างเช่นเวลาที่จะอยู่ระบุความยาวรวมและตัวเลือกในแพคเก็ต IP จะถูกพิมพ์ออก นอกจากนี้ยังช่วยให้สามารถตรวจสอบความสมบูรณ์ของแพคเก็ตเพิ่มเติมได้เช่นการตรวจสอบการตรวจสอบ IP และ ICMP ส่วนหัว
  • -vv: เอาท์พุทที่มากขึ้นเรื่อย ๆ ตัวอย่างเช่นช่องเพิ่มเติมจะถูกพิมพ์ออกมาจากแพ็กเก็ตตอบ NFS และแพคเก็ต SMB จะถูกถอดรหัสอย่างเต็มที่
  • -vvv: เอาท์พุทที่มากขึ้นเรื่อย ๆ ตัวอย่างเช่น telnetSBSE ตัวเลือกจะพิมพ์เต็ม กับ -X ตัวเลือก telnet จะพิมพ์เป็นรูป hex เช่นกัน
  • -w: เขียนแพ็คเก็ตดิบไป ไฟล์ แทนที่จะแยกวิเคราะห์และพิมพ์ออก หลังจากนั้นสามารถพิมพ์ด้วยตัวเลือก -r เอาต์พุตมาตรฐานใช้ถ้า ไฟล์ คือ "-''.
  • -x: พิมพ์แต่ละแพ็กเก็ต (ลบส่วนหัวของระดับการเชื่อมโยง) ในรูป hex มีขนาดเล็กกว่าของแพ็คเก็ตทั้งหมดหรือ snaplen ไบต์จะพิมพ์ โปรดทราบว่านี่คือแพ็คเก็ต link-layer ทั้งหมดดังนั้นสำหรับเลเยอร์ลิงก์ที่ pad (เช่น Ethernet) ไบต์ padding จะถูกพิมพ์ด้วยเมื่อแพ็กเก็ตชั้นสูงกว่า padding ที่ต้องการ
  • -X: เมื่อพิมพ์ hex ให้พิมพ์ ascii ด้วย ดังนั้นถ้า-x นอกจากนี้ยังตั้งค่าแพ็คเก็ตจะพิมพ์เป็น hex / ascii นี้มีประโยชน์มากสำหรับการวิเคราะห์โปรโตคอลใหม่ แม้ว่า-x ยังไม่ได้กำหนดบางส่วนของแพ็คเก็ตบางส่วนอาจถูกพิมพ์เป็น hex / ascii
  • การแสดงออก : เลือกแพ็คเก็ตที่จะทิ้ง ถ้าไม่ การแสดงออก จะได้รับแพ็คเก็ตทั้งหมดในสุทธิจะถูกทิ้ง มิฉะนั้นจะมีเฉพาะแพ็คเก็ตเท่านั้น การแสดงออก เป็น 'ความจริง' จะถูกทิ้ง การแสดงออก ประกอบด้วยหนึ่งหรือมากกว่า วิทยาการ primitives มักประกอบด้วย a รหัส (ชื่อหรือหมายเลข) ก่อนหน้าโดยผู้คัดเลือกคนหนึ่งหรือหลายคน มีสามประเภทที่แตกต่างกันของรอบคัดเลือก:
  • ชนิด : ผู้ทรงคุณวุฒิบอกว่าชื่อ id หรือชื่ออะไร ประเภทที่เป็นไปได้คือเจ้าภาพ, สุทธิ, และท่าเรือ- ตัวอย่างเช่น 'host foo', 'net 128.3', 'port 20' หากไม่มีการคัดกรองประเภทเจ้าภาพ สันนิษฐาน
  • dir : ผู้ทรงคุณวุฒิระบุทิศทางการถ่ายโอนไปยังและ / หรือจาก รหัส . ทิศทางที่เป็นไปได้คือsrc, DST, src หรือ dst และsrc และ DST (เช่น 'src foo', 'dst net 128.3', 'src หรือ dst port ftp-data') หากไม่มี qualifier dir,src หรือ dst สันนิษฐาน สำหรับเลเยอร์ลิงก์ 'null' (เช่นโปรโตคอลแบบจุดต่อจุดเช่นใบ) ขาเข้า และ ออกไปข้างนอก qualifiers สามารถใช้เพื่อระบุทิศทางที่ต้องการได้
  • โปรโต : Qualifiers จำกัด การจับคู่กับโปรโตคอลเฉพาะ protos เป็นไปได้คือ อีเทอร์, FDDI, TR, IP, IP6, ARP, RARP, DECnet, TCP, และUDPตัวอย่างเช่น 'ether src foo', 'arp net 128.3', 'tcp port 21' หากไม่มีโพรโทคอลจะถือว่าโปรโตคอลทั้งหมดสอดคล้องกับชนิด ตัวอย่างเช่น 'src foo' หมายถึง (ip หรือ arp หรือ rarp) src foo '(ยกเว้นหลังไม่ได้เป็นรูปแบบทางกฎหมาย)' net bar 'หมายถึง' (ip หรือ arp หรือ rarp) net bar 'และ' port 53 ' หมายถึง '(tcp หรือ udp) พอร์ต 53'
    • 'fddi' เป็นนามแฝงของ 'อีเทอร์'; "ระดับการเชื่อมโยงข้อมูลที่ใช้ในอินเทอร์เฟซเครือข่ายที่ระบุ" ส่วนหัวของ FDDI ประกอบด้วยแหล่งที่มาของอีเทอร์เน็ตและปลายทางและมักประกอบด้วยประเภทแพ็คเก็ตแบบอีเทอร์เน็ตเพื่อให้คุณสามารถกรองข้อมูลในฟิลด์ FDDI เหล่านี้ได้ เช่นเดียวกับช่อง Ethernet ที่คล้ายคลึงกันส่วนหัว FDDI ยังมีฟิลด์อื่น ๆ แต่คุณไม่สามารถตั้งชื่อให้ชัดเจนในนิพจน์ตัวกรอง
    • ในทำนองเดียวกัน 'tr' เป็นนามแฝงของ 'อีเธอร์'; คำสั่งของวรรคก่อน ๆ เกี่ยวกับส่วนหัวของ FDDI จะมีผลกับส่วนหัวของ Token Ring

นอกเหนือจากข้างต้นแล้วมีคำหลัก "ดั้งเดิม" บางอย่างที่ไม่เป็นไปตามรูปแบบ:ประตู, ออกอากาศ, น้อยกว่า, มากขึ้น, และ คณิตศาสตร์ การแสดงออก ทั้งหมดนี้ถูกอธิบายไว้ด้านล่าง

นิพจน์ตัวกรองที่ซับซ้อนมากขึ้นจะถูกสร้างขึ้นโดยใช้คำและ, หรือ, และไม่ เพื่อรวม primitives ตัวอย่างเช่น "โฮสต์ foo ไม่ใช่พอร์ต ftp ไม่ใช่พอร์ต ftp-data" ในการบันทึกการพิมพ์รายการละคัดสรรที่เหมือนกันสามารถข้ามได้ (เช่น "tcp dst port ftp หรือ ftp-data or domain" ตรงกับ "tcp dst port ftp หรือ tcp dst port ftp-data หรือ tcp dst port domain")

เหล่านี้เป็น primitives อนุญาตด้วยคำสั่ง tcpdump:

  • โฮสต์ dst เจ้าภาพ
    • จริงถ้าฟิลด์ปลายทาง IPv4 / v6 ของแพ็คเก็ตคือ เจ้าภาพ ซึ่งอาจเป็นได้ทั้งที่อยู่หรือชื่อ
  • โฮสต์ src เจ้าภาพ
    • จริงถ้าฟิลด์แหล่งที่มาของ IPv4 / v6 ของแพ็คเก็ตคือ เจ้าภาพ .
  • เจ้าภาพ เจ้าภาพ
    • True ถ้าแหล่งที่มาหรือปลายทางของ IPv4 / v6 เป็น เจ้าภาพ . การแสดงออกของโฮสต์ใด ๆ ข้างต้นสามารถ prepended กับคำหลัก,IP, ARP, RARP, หรือIP6, เช่นเดียวกับ โฮสต์ IP เจ้าภาพ (ซึ่งเทียบเท่ากับ อีเธอร์โปรโต IP และโฮสต์ เป็นเจ้าภาพ)
    • ถ้า เจ้าภาพ เป็นชื่อที่มีที่อยู่ IP หลายที่อยู่แต่ละแห่งจะได้รับการตรวจสอบสำหรับการจับคู่
  • ether dst ehost
    • จริงถ้าที่อยู่ปลายทาง Ethernet คือ ehost . ehost อาจเป็นได้ทั้งชื่อจาก / etc / ethers หรือหมายเลข (ดู อีเทอร์ (3N) สำหรับรูปแบบตัวเลข)
  • อีเทอร์ src ehost
    • จริงถ้าที่อยู่อีเธอร์เน็ตคือ ehost .
  • อีเธอร์โฮสต์ ehost
    • เป็นจริงถ้าทั้งแหล่งอีเธอร์เน็ตหรือที่อยู่ปลายทาง ehost .
  • ประตู เจ้าภาพ
    • จริงถ้าใช้แพ็กเก็ต เจ้าภาพ เป็นเกตเวย์ (กล่าวคือเป็นที่มาของอีเทอร์เน็ตหรือปลายทาง เจ้าภาพ แต่ไม่ได้เป็นแหล่ง IP หรือปลายทาง IP เจ้าภาพ ).
    • เจ้าภาพ ต้องเป็นชื่อและต้องพบได้จากกลไกการแก้ปัญหาชื่อโฮสต์กับเครื่อง IP ของโฮสต์ (ไฟล์ชื่อโฮสต์, DNS, NIS ฯลฯ ) และกลไกการแก้ปัญหาชื่อ - ที่ - อีเธอร์เน็ตของเครื่อง (/ etc / ethers ฯลฯ )
    • นิพจน์ที่เทียบเท่าคือ อีเธอร์โฮสต์ ehost และตอนนี้เจ้าบ้าน เจ้าภาพ ซึ่งสามารถใช้กับชื่อหรือหมายเลขได้ โฮสต์ / ehost .) ไวยากรณ์นี้ไม่ทำงานในการกำหนดค่าที่เปิดใช้งาน IPv6 ในขณะนี้
  • สุทธิ dst สุทธิ
    • จริงถ้าที่อยู่ IPv4 / v6 ปลายทางของแพ็กเก็ตมีหมายเลขเครือข่าย สุทธิ . สุทธิ อาจเปนชื่อจาก / etc / เครือขายหรือหมายเลขเครือขาย (ดู เครือข่าย (4) สำหรับรายละเอียด)
  • สุทธิ src สุทธิ
    • จริงถ้าแหล่งที่อยู่ IPv4 / v6 ของแพ็คเก็ตมีหมายเลขเครือข่าย สุทธิ .
  • สุทธิ สุทธิ
    • จริงถ้าแหล่งที่มา / ที่อยู่ IPv4 / v6 ของแพ็คเก็ตมีหมายเลขเครือข่าย สุทธิ .
  • สุทธิ สุทธิ หน้ากาก netmask
    • จริงถ้าที่อยู่ IP ตรงกัน สุทธิ กับเฉพาะ netmask . อาจมีคุณสมบัติพร้อมด้วยsrc หรือDST. โปรดทราบว่ารูปแบบนี้ไม่ถูกต้องสำหรับ IPv6 สุทธิ .
  • สุทธิ สุทธิ / len
    • จริงถ้าที่อยู่ IPv4 / v6 ตรงกับ สุทธิ ด้วยเน็ตmask len บิตกว้าง อาจมีคุณสมบัติพร้อมด้วยsrc หรือDST.
  • พอร์ต dst ท่าเรือ
    • จริงถ้าแพคเก็ตเป็น ip / tcp, ip / udp, ip6 / tcp หรือ ip6 / udp และมีค่าปลายทางของพอร์ต ท่าเรือ . ท่าเรือ สามารถเป็นตัวเลขหรือชื่อที่ใช้ใน / etc / services (ดู TCP (4P) และ UDP (4P)) มีการตรวจสอบหมายเลขพอร์ตและโปรโตคอล หากใช้หมายเลขหรือชื่อคลุมเครือจะมีการตรวจสอบเฉพาะหมายเลขพอร์ต (เช่นdst พอร์ต 513 จะพิมพ์ข้อมูลจราจรทั้ง tcp / login และ udp / traffic ที่และโดเมนพอร์ต จะพิมพ์ทั้ง tcp / domain และ udp / domain traffic)
  • src port ท่าเรือ
    • จริงถ้าแพคเก็ตมีค่าพอร์ตต้นทาง ท่าเรือ .
  • ท่าเรือ ท่าเรือ
    • จริงถ้าทั้งพอร์ตต้นทางหรือปลายทางของแพ็กเก็ตอยู่ ท่าเรือ . นิพจน์พอร์ตใด ๆ ข้างต้นสามารถ prepended กับคำหลัก,TCP หรือUDP, เช่นเดียวกับ พอร์ต src tcp ท่าเรือ ซึ่งตรงกับเฉพาะแพ็คเก็ต tcp ที่มีพอร์ตต้นทาง ท่าเรือ .
  • น้อยกว่า ความยาว
    • จริงถ้าแพ็กเก็ตมีความยาวน้อยกว่าหรือเท่ากับ ความยาว . นี้เทียบเท่ากับ len <= ความยาว .
  • มากขึ้น ความยาว
    • จริงถ้าแพ็กเก็ตมีความยาวมากกว่าหรือเท่ากับ ความยาว . นี้เทียบเท่ากับ len> = ความยาว .
  • ip โปรโต โปรโตคอล
    • จริงถ้า packet เป็น packet IP (ดู IP (4P)) ของประเภทโปรโตคอล โปรโตคอล . โปรโตคอล สามารถเป็นตัวเลขหรือหนึ่งในชื่อได้ ICMP , icmp6 , IGMP , IGRP , PIM , อา , ESP , VRRP , UDP , หรือ TCP . โปรดทราบว่าข้อมูลระบุ TCP , UDP , และ ICMP นอกจากนี้ยังมีคำหลักและต้องหนีผ่านเครื่องหมายทับขวา () ซึ่งเป็น ใน C-shell โปรดทราบว่านี้ดั้งเดิมไม่ไล่ล่าโซ่โปรโตคอลส่วนหัว
  • ip6 proto โปรโตคอล
    • จริงถ้าแพคเก็ตเป็นแพคเก็ต IPv6 ของชนิดโพรโทคอล โปรโตคอล . โปรดทราบว่านี้ดั้งเดิมไม่ไล่ล่าโซ่โปรโตคอลส่วนหัว
  • protochain ของ ip6 โปรโตคอล
    • จริงถ้าแพ็คเก็ตเป็นแพ็คเก็ต IPv6 และมีส่วนหัวโปรโตคอลกับชนิด โปรโตคอล ในส่วนหัวของโปรโตคอล ตัวอย่างเช่น, ipv6 protochain 6 ตรงกับแพคเก็ต IPv6 ใด ๆ ที่มีส่วนหัวของโปรโตคอล TCP ในส่วนหัวของโพรโทคอล แพคเก็ตอาจประกอบด้วยส่วนหัวของการตรวจสอบส่วนหัวของเส้นทางหรือส่วนหัวของตัวเลือก hop-by-hop ระหว่างส่วนหัวของ IPv6 กับส่วนหัวของ TCP รหัส BPF ที่ปล่อยออกมาจากแบบดั้งเดิมนี้มีความซับซ้อนและไม่สามารถปรับให้เหมาะกับรหัสเพิ่มประสิทธิภาพ BPF ได้ tcpdump ดังนั้นนี้อาจค่อนข้างช้า
  • protochain IP โปรโตคอล
    • เทียบเท่าprotochain ของ ip6 โปรโตคอล แต่สำหรับ IPv4
  • อีเธอร์ออกอากาศ
    • จริงถ้าแพคเก็ตเป็นแพ็คเก็ตออกอากาศอีเทอร์เน็ต อีเทอร์ คำหลักเป็นตัวเลือก
  • ip ออกอากาศ
    • จริงถ้าแพคเก็ตเป็นแพ็คเก็ตออกอากาศ IP จะตรวจสอบทั้งแบบ zero-zero และอนุพันธ์ในการออกอากาศทั้งหมดและค้นหาซับเน็ตมาสก์ภายในเครื่อง
  • ether multicast
    • จริงถ้าแพ็คเก็ตเป็นแพ็คเก็ต multicast Ethernet อีเทอร์ คำหลักเป็นตัวเลือก นี่คือชวเลขสำหรับ 'อีเธอร์ 0 & 1! = 0'.
  • ip multicast
    • True ถ้า packet เป็น IP multicast packet
  • multicast IP6
    • จริงถ้าแพ็คเก็ตเป็น IPv6 multicast packet
  • อีเธอร์โปรโต โปรโตคอล
    • จริงถ้าแพกเก็ตเป็นของประเภทอีเทอร์ โปรโตคอล . โปรโตคอล สามารถเป็นตัวเลขหรือหนึ่งในชื่อได้ IP , IP6 , ARP , RARP , atalk , AARP , DECnet , SCA , ลาดพร้าว , mopdl , moprc , ISO , STP , IPX , หรือ NetBEUI . โปรดทราบว่าตัวระบุเหล่านี้เป็นคำหลักและต้อง Escape ด้วยเครื่องหมายแบ็คสแลช ()
    • ในกรณีของ FDDI (เช่น 'fddi protocol arp') และ Token Ring (เช่น'tr โปรโตคอล ARP') สำหรับส่วนมากของโปรโตคอลเหล่านั้นการระบุโปรโตคอลมาจากส่วนควบคุมการเชื่อมโยงลอจิก 802 (Logical Link Control) ซึ่งปกติจะเป็นชั้นที่ด้านบนของส่วนหัวของ FDDI หรือ Token Ring
    • เมื่อกรองข้อมูลส่วนใหญ่ของโปรโตคอลใน FDDI หรือ Token Ring, tcpdump ตรวจสอบเฉพาะฟิลด์ ID โปรโตคอลของส่วนหัว LLC ในรูปแบบ SNAP ที่เรียกว่ามีตัวระบุหน่วยองค์กร (OUI) ของ 0x000000 สำหรับ Ethernet แบบห่อหุ้ม; ไม่ตรวจสอบว่าแพคเก็ตอยู่ในรูปแบบ SNAP ด้วย OUI ที่ 0x000000 หรือไม่
    • ข้อยกเว้นคือ ISO , ซึ่งจะตรวจสอบช่อง DSAP (ปลายทางการเข้าถึงบริการปลายทาง) และ SSAP (แหล่งข้อมูล Access Point) ของส่วนหัว LLC, STP และ NetBEUI ซึ่งจะตรวจสอบ DSAP ของส่วนหัว LLC และ atalk ซึ่งจะตรวจสอบแพ็คเก็ตรูปแบบ SNAP ด้วย OUI 0x080007 และ Appletalk etype
    • ในกรณีของ Ethernet, tcpdump ตรวจสอบฟิลด์ชนิด Ethernet สำหรับส่วนใหญ่ของโปรโตคอลเหล่านั้น ข้อยกเว้นคือ ISO , สนามเพลาะ , และ NetBEUI ซึ่งจะตรวจสอบเฟรม 802.3 และตรวจสอบส่วนหัว LLC เช่นเดียวกับ FDDI และ Token Ring; atalk ซึ่งจะตรวจสอบทั้ง Appletalk etype ในเฟรม Ethernet และสำหรับแพคเก็ตรูปแบบ SNAP เช่นเดียวกับ FDDI และ Token Ring; AARP ซึ่งจะตรวจสอบ Appletalk ARP etype ในกรอบ Ethernet หรือเฟรม SNAP 802.2 ด้วย OUI ที่ 0x000000; และ IPX ซึ่งจะตรวจสอบ IPX etype ในเฟรม Ethernet, IPX DSAP ในส่วนหัว LLC, 802.3 ที่ไม่มีการ encapsulation ส่วนหัว LLC ของ IPX และ IPX etype ในเฟรม SNAP
  • decnet src เจ้าภาพ
    • จริงถ้าที่อยู่ต้นทาง DECNET อยู่ เจ้าภาพ ซึ่งอาจเป็นที่อยู่ของฟอร์ม "10.123" หรือชื่อโฮสต์ DECNET การสนับสนุนชื่อโฮสต์ DECNET มีให้ใช้งานได้เฉพาะบนระบบ Ultrix ที่กำหนดค่าให้เรียกใช้ DECNET
  • decnet dst เจ้าภาพ
    • จริงถ้าที่อยู่ปลายทาง DECNET คือ เจ้าภาพ .
  • decnet โฮสต์ เจ้าภาพ
    • จริงถ้าทั้งที่มา DECNET หรือที่อยู่ปลายทางคือ เจ้าภาพ .
  • IP, IP6, ARP, RARP, atalk, AARP, DECnet, ISO, STP, IPX, NetBEUI
    • คำย่อสำหรับ อีเธอร์โปรโต พี ที่ไหน พี เป็นหนึ่งในโปรโตคอลข้างต้น
  • ลาดพร้าว, moprc, mopdl
    • คำย่อสำหรับ อีเธอร์โปรโต พี ที่ไหน พี เป็นหนึ่งในโปรโตคอลข้างต้น โปรดทราบว่า tcpdump ปัจจุบันยังไม่ทราบวิธีแยกวิเคราะห์โปรโตคอลเหล่านี้
  • VLAN vlan_id
    • จริงถ้าแพคเก็ตเป็นแพคเก็ต VLAN IEEE 802.1Q ถ้า vlan_id ระบุเฉพาะจริงถ้าแพคเก็ตมีการระบุ vlan_id . โปรดทราบว่าครั้งแรกVLAN คำหลักที่พบ การแสดงออก เปลี่ยนการชดเชยการถอดรหัสสำหรับส่วนที่เหลือของ การแสดงออก บนสมมติฐานที่ว่าแพคเก็ตเป็นแพคเก็ต VLAN
  • TCP, UDP, ICMP
    • คำย่อสำหรับ ip โปรโต พี หรือโปรโตคอล ip6 พี ที่ไหน พี เป็นหนึ่งในโปรโตคอลข้างต้น
  • iso proto โปรโตคอล
    • จริงถ้าแพคเก็ตเป็นแพคเก็ต OSI ของชนิดโปรโตคอล โปรโตคอล . โปรโตคอล สามารถเป็นตัวเลขหรือหนึ่งในชื่อได้ CLNP , ESIS , หรือ ไอซิส .
  • CLNP, ESIS, ไอซิส
    • คำย่อสำหรับ iso proto พี ที่ไหน พี เป็นหนึ่งในโปรโตคอลข้างต้น โปรดทราบว่า tcpdump งานที่ไม่สมบูรณ์ของการแยกวิเคราะห์โปรโตคอลเหล่านี้
  • expr relop expr
    • จริงถ้าความสัมพันธ์ถือที่ relop เป็นหนึ่งใน>, <,> =, <=, =,! = และ expr เป็นการแสดงเลขคณิตประกอบด้วยค่าคงที่จำนวนเต็ม (แสดงในรูปแบบมาตรฐานของ C) ตัวดำเนินการไบนารีปกติ +, -, *, /, &, |, ตัวดำเนินการแบบยาวและผู้ที่ต้องการเข้าถึงข้อมูลแพคเก็ตพิเศษ ในการเข้าถึงข้อมูลภายในแพ็คเก็ตใช้ไวยากรณ์ต่อไปนี้: proto expr: size .

โปรโต เป็นหนึ่งในอีเทอร์, FDDI, TR, PPP, ลื่น, ลิงค์, IP, ARP, RARP, TCP, UDP, ICMP, หรือ IP6, และระบุชั้นโปรโตคอลสำหรับการดำเนินงานดัชนี (อีเทอร์, FDDI, TR, PPP, ลื่น, และลิงค์ ทั้งหมดดูที่เลเยอร์ลิงก์) โปรดทราบว่า tcp, udp และโปรโตคอลชั้นบนอื่น ๆ ใช้เฉพาะกับ IPv4 ไม่ใช่ IPv6 (จะได้รับการแก้ไขในอนาคต) ไบต์ออฟเซตเทียบกับเลเยอร์โปรโตคอลที่ระบุจะกำหนดโดย expr . ขนาด เป็นตัวเลือกและระบุจำนวนไบต์ในฟิลด์ที่สนใจ อาจเป็นหนึ่งสองหรือสี่และค่าเริ่มต้นเป็นหนึ่ง ตัวดำเนินการความยาวที่ระบุด้วยคำหลักlen, ให้ความยาวของแพ็คเก็ต

ตัวอย่างเช่น, 'อีเธอร์ 0 & 1! = 0'จับการรับส่งข้อมูลแบบหลายผู้รับทั้งหมด การแสดงออก 'ip 0 & 0xf! = 5'จับแพ็คเก็ต IP ทั้งหมดพร้อมตัวเลือก การแสดงออก 'ip 6: 2 และ 0x1fff = 0'จับเฉพาะ datagrams unfragmented และศูนย์ frag ของ datagrams แยกส่วน การตรวจสอบนี้ใช้กับTCP และUDP การดำเนินงานดัชนี ตัวอย่างเช่น TCP 0 เสมอหมายถึงไบต์แรกของ TCP ส่วนหัว และไม่เคยหมายถึงไบต์แรกของส่วนที่แทรกแซง

ค่าออฟเซ็ตและฟิลด์บางค่าอาจแสดงเป็นชื่อแทนที่เป็นค่าตัวเลข โปรเซสเซอร์ส่วนหัวของฟิลด์โปรโตคอลต่อไปนี้มีให้: icmptype (ฟิลด์ประเภท ICMP),icmpcode (ฟิลด์รหัส ICMP) และtcpflags (ฟิลด์ธง TCP)

ค่าฟิลด์ประเภท ICMP ต่อไปนี้มีให้ใช้งาน:ICMP-ECHOREPLY, ICMP-unreach, ICMP-sourcequench, ICMP เปลี่ยนเส้นทาง, ICMP-ก้อง, ICMP-routeradvert, ICMP-routersolicit, ICMP-timxceed, ICMP-paramprob, ICMP-tstamp, ICMP-tstampreply, ICMP-ireq, ICMP-ireqreply, ICMP-maskreq, ICMP-maskreply.

มีค่าฟิลด์ธง TCP ต่อไปนี้:TCP ครีบ, TCP SYN-, TCP-แรก, TCP ผลักดัน, TCP ผลักดัน, TCP-แอ๊, TCP-URG.

primitives อาจรวมกันโดยใช้สิ่งต่อไปนี้:

  • กลุ่ม parenthesized ของ primitives และตัวดำเนินการ (วงเล็บเป็นพิเศษเพื่อเชลล์และต้อง escaped)
  • Negation ('!หรือ `ไม่')
  • การรวม ('&&' หรือ 'และ')
  • การสลับ ('||' หรือ 'หรือ')

การปฏิเสธมีลำดับความสำคัญสูงสุด สลับและ concatenation มีความสำคัญเท่ากันและเชื่อมโยงจากซ้ายไปขวา โปรดทราบว่าชัดเจนและ โทเค็นไม่ใช่การตีข่าว

หากระบุตัวระบุโดยไม่มีคำหลักจะถือว่าคำหลักล่าสุดเป็นคำหลัก ตัวอย่างเช่น, ไม่เป็นเจ้าบ้านและเอซ ย่อมาจาก ไม่ใช่เจ้าบ้านและเจ้าบ้านเอซ. อย่างไรก็ตามนี้ไม่ควรสับสนกับ ไม่ใช่ (host vs หรือ ace).

อาร์กิวเมนต์ของนิพจน์สามารถส่งผ่านไปได้ tcpdump เป็นอาร์กิวเมนต์เดียวหรือเป็นอาร์กิวเมนต์หลายข้อใดจะสะดวกกว่า โดยทั่วไปถ้าการแสดงออกมี metacharacters ของเชลล์การส่งผ่านอาร์เรย์เดียวจะง่ายกว่า อาร์กิวเมนต์หลายตัวจะถูกเว้นวรรคก่อนที่จะถูกแยกวิเคราะห์

ตัวอย่าง Tcpdump

โฮสต์ tcpdump เจ้าอาวาส

คำสั่ง tcpdump ข้างต้นใช้เพื่อพิมพ์แพ็คเก็ตทั้งหมดที่มาถึงหรือออกจาก เวลาพระอาทิตย์ตก

tcpdump โฮสต์ helios และ (ร้อนหรือเอซ )