เหตุใดจึงเกิดเหตุการณ์นี้
ping ใช้ ICMP ส่วน SSH และ HTTPS ใช้พอร์ต TCP ทราฟฟิกเหล่านี้แยกจากกัน ไฟร์วอลล์จึงอาจทิ้งประเภทหนึ่งแต่ปล่อยอีกประเภทผ่าน หลายเครือข่ายและกลุ่มความปลอดภัยบนคลาวด์บล็อก ICMP echo โดยค่าเริ่มต้น ดังนั้นการไม่ได้รับคำตอบไม่ได้หมายความว่าเซิร์ฟเวอร์หยุดทำงาน และการได้รับคำตอบก็ไม่ได้พิสูจน์ว่าบริการต่าง ๆ ทำงานได้
ทดสอบบริการแทนการทดสอบ ping
ตรวจพอร์ตและโปรโตคอลที่คุณจำเป็นต้องใช้จริง หากการทดสอบเหล่านี้สำเร็จ แสดงว่าสามารถเข้าถึงบริการเหล่านั้นบนเซิร์ฟเวอร์ได้ และ ping ที่ล้มเหลวเพียงบ่งชี้ว่ามีตัวกรองอยู่ที่ใดที่หนึ่งบนเส้นทาง
nc -vz -w 5 server.example 22
nc -vz -w 5 server.example 443
curl -sSI https://server.example/ติดตามเส้นทางด้วย TCP
traceroute แบบปกติอาจแสดงเพียงเครื่องหมายดอกจันเมื่อ ICMP หรือ UDP ถูกกรอง การใช้ TCP ไปยังพอร์ตที่เปิดอยู่มักช่วยให้ติดตามได้ไกลขึ้น วิธีนี้ต้องใช้ root และอาจต้องติดตั้ง traceroute ก่อน เพราะระบบที่ติดตั้งแบบขั้นต่ำไม่ได้รวมเครื่องมือนี้ไว้
sudo traceroute -T -p 443 server.exampleค้นหาตัวกรองบนเซิร์ฟเวอร์ของคุณ
หากคุณเป็นผู้ดูแลเซิร์ฟเวอร์ ให้ตรวจไฟร์วอลล์และการตั้งค่าเคอร์เนลที่ทำให้ละเลยคำขอ echo จำไว้ว่าการบล็อกอาจอยู่ภายนอกเซิร์ฟเวอร์ด้วย เช่น ในกลุ่มความปลอดภัยหรือเราเตอร์ และผู้ให้บริการอาจกรอง ICMP บนเครือข่ายของตนโดยที่คุณไม่เห็นกฎดังกล่าว
sysctl net.ipv4.icmp_echo_ignore_all
sudo nft list ruleset | grep -i icmp
sudo ufw status verboseเมื่อการบล็อก ICMP ทำให้เกิดปัญหาจริง
การบล็อก echo ส่วนใหญ่ไม่ก่อปัญหา แต่การบล็อก ICMP ทั้งหมดมีผลเสีย การค้นหา MTU ของเส้นทางอาศัยข้อความแจ้งว่าแพ็กเก็ตมีขนาดใหญ่เกินไป หากไม่มีข้อความเหล่านี้ การรับส่งข้อมูลขนาดเล็กยังทำงานได้ แต่ข้อมูลขนาดใหญ่จะค้าง เช่น ล็อกอิน SSH สำเร็จแล้วค้างเมื่อมีเอาต์พุตจำนวนมาก IPv6 ยิ่งพึ่งพา ICMPv6 มากกว่า คำสั่งที่สองใช้ทดสอบเส้นทางสำหรับ MTU ขนาด 1500 ไบต์บน Linux
ip route get 192.0.2.10
ping -M do -s 1472 -c 3 192.0.2.10เปรียบเทียบผลใน CH-J Server Manager
Server Diagnostics รัน ping ผ่านเครื่องมือของระบบโดยไม่ใช้ root ควบคู่กับการทดสอบ TCP การระบุตัวตน SSH, HTTP และ TLS ที่แยกจากกัน จึงช่วยให้ตีความ ping ที่ล้มเหลวร่วมกับผลอื่นได้ ในที่นี้ ping ล้มเหลวหมายถึงไม่มีคำตอบมาถึง ไม่ได้ระบุว่าแพ็กเก็ตถูกทิ้งที่ใด และ traceroute ก็อาจตอบคำถามนี้ไม่ได้เช่นกัน