12

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

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

如果是这样,它是如何完成的......?

我已经安装了 httptunnel。任何有关如何使用它的帮助将不胜感激。

4

2 回答 2

12

不会。Ping 和 traceroute 使用较低层的网络协议(特别是 ICMP 和/或 UDP,它们是第 4 层协议),并且不会在 HTTP(第 7 层)隧道上工作。在任何情况下,即使您可以说服 HTTP 代理为您打开一个原始 TCP 会话(这就是某些 HTTP 隧道的工作方式),您也不会收到确认主机可访问所需的数据包。(ICMP echo reply,在 ping 的情况下,或者在 traceroute 的情况下,time-to-live 过期的 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,这将打印“成功”,否则将打印“失败”。

于 2011-02-04T21:59:28.997 回答
1

这不完全是您要查找的内容,但如果您可以访问外部 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 
于 2011-02-04T22:09:17.340 回答