Могу ли я использовать http-туннель для проверки связи или трассировки через прокси-сервер с брандмауэром?

Я не знаю, есть ли способ пропинговать цель за пределами моего прокси-сервера в локальной сети, который принимает только запросы Http через прокси-сервер squid... Я где-то читал, что один из способов решения такой проблемы - использовать http-туннель, чтобы прокси по-прежнему видит запрос как HTTP-запрос. Могу ли я использовать это, чтобы пропинговать, скажем, www.google.com, который в противном случае выдает следующую ошибку, потому что брандмауэр отклоняет запрос:

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

Если да, то как это делается...?

Я установил httptunnel. Любая помощь в его использовании будет высоко оценена.


person pflz    schedule 04.02.2011    source источник


Ответы (2)


Нет. Ping и traceroute используют сетевые протоколы более низкого уровня (в частности, ICMP и/или UDP, которые являются протоколами уровня 4) и не будут работать через туннель HTTP (уровень 7). В любом случае, даже если бы вы могли убедить прокси-сервер HTTP открыть для вас необработанный сеанс TCP (так работает туннелирование HTTP), вы не получили бы необходимых пакетов для подтверждения того, что хост доступен. (эхо-ответ ICMP в случае ping или ICMP-пакеты с истекшим временем жизни в случае traceroute)

Чтобы проверить возможность подключения в этой ситуации, я думаю, что лучшее, что вы можете сделать, это HTTP-пинг. (Попробуйте установить HTTP-соединение с удаленным хостом и посмотрите, работает ли оно.) Например, вы можете сделать что-то вроде:

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

Предполагая, что у вас установлен curl, будет напечатано "успех", если google.com доступен через ваш прокси-сервер, и "неудача", если нет.

person mpontillo    schedule 04.02.2011
comment
Спасибо. Я пробовал, но все равно показывает ошибку... подскажите, пожалуйста, где я могу ошибаться - person pflz; 05.02.2011
comment
Попробуйте команду формата http_proxy=http://<your-proxy-address>:<your-proxy-port> curl -I http://google.com/, которая может быть более информативной. (Другими словами, сначала убедитесь, что у вас правильный адрес прокси-сервера и прокси-сервер доступен. Вы можете попробовать telnet <proxy> <proxy-port> и посмотреть, соединяется ли он, или соединение отклонено.) - person mpontillo; 05.02.2011
comment
Кроме того, попробуйте echo $http_proxy, чтобы убедиться, что он уже установлен для вас. Если это так, вы можете оставить его и просто использовать curl. - person mpontillo; 05.02.2011
comment
@mpontillo, я так понимаю, что я могу только curl -I google.com при наличии корпоративного прокси. Если я использую RedHat Linux 7, как я могу исправить тот факт, что nvm ls -remote возвращает N/A, когда возвращает узел 8.9.4? Спасибо. - person Frank; 30.01.2018

Это не совсем то, что вы искали, но если у вас есть доступ к внешнему серверу ssh, вы можете запустить его через него, и результаты будут отражать время пинга до сервера ssh:

$ 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 
person jacobe    schedule 04.02.2011