คุณกำลังพยายามจับแพ็กเก็ตข้อมูลเพื่อวิเคราะห์ทราฟฟิกบนเครือข่ายของคุณหรือไม่? บางทีคุณอาจเป็นผู้ดูแลระบบเซิร์ฟเวอร์ที่พบปัญหาและต้องการตรวจสอบข้อมูลที่ส่งบนเครือข่าย ไม่ว่าสถานการณ์จะเป็นอย่างไร ยูทิลิตี 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
โปรดทราบว่าไม่ใช่ทุกแพ็กเก็ตที่ถูกดักจับด้วยวิธีนี้ แต่นี่คือรูปแบบทั่วไปที่ตามมาด้วยแพ็กเก็ตส่วนใหญ่
ผลลัพธ์ประกอบด้วยข้อมูลต่อไปนี้
- เวลาประทับของแพ็กเก็ตที่ได้รับ
- ชื่ออินเทอร์เฟซ
- การไหลของแพ็คเก็ต
- ชื่อของโปรโตคอลเครือข่าย
- ที่อยู่ IP และรายละเอียดพอร์ต
- แฟล็ก TCP
- หมายเลขลำดับของข้อมูลในแพ็กเก็ต
- แอคข้อมูล
- ขนาดหน้าต่าง
- ความยาวของแพ็คเก็ต
ช่องแรก ( 17: 00: 25.369138 ) แสดงการประทับเวลาเมื่อระบบของคุณส่งหรือรับแพ็กเก็ต เวลาที่บันทึกไว้จะถูกดึงมาจากเวลาท้องถิ่นของระบบของคุณ
การเข้าเว็บลึกผิดกฎหมายไหม
ฟิลด์ที่สองและสามแสดงถึงอินเทอร์เฟซที่ใช้และโฟลว์ของแพ็กเก็ต ในตัวอย่างด้านบน wlp0s20f3 เป็นชื่อของอินเทอร์เฟซไร้สายและ ออก คือการไหลของแพ็กเก็ต
ฟิลด์ที่สี่ประกอบด้วยข้อมูลที่เกี่ยวข้องกับชื่อโปรโตคอลเครือข่าย โดยทั่วไป คุณจะพบสองโปรโตคอล - IP และ IP6 โดยที่ IP หมายถึง IPV4 และ IP6 สำหรับ IPV6
ฟิลด์ถัดไปประกอบด้วยที่อยู่ IP หรือชื่อของระบบต้นทางและปลายทาง ที่อยู่ IP ตามด้วยหมายเลขพอร์ต
ฟิลด์ที่หกในเอาต์พุตประกอบด้วยแฟล็ก TCP มีแฟล็กต่างๆ ที่ใช้ในเอาต์พุต tcpdump
ชื่อธง | ค่า | คำอธิบาย |
---|---|---|
ภาพ | NS | การเชื่อมต่อเริ่มต้น |
จบ | NS | การเชื่อมต่อเสร็จสิ้น |
ดัน | NS | ข้อมูลถูกผลัก |
RST | NS | การเชื่อมต่อถูกรีเซ็ต |
อนิจจา | . | การรับทราบ |
เอาต์พุตยังสามารถมีแฟล็ก 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 เป็นบรรณาธิการรุ่นเยาว์สำหรับ Linux ที่ MUO เขาเขียนคู่มือข้อมูลบน Linux โดยมุ่งหวังที่จะมอบประสบการณ์อันแสนสุขให้กับผู้มาใหม่ทุกคน ไม่แน่ใจเกี่ยวกับภาพยนตร์ แต่ถ้าคุณต้องการพูดคุยเกี่ยวกับเทคโนโลยี เขาเป็นคนของคุณ ในเวลาว่าง คุณจะพบว่าเขาอ่านหนังสือ ฟังเพลงแนวต่างๆ หรือเล่นกีตาร์
เพิ่มเติมจาก Deepesh Sharmaสมัครรับจดหมายข่าวของเรา
เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!
คลิกที่นี่เพื่อสมัครสมาชิก