วิธีใช้ tcpdump และ 6 ตัวอย่าง

วิธีใช้ tcpdump และ 6 ตัวอย่าง

คุณกำลังพยายามจับแพ็กเก็ตข้อมูลเพื่อวิเคราะห์ทราฟฟิกบนเครือข่ายของคุณหรือไม่? บางทีคุณอาจเป็นผู้ดูแลระบบเซิร์ฟเวอร์ที่พบปัญหาและต้องการตรวจสอบข้อมูลที่ส่งบนเครือข่าย ไม่ว่าสถานการณ์จะเป็นอย่างไร ยูทิลิตี tcpdump Linux คือสิ่งที่คุณต้องการ





ในบทความนี้ เราจะพูดถึงคำสั่ง tcpdump โดยละเอียด พร้อมกับคำแนะนำเกี่ยวกับวิธีการติดตั้งและใช้งาน tcpdump บนระบบ Linux ของคุณ





คำสั่ง tcpdump คืออะไร?

Tcpdump เป็นเครื่องมือตรวจสอบเครือข่ายที่มีประสิทธิภาพที่ช่วยให้ผู้ใช้สามารถกรองแพ็กเก็ตและทราฟฟิกบนเครือข่ายได้อย่างมีประสิทธิภาพ คุณสามารถรับข้อมูลโดยละเอียดเกี่ยวกับ TCP/IP และแพ็กเก็ตที่ส่งบนเครือข่ายของคุณ Tcpdump เป็นยูทิลิตีบรรทัดคำสั่ง ซึ่งหมายความว่าคุณสามารถเรียกใช้บนเซิร์ฟเวอร์ Linux โดยไม่ต้องมีจอแสดงผล





ผู้ดูแลระบบยังสามารถรวมยูทิลิตี้ tcpdump กับ cron เพื่อทำงานต่างๆ โดยอัตโนมัติ เช่น การบันทึก เนื่องจากคุณสมบัติมากมายของมันทำให้ใช้งานได้หลากหลาย tcpdump จึงทำงานเป็นเครื่องมือในการแก้ไขปัญหารวมถึงเครื่องมือรักษาความปลอดภัย

วิธีการติดตั้ง tcpdump บน Linux

แม้ว่าโดยส่วนใหญ่แล้วคุณจะพบ tcpdump ติดตั้งไว้ล่วงหน้าบนระบบของคุณ แต่ลีนุกซ์รุ่นบางรุ่นไม่ได้มาพร้อมกับแพ็คเกจ ดังนั้น คุณอาจต้องติดตั้งยูทิลิตี้นี้บนระบบของคุณด้วยตนเอง



คุณสามารถตรวจสอบว่ามีการติดตั้ง tcpdump ในระบบของคุณหรือไม่โดยใช้ปุ่ม ที่ สั่งการ.

which tcpdump

หากผลลัพธ์แสดงเส้นทางไดเรกทอรี ( /usr/bin/tcpdump ) จากนั้นระบบของคุณจะมีแพ็คเกจติดตั้งอยู่ แต่ถ้าไม่ใช่ คุณสามารถทำได้ง่ายๆ โดยใช้ตัวจัดการแพ็คเกจเริ่มต้นในระบบของคุณ





ในการติดตั้ง tcpdump บนการแจกแจงแบบเดเบียนเช่น Ubuntu:

sudo apt-get install tcpdump

การติดตั้ง tcpdump บน CentOS ก็ง่ายเช่นกัน





sudo yum install tcpdump

ในการแจกแจงแบบ Arch-based:

sudo pacman -S tcpdump

วิธีติดตั้งบน Fedora:

sudo dnf install tcpdump

โปรดทราบว่าแพ็คเกจ tcpdump ต้องการ libcap เป็นการพึ่งพา ดังนั้นตรวจสอบให้แน่ใจว่าคุณติดตั้งบนระบบของคุณด้วย

ตัวอย่าง Tcpdump เพื่อดักจับแพ็กเก็ตเครือข่ายบน Linux

เมื่อคุณติดตั้ง tcpdump บนเครื่อง Linux เรียบร้อยแล้ว ก็ถึงเวลาตรวจสอบแพ็กเก็ตบางตัว เนื่องจาก tcpdump ต้องการสิทธิ์ superuser เพื่อดำเนินการส่วนใหญ่ คุณจะต้องเพิ่ม sudo ตามคำสั่งของคุณ

