能否通过扫描端口53检测主机可达性?代理场景下检测方案咨询
问题解答
1. 不建议用扫描53端口的方式判断主机可达性
只有提供DNS解析服务的主机才会对外开放53端口,绝大多数普通业务服务器默认不会开放该端口,且很多网络策略会封禁对外的53端口访问请求,扫描53端口失败不代表主机不可达,扫描成功也只能说明该主机的DNS端口可用,无法通用判定主机可达性。
2. netcat走代理扫描假成功的原因
你使用的-z参数是端口扫描模式,配合HTTP CONNECT代理时,netcat仅验证代理是否接受了CONNECT请求,不会等待代理与目标主机完成TCP握手,因此只要代理本身可用,无论目标是否可达都会返回成功,属于参数使用场景不匹配的问题。
通用可达性测试方案
方案1:调整netcat使用方式
去掉-z参数,手动发送对应协议的探测报文验证连通性,以测试HTTP服务为例:
nc -x dummyproxy.com:80 -Xconnect google.com 81 <<EOF HEAD / HTTP/1.1 Host: google.com Connection: close EOF
如果能收到目标返回的HTTP响应报文,则说明真实连通。
方案2:使用curl测试(更简单,对代理兼容性更好)
curl原生支持各类代理,且会验证到目标的完整链路连通性,不会出现假成功问题:
- 直连测试目标端口可达性
curl -v --connect-timeout 5 telnet://google.com:80
- 走HTTP代理测试目标端口可达性
curl -v --proxy dummyproxy.com:80 --connect-timeout 5 telnet://google.com:81
命令返回退出码为0则代表连通成功,非0则代表连通失败。
方案3:IP层面可达性测试(无需验证端口)
如果仅需确认IP层面主机可达,不需要验证端口开放状态:
- 目标未禁ICMP时直接用ping:
ping -c 3 google.com
- 目标禁ICMP时可使用hping3发TCP探测包验证:
hping3 -c 3 -S -p 443 google.com
内容的提问来源于stack exchange,提问作者the_D
相关产品推荐
相关产品推荐

