ICMP阻断测试

ICMP阻断测试

在我的 bash 脚本中我一直在使用类似的东西:

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。

问题:在某些 LAN 上,ICMP ping 被完全阻止,但网页仍可访问。针对这种一般情况(防火墙到外部)的简短测试方法是什么?

基于该测试,我将切换到基于 http 的测试,例如退出状态

curl -s google.com >/dev/null

如果那是好的。

答案1

使用 curl 相当浪费带宽。只需使用tcp连接反而。

如果您没有,还有其他选择:

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

基本思想是建立与端口 80 的 TCP 连接并查看是否成功。

答案2

如果某个服务器阻止了 ICMP 请求,您仍然可以通过短端口扫描检查 Web 服务器是否可访问,例如使用nmap

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

相关内容