1. แสดงรายการอินเทอร์เฟซเครือข่ายทั้งหมด

ในการตรวจสอบว่ามีอินเทอร์เฟซเครือข่ายใดบ้างที่สามารถจับภาพได้ ให้ใช้ปุ่ม -NS ตั้งค่าสถานะด้วยคำสั่ง tcpdump

tcpdump -D

ผ่าน --list-อินเทอร์เฟซ ตั้งค่าสถานะเป็นอาร์กิวเมนต์จะส่งคืนผลลัพธ์เดียวกัน

tcpdump --list-interfaces

ผลลัพธ์จะเป็นรายการอินเทอร์เฟซเครือข่ายทั้งหมดที่มีอยู่ในระบบของคุณ

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

tcpdump --interface any

ระบบจะแสดงผลดังต่อไปนี้

วิธีหาเพลงในวิดีโอ youtube

ที่เกี่ยวข้อง: รูปแบบการเชื่อมต่อระหว่างระบบเปิดคืออะไร?

2. รูปแบบเอาต์พุต tcpdump

เริ่มต้นจากบรรทัดที่สาม แต่ละบรรทัดของเอาต์พุตจะระบุแพ็กเก็ตเฉพาะที่ดักจับโดย tcpdump นี่คือผลลัพธ์ของแพ็กเก็ตเดียว

17:00:25.369138 wlp0s20f3 Out IP localsystem.40310 > kul01s10-in-f46.1e100.net.https: Flags [P.], seq 196:568, ack 1, win 309, options [nop,nop,TS val 117964079 ecr 816509256], length 33

โปรดทราบว่าไม่ใช่ทุกแพ็กเก็ตที่ถูกดักจับด้วยวิธีนี้ แต่นี่คือรูปแบบทั่วไปที่ตามมาด้วยแพ็กเก็ตส่วนใหญ่

ผลลัพธ์ประกอบด้วยข้อมูลต่อไปนี้

  1. เวลาประทับของแพ็กเก็ตที่ได้รับ
  2. ชื่ออินเทอร์เฟซ
  3. การไหลของแพ็คเก็ต
  4. ชื่อของโปรโตคอลเครือข่าย
  5. ที่อยู่ IP และรายละเอียดพอร์ต
  6. แฟล็ก TCP
  7. หมายเลขลำดับของข้อมูลในแพ็กเก็ต
  8. แอคข้อมูล
  9. ขนาดหน้าต่าง
  10. ความยาวของแพ็คเก็ต

ช่องแรก ( 17: 00: 25.369138 ) แสดงการประทับเวลาเมื่อระบบของคุณส่งหรือรับแพ็กเก็ต เวลาที่บันทึกไว้จะถูกดึงมาจากเวลาท้องถิ่นของระบบของคุณ

การเข้าเว็บลึกผิดกฎหมายไหม

ฟิลด์ที่สองและสามแสดงถึงอินเทอร์เฟซที่ใช้และโฟลว์ของแพ็กเก็ต ในตัวอย่างด้านบน wlp0s20f3 เป็นชื่อของอินเทอร์เฟซไร้สายและ ออก คือการไหลของแพ็กเก็ต

ฟิลด์ที่สี่ประกอบด้วยข้อมูลที่เกี่ยวข้องกับชื่อโปรโตคอลเครือข่าย โดยทั่วไป คุณจะพบสองโปรโตคอล - IP และ IP6 โดยที่ IP หมายถึง IPV4 และ IP6 สำหรับ IPV6

ฟิลด์ถัดไปประกอบด้วยที่อยู่ IP หรือชื่อของระบบต้นทางและปลายทาง ที่อยู่ IP ตามด้วยหมายเลขพอร์ต

ฟิลด์ที่หกในเอาต์พุตประกอบด้วยแฟล็ก TCP มีแฟล็กต่างๆ ที่ใช้ในเอาต์พุต tcpdump

ชื่อธงค่าคำอธิบาย
ภาพNSการเชื่อมต่อเริ่มต้น
จบNSการเชื่อมต่อเสร็จสิ้น
ดันNSข้อมูลถูกผลัก
RSTNSการเชื่อมต่อถูกรีเซ็ต
อนิจจา.การรับทราบ

