สวัสดีครับ อ.ศุภเดชครับ
Blog ตอนก่อน เล่าถึงเรื่องคำสั่ง Ping ที่เป็นเครื่องมือพื้นฐานสำหรับตรวจสอบ Network และ วิธีการอ่านค่าผลลัพธ์จาก Ping เป็น Blog ที่แชร์กันเป็นหมื่น ตกใจมาก ขอบคุณที่ให้ความสนใจกันนะครับ ตอนนี้ก็เลยจะมาเล่าเครื่องมือที่ซับซ้อนขึ้นมาอีกนิด นั่นก็คือ Traceroute และ PathPing ครับ
อย่างที่เล่าไปว่า Ping ใช้ในการตรวจสอบ “Host” ปลายทางว่ายังออนไลน์อยู่ไม๊ และ ค่า Reply ก็จะเป็นตัวบอกคุณภาพของ network ได้ “ระดับนึง”
แต่สำหรับ Network Engineer ที่มีเครือข่ายใหญ่ มากกว่า LAN แค่ 1 วง เช่น มีการทำ VLAN หรือทำ VPN Site to Site เอาไว้ และมีการทำ Routing ข้ามวง Network มาเกี่ยวข้อง Traceroute และ PathPing จะเป็นเครื่องมือสำคัญในการที่จะตรวจสอบเส้นทางในการวิ่งของข้อมูล ว่าวิ่งผ่าน Router ตัวไหนบ้าง รวมถึงตรวจสอบคุณภาพ Network ด้วย
มาดูคำสั่ง Traceroute กันก่อนครับ
- Traceroute บน Windows จะย่อคำสั่งเหลือ tracert นะครับ
- ส่วนบน Mac หรือ Linux จะใช้ traceroute เต็มๆครับ
วิธีการใช้งานคำสั่ง traceroute ก็คือพิมพ์คำสั่ง tracert ตามด้วย host ปลายทางครับ เช่น ถ้าคุณต้องการที่จะรู้ว่า จากเครื่องของคุณวิ่งไปที่ google.com มันผ่าน router ตัวไหนบ้าง ก็ลองพิมพ์ว่า tracert google.com ก็ได้ครับ
มันจะใช้เวลานานหน่อย เพราะว่า การ traceroute แต่ละครั้งตัวเครื่องเราจะส่ง ICMP ไปยังแต่ละ Router ที่วิ่งผ่าน (ภาษา Network เรียกว่า Hop ครับ เหมือนกระโดดไปทีละ Router) และมันก็จะค้นมาว่า Router ที่วิ่งผ่านมี DNS Name ชื่ออะไร
จากในรูปนี้ เครื่องผมจะวิ่งผ่าน Router หลักบ้านผมที่ IP (192.168.60.1) จากนั้นก็กระโดดเข้าสู่ Network ของ AIS Fibre จนสุดท้ายไปจบที่ Hop ที่ 10 คือ IP 182.217.166.142
ปล. หลายคนอาจจะงง ทำไม traceroute ไปที่ google.com แล้วไหงไปโผล่ที่เครื่องชื่อแปลกๆอย่าง kul109s13-in-f14.le100.net
นั่นก็เพราะว่า บนโลกอินเทอร์เน็ต ผู้ให้บริการเว็บใหญ่ๆจะมีการวาง Server ประจำทวีป หรือ Server ประจำ ISP เอาไว้ เพื่อให้บริการแค่ลูกค้าในพื้นที่นั้นๆ เพราะค่า Bandwidth ข้ามประเทศราคาแพงมาก ถ้าทุกคนจะเข้า Google แล้ววิ่งไปที่อเมริกากันหมด ก็จะช้ามากครับ แถมค่า Bandwidth ยังแพงด้วย Server สาขาเหล่านี้ เราจะเรียกว่า CDN ครับ
กลับมาที่ traceroute จะเห็นว่าจากเครื่องผม วิ่งไปที่ google.com ใช้เวลาทั้งหมด 30ms โดยเฉลี่ย และ traceroute จะทดสอบแต่ละ hop เป็นจำนวน 3 ครั้งเพื่อให้เราเห็นค่าเฉลี่ยของสถานะ Network ที่วิ่งผ่านนั่นเองครับ
มาดูตัวอย่างอีกตัวอย่างนึงครับ
อันนี้ผม traceroute ไปที่ mikrotik.com ที่ Server อยู่แถวยุโรป จะเห็นได้ว่า Hop ที่ 1 ยังเป็น Router บ้านผมเหมือนเดิมจากนั้นก็วิ่งเข้า AIS Fibre แต่พอ Hop ที่ 8 จะเห็นว่าเข้าไปที่สิงค์โปร์ จากนั้น Hop ที่ 9 ก็ผ่านไปฝรั่งเศสเลย
สังเกตค่า Response ระหว่างสิงค์โปร์กับฝรั่งเศสครับ จาก 30ms ก็ดีด เป็น 100ms เลย แปลว่า การทะลุไปยุโรปอย่างน้อยก็ใช้ 100ms เข้าไปแล้ว
พอ Hop ที่ 15-17 จะเห็นว่ามันไม่ตอบสนอง ถ้าเป็นเครือข่ายไม่ดี เราก็อาจจะสงสัยได้ว่า Network อาจจะ Bandwidth เต็ม หรือสายสัญญาณไม่ดี แต่ถ้าเป็น Link ข้ามประเทศแบบนี้ ก็แปลว่า ทาง ISP ฝั่งยุโรปเค้า Block การตอบ ICMP ไว้ครับ เพราะการทำ traceroute มันทำให้เห็นเส้นทางภายในเครือข่ายได้ เค้าก็ Block ไว้เพื่อกัน Hacker มาเก็บข้อมูลนั่นเอง
Traceroute ใช้ดูได้หลายอย่าง เช่นเส้นทางหรือคุณภาพของ Network และอันนึงที่เราใช้ traceroute เพื่อวิเคราะห์บ่อยๆก็คือ ปัญหา Routing Loop ครับ
Routing Loop ก็คือ อาการที่คุณเขียน Routing แล้ว มันดันวิ่งเป็นวงกลม หรือวิ่งกลับไปกลับมา ทำให้ไม่สามารถออกจากวง Network นั้นได้ครับ จากในรูปจะเห็นว่า มันวิ่งจาก R3 แล้วก็วนๆไป กลับมาที่เดิมอยู่นั่นแหละ ซึ่งเวลาที่เรา Config Router เยอะๆ บางครั้ง Router มันมีขาสำหรับวิ่งเข้าวิ่งออกเยอะไปจนงง พอเราทำ Route ไป Route มา มันก็ Loop นี่แหละครับ ส่วนวิธีการแก้ ก็ไปดูเอาว่า Loop ตรงไหน แล้วก็ไปปรับเอาเองว่า ถ้ามาถึง Router ตัวนี้จะไปออกที่ไหนแทนนั่นแหละครับ
PathPing ลูกพี่ของ Traceroute อีกทีนึง
สำหรับ PathPing ก็เป็นคำสั่งที่ทำหน้าที่เหมือน Traceroute เลยครับ คือยิง ICMP Packet ไปยัง Router แต่ละตัวที่วิ่งผ่านเพื่อดูว่าวิ่งผ่านใครบ้าง
แต่สิ่งที่ Pathping ต่างจาก Traceroute ก็คือ
Traceroute จะทดสอบแต่ละ Hop แค่ 3 ครั้ง แต่ใน PathPing เราสั่งได้สูงสุดถึง 100 ครั้งเลยครับ
เอ๊ะ หลายคนอาจจะสงสัย แล้วจะทดสอบ 100 ครั้งไปทำไมฟระ???
ถ้าวัตถุประสงค์ของ traceroute คือการดูว่า เราวิ่งไปทางไหน วัตถุประสงค์ของ PathPing ก็คือ ทดสอบว่าเส้นทางที่เราวิ่งไป มีคุณภาพแค่ไหนครับ
เพราะว่า เวลาที่ Network มีปัญหา บางครั้งมันไม่ได้มีปัญหาตลอดเวลา ช่วงเวลาที่เราทำ traceroute มันอาจจะไม่มีปัญหาก็ได้ครับ แต่ถ้าเราทำนานขึ้นและถี่ขึ้น เราจะต้องเห็นปัญหาแน่ๆ โดยที่เมื่อเราทำ PathPing ไปยัง Host ปลายทาง ตัวเครื่องเราก็จะทำการค้นหาเส้นทางรอบนึงก่อนว่าวิ่งผ่านใครบ้าง จากนั้นก็ทดสอบแค่ละ Hop เป็นเวลา 100 ครั้ง เพื่อหาค่าที่ดีที่สุด ค่าที่แย่ที่สุด แล้วก็ค่าเฉลี่ยครับ ว่าได้มาเท่าไหร่ สมมติคุณมีเครือข่ายที่ค่อนข้างใหญ่ แล้วมี User บอกว่าช้า ถ้าเครือข่ายคุณใหญ่มาก เราจะไปดูตรงไหนล่ะเนี่ย แต่การทำ PathPing จะช่วยให้เรา Scope ปัญหาให้เล็กลงได้ครับ ว่า ปัญหามันน่าจะอยู่แถวๆนี้แหละ ถ้าผลการทดสอบมันออกมาว่า ตรง Router นี้มีค่าเฉลี่ยเวลาตอบสนองที่ไม่ค่อยดี อะไรแบบนี้
จากในรูปจะเห็นว่า ทำไม Hop ที่ 9 ถึง loss ถึง 100 Packet แต่ตอนเราทำ traceroute เนี่ย Hop ที่ 9 ก็ปกติดีนี่นา
อาการนี้ก็คือ Firewall ตรวจสอบพบว่า เรา ICMP ใส่เค้าถี่เกินจำนวนที่กำหนด เค้าก็เลยไม่ให้เราทดสอบ เพราะนึกว่าเราจะไป Spam ระบบนั่นเองครับ
สำหรับบน Mac และ Linux เราจะไม่มีคำสั่ง PathPing ให้ใช้กัน แต่เดี๋ยวเราจะใช้คำสั่งอื่นครับ รอติดตามตอนหน้านะครับ อิอิ
หลักๆก็ประมาณนี้แหละครับ สำหรับ traceroute และ PathPing สองคำสั่งพื้นฐานสำหรับคนที่อยากทดสอบเครือข่ายใหญ่ๆครับ หวังว่าจะชอบกัน
ส่วนใครที่อ่านแล้วรู้สึกฮึกเหิม ชักอยากลองมาเป็น Network Engineer ก็ลองมาเทรนกับผมดูได้เลยนะครับ สามารถตรวจสอบตารางเทรนนิ่งได้ที่ หน้าตารางเรียน ได้เลยนะครับ