我可以使用http隧道通过带防火墙的代理ping或traceroute吗?

时间:2011-02-04 21:12:59

标签: networking tunneling http-tunneling

我不知道是否有办法ping我的LAN代理之外的目标,它只通过squid代理接受Http请求......我在某处读到了处理这种问题的一种方法是使用http隧道以便代理仍然将请求视为Http请求。我是否可以使用它来ping,例如www.google.com,否则会因为防火墙拒绝请求而发出以下错误:

$ ping www.google.com
ping: unknown host www.google.com

如果是这样怎么做......?

我已经安装了httptunnel.Any帮助如何使用它将非常感激。

2 个答案:

答案 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