เอาต์พุตยังสามารถมีแฟล็ก TCP หลายอันรวมกันได้ ตัวอย่างเช่น, ธง [f.] ย่อมาจากแพ็กเก็ต FIN-ACK

การย้ายเพิ่มเติมในข้อมูลโค้ดเอาต์พุต ฟิลด์ถัดไปมีหมายเลขลำดับ ( seq 196:568 ) ของข้อมูลในแพ็กเก็ต แพ็กเก็ตแรกมีค่าจำนวนเต็มบวกเสมอ และแพ็กเก็ตที่ตามมาจะใช้หมายเลขลำดับสัมพัทธ์เพื่อปรับปรุงการไหลของข้อมูล

ฟิลด์ถัดไปถือหมายเลขตอบรับ ( แอ๊ค1 ) หรือหมายเลข Ack แบบง่าย แพ็กเก็ตที่บันทึกในเครื่องของผู้ส่งมี 1 เป็นหมายเลขตอบรับ ที่ฝั่งผู้รับ หมายเลข Ack คือค่าของแพ็กเก็ตถัดไป

ฟิลด์ที่เก้าในเอาต์พุตรองรับขนาดหน้าต่าง ( ชนะ 309 ) ซึ่งเป็นจำนวนไบต์ที่มีอยู่ในบัฟเฟอร์การรับ มีฟิลด์อื่นๆ อีกหลายฟิลด์ที่ทำตามขนาดหน้าต่าง รวมถึงขนาดเซ็กเมนต์สูงสุด (MSS)

ช่องสุดท้าย ( ความยาว 33 ) มีความยาวของแพ็กเก็ตโดยรวมที่จับโดย tcpdump

3. จำกัดจำนวนแพ็คเก็ตที่จับได้

ขณะรันคำสั่ง tcpdump เป็นครั้งแรก คุณอาจสังเกตเห็นว่าระบบยังคงจับแพ็กเก็ตเครือข่ายต่อไปจนกว่าคุณจะส่งสัญญาณขัดจังหวะ คุณสามารถแทนที่การทำงานเริ่มต้นนี้โดยระบุจำนวนแพ็กเก็ตที่คุณต้องการบันทึกล่วงหน้าโดยใช้ -ค ธง.

tcpdump --interface any -c 10

คำสั่งดังกล่าวจะจับ 10 แพ็กเก็ตจากอินเทอร์เฟซเครือข่ายที่ใช้งานอยู่

4. กรองแพ็กเก็ตตามฟิลด์

เมื่อคุณกำลังแก้ไขปัญหา การได้รับข้อความจำนวนมากบนเทอร์มินัลของคุณไม่ได้ทำให้ง่ายขึ้น นั่นคือสิ่งที่คุณสมบัติการกรองใน tcpdump เข้ามาเล่น คุณสามารถกรองแพ็กเก็ตตามฟิลด์ต่างๆ รวมถึงโฮสต์ โปรโตคอล หมายเลขพอร์ต และอื่นๆ

หากต้องการดักจับเฉพาะแพ็กเก็ต TCP ให้พิมพ์:

tcpdump --interface any -c 5 tcp

ในทำนองเดียวกัน หากคุณต้องการกรองเอาต์พุตโดยใช้หมายเลขพอร์ต:

tcpdump --interface any -c 5 port 50

คำสั่งดังกล่าวจะดึงเฉพาะแพ็กเก็ตที่ส่งผ่านพอร์ตที่ระบุเท่านั้น

ในการรับรายละเอียดแพ็กเก็ตสำหรับโฮสต์เฉพาะ:

tcpdump --interface any -c 5 host 112.123.13.145

หากคุณต้องการกรองแพ็กเก็ตที่ส่งหรือรับโดยโฮสต์เฉพาะ ให้ใช้ src หรือ ฯลฯ โต้แย้งกับคำสั่ง

tcpdump --interface any -c 5 src 112.123.13.145
tcpdump --interface any -c 5 dst 112.123.13.145

คุณยังสามารถใช้ตัวดำเนินการเชิงตรรกะ และ และ หรือ เพื่อรวมนิพจน์ตั้งแต่สองนิพจน์ขึ้นไปเข้าด้วยกัน ตัวอย่างเช่น การรับแพ็กเก็ตที่เป็นของ IP . ต้นทาง 112.123.13.145 และใช้พอร์ต 80 :

tcpdump --interface any -c 10 src 112.123.13.145 and port 80

