我不知道是否有办法ping我的LAN代理之外的目标,它只通过squid代理接受Http请求......我在某处读到了处理这种问题的一种方法是使用http隧道以便代理仍然将请求视为Http请求。我是否可以使用它来ping,例如www.google.com,否则会因为防火墙拒绝请求而发出以下错误:
$ ping www.google.com
ping: unknown host www.google.com
如果是这样怎么做......?
我已经安装了httptunnel.Any帮助如何使用它将非常感激。
答案 0 :(得分:10)
没有。 Ping和traceroute使用较低层网络协议(特别是ICMP和/或UDP,它们是第4层协议),并且不能在HTTP(第7层)隧道上工作。在任何情况下,即使您可以说服HTTP代理为您打开原始TCP会话(这是某些HTTP隧道的工作方式),您也不会收到必要的数据包来确认主机是否可访问。 (在ping的情况下,ICMP echo回复,或者在traceroute的情况下,生存时间过期的ICMP数据包)
要在这种情况下测试连接性,我认为您可以做的最好的是HTTP“ping”。 (尝试与远程主机建立HTTP连接,看看它是否有效。)例如,您可以执行以下操作:
$ http_proxy=http://webproxy.example.com:3128 \
> curl -I http://google.com/ > /dev/null 2>&1 \
> && echo success || echo failure
假设您已安装curl
,如果可通过您的代理访问google.com,则会打印“成功”,否则会显示“失败”。
答案 1 :(得分:0)
这并不是你想要的,但如果你可以访问和外部ssh服务器,你可以通过它运行它,结果将反映到ssh服务器的ping时间:
$ ssh username@server 'ping -c 1 google.com'
PING google.com (72.14.204.147) 56(84) bytes of data.
64 bytes from iad04s01-in-f147.1e100.net (72.14.204.147): icmp_seq=1 ttl=57 time=2.64 ms
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 2.640/2.640/2.640/0.000 ms