2011-02-04 24 views
9

Nie wiem, czy istnieje sposób na pingowanie celu poza moim proxy sieci LAN, który akceptuje tylko żądania HTTP przez proxy squid ... Czytałem gdzieś, że jednym ze sposobów radzenia sobie z takim problemem jest użycie tunelu http, więc że serwer proxy nadal widzi żądanie jako żądanie HTTP. Czy mogę użyć tego do ping www.google.com, powiedzmy, który inaczej jest dające następujący błąd, ponieważ firewall odrzuca żądanie:Czy mogę użyć tunelu http do pingowania lub traceroute przez serwer proxy z zaporą ogniową?

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

Jeśli tak, jak to się robi ...?

Mam zainstalowany httptunnel. Każda pomoc w korzystaniu z niego będzie bardzo cenna.

Odpowiedz

8

Nie. Ping i traceroute korzystają z protokołów sieciowych niższej warstwy (w szczególności ICMP i/lub UDP, które są protokołami warstwy 4) i nie działają w tunelu HTTP (warstwa 7). W każdym razie, nawet jeśli uda ci się przekonać serwer proxy HTTP do otwarcia nieprzetworzonej sesji TCP (tak działa niektóre tunelowanie HTTP), nie otrzymasz potrzebnych pakietów do potwierdzenia, że ​​host jest osiągalny. (Odpowiedź echa ICMP, w przypadku ping, lub pakietów ICMP wygasających w czasie w przypadku traceroute)

Aby przetestować łączność w tej sytuacji, myślę, że najlepiej jest zrobić HTTP " świst". (Spróbuj ustanowić połączenie HTTP ze zdalnym hostem i sprawdzić, czy to działa). Na przykład, można zrobić coś takiego:

$ http_proxy=http://webproxy.example.com:3128 \ 
> curl -I http://google.com/ > /dev/null 2>&1 \ 
> && echo success || echo failure 

Zakładając zainstalowaniu curl byłoby to wydrukować „sukces”, jeśli google.com jest osiągalne poprzez twoje proxy i "niepowodzenie", jeśli nie.

+0

podziÄ ™ kowaniami ty. Próbowałem, ale nadal pokazuje niepowodzenie ... proszę powiedz mi, gdzie mogę się mylić – pflz

+0

Spróbuj polecenia w formacie 'http_proxy = http: // : curl -I http: // google.com/', co może być bardziej pouczające. (Innymi słowy, najpierw upewnij się, że adres proxy jest poprawny, a serwer proxy jest osiągalny. Możesz wypróbować 'telnet ' i sprawdzić, czy łączy się z nim, lub jeśli połączenie zostanie odrzucone.) – mpontillo

+0

Spróbuj także 'echo $ http_proxy ', aby sprawdzić, czy jest już ustawione dla ciebie. Jeśli tak, możesz go opuścić i po prostu użyć 'curl'. – mpontillo

1

To nie jest dokładnie to, czego szukaliśmy, ale jeśli można uzyskać dostęp i zewnętrzny serwer ssh, można uruchomić go przez to, a wyniki będą odzwierciedlać czas ping do serwera ssh:

$ ssh [email protected] '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