นิพจน์ที่ซับซ้อนสามารถจัดกลุ่มเข้าด้วยกันได้โดยใช้ วงเล็บ ดังนี้

tcpdump --interface any -c 10 '(src 112.123.13.145 or src 234.231.23.234) and (port 45 or port 80)'

5. ดูเนื้อหาของ Packet

คุณสามารถใช้ -ถึง และ -NS ตั้งค่าสถานะด้วยคำสั่ง tcpdump เพื่อวิเคราะห์เนื้อหาของแพ็กเก็ตเครือข่าย NS -ถึง ธงย่อมาจาก ASCII รูปแบบและ -NS หมายถึง เลขฐานสิบหก รูปแบบ.

ในการดูเนื้อหาของแพ็กเก็ตเครือข่ายถัดไปที่ระบบดักจับ:

tcpdump --interface any -c 1 -A
tcpdump --interface any -c 1 -x

ที่เกี่ยวข้อง: Packet Loss คืออะไรและจะแก้ไขสาเหตุได้อย่างไร

6. บันทึกข้อมูลการจับภาพไปยังไฟล์

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

tcpdump --interface any -c 10 -w data.pcap

NS .pcap นามสกุลไฟล์ย่อมาจาก การจับแพ็คเก็ต ข้อมูล. คุณยังสามารถออกคำสั่งดังกล่าวในโหมด verbose โดยใช้ปุ่ม -v ธง.

tcpdump --interface any -c 10 -w data.pcap -v

การอ่าน .pcap ไฟล์โดยใช้ tcpdump ใช้ -NS ธงตามด้วยเส้นทางของไฟล์ NS -NS หมายถึง อ่าน .

จะทำอย่างไรเมื่อเบื่อออนไลน์
tcpdump -r data.pcap

คุณยังสามารถกรองแพ็กเก็ตเครือข่ายจากข้อมูลแพ็กเก็ตที่บันทึกไว้ในไฟล์ได้อีกด้วย

tcpdump -r data.pcap port 80

การตรวจสอบการรับส่งข้อมูลเครือข่ายบน Linux

หากคุณได้รับมอบหมายงานในการดูแลเซิร์ฟเวอร์ Linux คำสั่ง tcpdump เป็นเครื่องมือที่ยอดเยี่ยมในการรวมไว้ในคลังแสงของคุณ คุณสามารถแก้ไขปัญหาที่เกี่ยวข้องกับเครือข่ายได้อย่างง่ายดายโดยจับแพ็กเก็ตที่ส่งบนเครือข่ายของคุณในแบบเรียลไทม์

แต่ก่อนหน้านั้น อุปกรณ์ของคุณต้องเชื่อมต่อกับอินเทอร์เน็ต สำหรับผู้เริ่มต้น Linux แม้แต่การเชื่อมต่อกับ Wi-Fi ผ่านบรรทัดคำสั่งก็อาจเป็นเรื่องยากเล็กน้อย แต่ถ้าคุณใช้เครื่องมือที่เหมาะสม

แบ่งปัน แบ่งปัน ทวีต อีเมล วิธีเชื่อมต่อ Wi-Fi ผ่าน Linux Terminal ด้วยNmcli

ต้องการเชื่อมต่อกับเครือข่าย Wi-Fi ผ่านบรรทัดคำสั่ง Linux หรือไม่? นี่คือสิ่งที่คุณต้องรู้เกี่ยวกับคำสั่ง nmcli

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง
  • ลินุกซ์
  • ความปลอดภัย
  • นิติเครือข่าย
เกี่ยวกับผู้เขียน Deepesh Sharma(79 บทความที่ตีพิมพ์)

Deepesh เป็นบรรณาธิการรุ่นเยาว์สำหรับ Linux ที่ MUO เขาเขียนคู่มือข้อมูลบน Linux โดยมุ่งหวังที่จะมอบประสบการณ์อันแสนสุขให้กับผู้มาใหม่ทุกคน ไม่แน่ใจเกี่ยวกับภาพยนตร์ แต่ถ้าคุณต้องการพูดคุยเกี่ยวกับเทคโนโลยี เขาเป็นคนของคุณ ในเวลาว่าง คุณจะพบว่าเขาอ่านหนังสือ ฟังเพลงแนวต่างๆ หรือเล่นกีตาร์

เพิ่มเติมจาก Deepesh Sharma

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก