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

Networking 我可以使用http隧道通过带有防火墙的代理ping或traceroute吗?,networking,tunneling,http-tunneling,Networking,Tunneling,Http Tunneling,我不知道是否有办法在我的LAN代理之外ping一个目标,它只接受通过squid代理的Http请求。。。我在某个地方读到,处理此类问题的一种方法是使用http隧道,以便代理仍然将请求视为http请求。我可以用这个来ping,比如说www.google.com,否则会出现以下错误,因为防火墙拒绝了请求: $ ping www.google.com ping: unknown host www.google.com 如果是这样,它是如何做到的 我已经安装了httptunnel。如果您对如何使用它有任

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

$ ping www.google.com
ping: unknown host www.google.com
如果是这样,它是如何做到的


我已经安装了httptunnel。如果您对如何使用它有任何帮助,我将不胜感激。

否。Ping和traceroute使用较低层的网络协议(尤其是ICMP和/或UDP,它们是第4层协议),并且不会在HTTP(第7层)隧道上工作。在任何情况下,即使您可以说服HTTP代理为您打开一个原始TCP会话(这是一些HTTP隧道的工作方式),您也不会收到必要的数据包来确认主机是可访问的。(如果是ping,则为ICMP回显回复;如果是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,则打印“成功”,否则打印“失败”。

这并不完全是您想要的,但如果您可以访问外部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 

非常感谢。我试过了,但还是失败了。。。请告诉我哪里可能出错请尝试使用
http\u proxy=http://:curl-I格式的命令http://google.com/
,这可能更有启发性。(换句话说,首先确保您的代理地址正确并且可以访问代理。您可以尝试
telnet
,查看它是否连接,或者连接是否被拒绝。)此外,尝试
echo$http_proxy
查看是否已经为您设置了代理。如果是这样的话,您可以省去它,只需使用
curl
@mpontillo,我知道我只能在公司代理在场的情况下使用curl-I。如果我运行的是RedhatLinux7,那么如何修复NVMLS-remote在返回节点8.9.4时返回N/A的事实?非常感谢。