ทดสอบ ICMP block


1

ในสคริปต์ทุบตีของฉันฉันได้ใช้สิ่งที่ชอบ:

until fping -u google.com; do echo "$0[$$] Network/DNS down?? $(date)" 1>&2 && sleep $(($RANDOM%(1 + ++trynum * 1) +1)).222; done

เพื่อทดสอบการเชื่อมต่อออนไลน์

มันหยุดทำงานในขณะนอนหลับเพิ่มช่วงเวลาสุ่มจนกว่าจะสามารถ ping google.com ได้อีกครั้ง

ปัญหา: ในบาง LANs ICMP pings ถูกปิดกั้นพร้อมกันแม้ว่าหน้าเว็บจะยังเข้าถึงได้ วิธีสั้น ๆ ในการทดสอบกรณีทั่วไปนี้ (ไฟร์วอลล์ไปยังภายนอก) คืออะไร

จากการทดสอบนั้นฉันจะสลับไปใช้การทดสอบ http-based เช่นสถานะออกจาก

curl -s google.com >/dev/null

ถ้านั่นเป็นสิ่งที่ดี

คำตอบ:


2

การใช้ curl ค่อนข้างสิ้นเปลืองแบนด์วิดท์ เพียงใช้tcpingแทน

ตัวเลือกอื่น ๆ หากคุณไม่มี:

curl -sI -m 2  http://www.google.com >/dev/null
echo 'HEAD / HTTP/1.0\r\nHost: www.google.com\r\n\r\n' | nc www.google.com 80 >/dev/null

แนวคิดพื้นฐานคือทำการเชื่อมต่อ TCP กับพอร์ต 80 และดูว่าประสบความสำเร็จหรือไม่


เครื่องมือที่ดี แต่ดูไม่เป็นสากล ฉันจะต้องปรับใช้กับแต่ละเซิร์ฟเวอร์ Ubuntu / cygwin ที่ฉันสามารถควบคุมได้ กำลังมองหาวิธีพกพาที่มากขึ้น
Marcos

@marcos คุณมีอะไรบ้าง zsh? netcat?
Keith

บนโฮสต์ Ubuntu ส่วนใหญ่: bash, dash, ash, socat, netcat / nc, nmap, fping, arping, mtr, traceroute, netstat, netpipes (faucet faucet), ขด, wget, ไม่มี zsh ...
Marcos

1

หากเซิร์ฟเวอร์บางตัวบล็อกคำขอ ICMP คุณยังสามารถตรวจสอบว่าเว็บเซิร์ฟเวอร์นั้นสามารถเข้าถึงได้โดยการสแกนพอร์ตแบบสั้นเช่นกับnmap :

nmap -PN -T4 -p 80 your_webserver 2>&1 | grep -wi open >/dev/null || date


โอเคยกเว้นnmap -PN -T4 -p 80 sgasdfoogle.com || dateไม่ได้ดำเนินการวันที่ตามที่ต้องการ เห็นได้ชัดว่ารหัสออกยังคงเป็น 0 เมื่อชื่อโฮสต์ไม่สามารถแก้ไขได้ (หรือเข้าถึงได้)
Marcos

@Marcos: grep "open"เพิ่ม
speakr

จริง nmap -PN -T4 -p 80 sgasdfoogle.com |grep -wi open || failcode
Marcos
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.