คำสั่ง tracepath: ตรวจฮอปและ MTU ของเส้นทางแทน traceroute
บนเซิร์ฟเวอร์ Linux สามารถตรวจสอบเส้นทาง (ฮอป) ที่แพ็กเก็ตผ่านไปจนถึงปลายทางและ MTU ของเส้นทางได้ด้วยคำสั่ง tracepath โดยไม่ต้องใช้สิทธิ์ root บนเซิร์ฟเวอร์ AlmaLinux 9 ที่ไม่ได้ติดตั้ง traceroute เราจำกัดจำนวนฮอปไว้ที่ 10 แล้วตรวจเส้นทางไปยัง example.com พบว่าอ่านเวลาตอบกลับและ MTU ของเส้นทาง 1500 ได้จนถึงฮอปที่สี่ จากนั้นอีกหกฮอปไม่มีการตอบกลับ
ผลลัพธ์ด้านล่างรันบนเซิร์ฟเวอร์ AlmaLinux 9.8 (บัญชี root) ส่วนเวอร์ชันของ traceroute และสถานะแพ็กเกจตรวจบนเซิร์ฟเวอร์ Debian 12 (บัญชีทั่วไป) ที่อยู่ IPv6 ของฮอปแรกและเราเตอร์ระหว่างทางเปลี่ยนเป็นที่อยู่ตัวอย่างสำหรับเอกสาร ส่วนเวลาตอบกลับและค่า pmtu คงไว้ตามเดิม
1️⃣ วิธีใช้คำสั่ง tracepath
tracepath รับชื่อหรือที่อยู่ IP ปลายทางหนึ่งรายการ ส่งแพ็กเก็ต UDP แล้วแสดงฮอปที่ตอบกลับทีละบรรทัดตามลำดับ TTL จำนวนฮอปสูงสุดค่าเริ่มต้นคือ 30 และเปลี่ยนได้ด้วย -m
สำหรับ example.com เราใส่ -m 10 เพื่อตรวจแค่ถึงฮอปที่สิบ
tracepath -n -m 10 example.com 1?: [LOCALHOST] 0.006ms pmtu 9001
1: fe80::1%eth0 0.077ms pmtu 1500
1: 2001:db8:a::5b 2.627ms asymm 8
2: 2001:db8:a::52 1.473ms asymm 12
3: 2001:db8:b::1e 19.653ms asymm 9
4: 2001:db8:c:: 3.642ms asymm 11
5: no reply
6: no reply
7: no reply
8: no reply
9: no reply
10: no reply
Too many hops: pmtu 1500
Resume: pmtu 1500 เซิร์ฟเวอร์นี้ส่งแพ็กเก็ตไปยังที่อยู่ IPv6 ของ example.com และมีเวลาตอบกลับขึ้นจนถึงฮอปที่สี่ ตั้งแต่ฮอปที่ห้าเป็น no reply ต่อเนื่อง จึงไม่มีบรรทัด reached ที่บอกว่าถึงปลายทางภายในสิบฮอป และใช้เวลาราว 18 วินาทีกว่าจะจบ
เมื่อรันไปยังปลายทางเดียวกันโดยไม่ใส่ -m คำสั่งไม่จบภายใน 30 วินาที เส้นทางที่มีฮอปไม่ตอบกลับจำนวนมากควรใช้ -m ลดจำนวนฮอปที่ตรวจ
ตรวจเวอร์ชัน tracepath ที่ติดตั้งได้ด้วย -V โดย tracepath ของเซิร์ฟเวอร์นี้คือ iputils 20210202
tracepath -Vtracepath from iputils 202102022️⃣ วิธีอ่านผลลัพธ์ tracepath
ผลลัพธ์แต่ละบรรทัดเรียงเป็นหมายเลขฮอป ที่อยู่ที่ตอบกลับ และเวลาไป-กลับ ตรงจุดที่ MTU ของเส้นทางเปลี่ยนจะมี pmtu และถ้าจำนวนฮอปขาไปกับขากลับไม่เท่ากันจะมี asymm สิ่งที่ตรวจในแต่ละบรรทัดมีดังนี้
| เอาต์พุต | ความหมาย |
|---|---|
| 1?: | ช่องหมายเลขฮอป — มี ? ต่อท้ายหมายเลขที่ประมาณเอาเพราะไม่ได้ TTL จากการตอบกลับ |
| [LOCALHOST] | บรรทัดของเซิร์ฟเวอร์เองก่อนแพ็กเก็ตออกสู่เครือข่าย |
| 0.077ms | เวลาไป-กลับจนถึงฮอปนั้น |
| pmtu 1500 | MTU ของเส้นทาง (ไบต์) ที่เปลี่ยน ณ จุดนั้น — มีเฉพาะเมื่อเปลี่ยน |
| asymm 8 | ผลต่างจำนวนฮอประหว่างขาไปกับขากลับ — คู่มือทางการระบุว่าไม่ใช่ค่าที่เชื่อถือได้ |
| no reply | ฮอปที่ไม่ตอบกลับแพ็กเก็ตที่ส่งด้วย TTL นั้น |
| reached | บรรทัดที่ถึงปลายทาง |
| Too many hops | หยุดหลังตรวจถึงจำนวนฮอปที่กำหนดด้วย -m |
| Resume: pmtu … hops … back … | MTU ของทั้งเส้นทาง จำนวนฮอปถึงปลายทาง และค่าประมาณจำนวนฮอปขากลับ |
ในผลลัพธ์ของ example.com ค่า pmtu ของบรรทัดแรก [LOCALHOST] คือ 9001 แล้วเปลี่ยนเป็น 1500 ที่ฮอปแรก การที่บรรทัด TTL 1 ขึ้นสองครั้งโดยเปลี่ยนแค่ที่อยู่ก็เป็นรูปแบบเดียวกับตัวอย่างในคู่มือทางการ คู่มืออธิบายว่าถ้าแพ็กเก็ตแรกถูกปฏิเสธที่ฮอปแรกเพราะ MTU ของเส้นทาง บรรทัด TTL เดิมจะขึ้นอีกครั้ง
เมื่อถึงปลายทาง ท้ายบรรทัดจะมี reached และบรรทัด Resume สุดท้ายจะแสดงจำนวนฮอปถึงปลายทาง เมื่อส่งไปยัง 127.0.0.1 ได้ reached ในฮอปเดียว และบรรทัด Resume คือ [pmtu 65535 hops 1 back 1]
tracepath -n 127.0.0.1 1: 127.0.0.1 0.047ms reached
Resume: pmtu 65535 hops 1 back 1 เส้นทางที่จบด้วย Too many hops โดยไม่มี reached หมายถึงไม่ได้รับการตอบกลับจากปลายทางภายในจำนวนฮอปที่กำหนดด้วย -m เส้นทาง example.com ก็ไม่มี reached จนถึงสิบฮอป บรรทัด Resume จึงเหลือแค่ pmtu โดยไม่มีจำนวนฮอป
3️⃣ ตัวเลือกของ tracepath
tracepath มีตัวเลือกเพียงแปดตัว คือ -4, -6, -n, -b, -l, -m, -p และ -V และถ้ารันโดยไม่ใส่ปลายทาง รายการนี้จะแสดงเป็นวิธีใช้ หากรันโดยไม่มีตัวเลือก จะแปลงที่อยู่ที่ตอบกลับเป็นชื่อ เมื่อส่งไปยัง localhost ช่องฮอปแสดง localhost
tracepath localhost 1?: [LOCALHOST] 0.003ms pmtu 65536
1: localhost 0.048ms reached
1: localhost 0.030ms reached
Resume: pmtu 65536 hops 1 back 1 [tracepath -n] แสดงเฉพาะที่อยู่ IP โดยไม่แปลงเป็นชื่อ เมื่อใส่ -n กับ localhost เดิม ช่องฮอปเปลี่ยนเป็นที่อยู่ IPv6 ::1 และเส้นทาง example.com ที่รันด้วย -n ก็แสดงเฉพาะที่อยู่ในช่องฮอป
tracepath -n localhost 1?: [LOCALHOST] 0.005ms pmtu 65536
1: ::1 0.039ms reached
1: ::1 0.010ms reached
Resume: pmtu 65536 hops 1 back 1 -b แสดงทั้งชื่อและที่อยู่ เมื่อใส่ -b กับ 127.0.0.1 ที่อยู่จะอยู่ในวงเล็บหลังชื่อเป็น [localhost (127.0.0.1)]
tracepath -b 127.0.0.1 1: localhost (127.0.0.1) 0.050ms reached
Resume: pmtu 65535 hops 1 back 1 -m เป็นตัวเลือกกำหนดจำนวนฮอปสูงสุดที่ตรวจ และรับค่าได้ตั้งแต่ 0 ถึง 255 เมื่อใส่ -m 0 จะขึ้นเฉพาะบรรทัด Too many hops และ Resume ทันทีโดยไม่มีบรรทัดฮอป และเมื่อใส่ 256 ถูกปฏิเสธด้วย [out of range]
tracepath -m 0 127.0.0.1 Too many hops: pmtu 65535
Resume: pmtu 65535 -l คือความยาวของแพ็กเก็ตแรกที่ส่ง ค่าเริ่มต้นคือ 65535 ไบต์สำหรับ IPv4 และ 128000 ไบต์สำหรับ IPv6 เมื่อใส่ -l 1500 กับ 127.0.0.1 ค่า pmtu ในบรรทัด Resume เปลี่ยนจาก 65535 เป็น 1500
tracepath -l 1500 -n 127.0.0.1 1: 127.0.0.1 0.028ms reached
Resume: pmtu 1500 hops 1 back 1 -p เป็นตัวเลือกกำหนดพอร์ต UDP ปลายทางแรกที่จะส่ง ผลของการใส่ -p 33434 กับ 127.0.0.1 เหมือนกับตอนไม่ใส่
| ตัวเลือก | คัดลอก | คำอธิบาย |
|---|---|---|
| -n | แสดงเฉพาะที่อยู่ IP โดยไม่แปลงเป็นชื่อ | |
| -b | แสดงทั้งชื่อและที่อยู่ | |
| -mจำนวนฮอป | กำหนดจำนวนฮอปสูงสุดที่ตรวจ ค่าเริ่มต้น 30 | |
| -lความยาว | กำหนดความยาวแพ็กเก็ตแรก ค่าเริ่มต้น IPv4 65535, IPv6 128000 | |
| -V | แสดงเวอร์ชันแล้วจบ |
| ตัวเลือก | คัดลอก | คำอธิบาย |
|---|---|---|
| -4 | ส่งไปยังที่อยู่ IPv4 เท่านั้น | |
| -6 | ส่งไปยังที่อยู่ IPv6 เท่านั้น | |
| -pพอร์ต | กำหนดพอร์ต UDP ปลายทางแรกที่จะส่ง |
4️⃣ ความต่างระหว่าง tracepath กับ traceroute
บนเซิร์ฟเวอร์ที่ติดตั้ง traceroute ไม่ได้ ให้ตรวจเส้นทางด้วย tracepath แทน traceroute เซิร์ฟเวอร์ AlmaLinux 9.8 ที่เราตรวจไม่มีแพ็กเกจ traceroute ส่วน tracepath อยู่ในแพ็กเกจ iputils จึงรันได้โดยไม่ต้องติดตั้งเพิ่ม
rpm -q traceroutepackage traceroute is not installedเซิร์ฟเวอร์ Debian 12 กลับตรงข้าม คือติดตั้ง traceroute 2.1.2 ไว้แล้ว แต่ยังไม่ได้ติดตั้งแพ็กเกจ iputils-tracepath ที่มี tracepath
traceroute --versionModern traceroute for Linux, version 2.1.2
Copyright (c) 2016 Dmitry Butskoy, License: GPL v2 or any laterapt-cache policy iputils-tracepathiputils-tracepath:
Installed: (none)
Candidate: 3:20221126-1+deb12u1เช่นเดียวกับสองเซิร์ฟเวอร์นี้ คำสั่งที่มีให้ใช้ต่างกันตามดิสทริบิวชัน จึงควรตรวจก่อนว่าเซิร์ฟเวอร์ที่เชื่อมต่ออยู่มีคำสั่งไหน tracepath ไม่ต้องใช้สิทธิ์ root และบัญชีใดก็รันได้หากส่งแพ็กเก็ต UDP ได้ ไฟล์โปรแกรม tracepath บนเซิร์ฟเวอร์ AlmaLinux 9.8 ก็มีสิทธิ์ rwxr-xr-x และไม่มีสิทธิ์พิเศษ (capability) เพิ่ม
| รายการ | tracepath | traceroute |
|---|---|---|
| เซิร์ฟเวอร์ AlmaLinux 9.8 | อยู่ในแพ็กเกจ iputils รันได้ทันที | ไม่ได้ติดตั้ง |
| เซิร์ฟเวอร์ Debian 12 | ไม่ได้ติดตั้งแพ็กเกจ iputils-tracepath | ติดตั้ง traceroute 2.1.2 แล้ว |
| แพ็กเก็ตที่ส่ง | UDP | ค่าเริ่มต้น UDP, -I คือ ICMP, -T คือ TCP |
| ผลลัพธ์ต่อฮอป | หนึ่งบรรทัด | ค่าเริ่มต้นส่งสามครั้ง ได้เวลาสามค่า (เปลี่ยนด้วย -q) |
| จำนวนตัวเลือก | แปดตัว: -4 -6 -n -b -l -m -p -V | เกิน 20 ตัวแค่ในหน้าแรกของ --help |
ถ้าต้องดูเส้นทางด้วย ICMP หรือ TCP หรือต้องส่งหลายครั้งต่อฮอปเพื่อเทียบเวลา ก็ต้องติดตั้งและใช้คำสั่ง traceroute ส่วนเซิร์ฟเวอร์ที่ติดตั้งยากหรือต้องดู MTU ของเส้นทางไปด้วย tracepath เหมาะกว่า
🔲 ตัวจำลองคำสั่ง tracepath
ในตัวจำลองด้านล่าง คุณดูเส้นทาง example.com อีกครั้งโดยเปลี่ยนแค่จำนวนฮอป หรือพิมพ์ -n, -b, -m และ -l กับ localhost และ 127.0.0.1 เองเพื่อดูความต่างได้
🔢 FAQ & เนื้อหาแนะนำ
ไฟร์วอลล์
การติดตั้ง FirewallD บน Linux และการตั้งค่าเดมอน
การติดตั้งและตั้งค่าเดมอนของ FirewallD ที่จัดการกฎไฟร์วอลล์ด้วยโซนและเซอร์วิส
เครือข่าย · การตั้งค่า
คำสั่ง netstat และคำสั่ง ifconfig ของ Linux
คำสั่ง netstat และ ifconfig สำหรับดูพอร์ตที่เปิด สถานะการเชื่อมต่อ และข้อมูลอินเทอร์เฟซเครือข่าย
เครือข่าย · DNS
คำสั่ง nslookup
คำสั่ง nslookup สำหรับถามเซิร์ฟเวอร์ DNS ว่าชื่อโดเมนแปลงเป็นที่อยู่ IP ใด
ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน