Назад | Перейти на главную страницу

wget и перенаправление портов

У меня странная проблема. Я могу запустить эту команду с разных серверов:

wget --debug '--http-user=USER123' '--http-passwd=PASSWORD' http://GW-BOX:9091/weijhkdsvn/v9_odbc//CRONTAB.2014020

Где "GW-BOX" - это шлюз в мою сеть, USER123 и PASSWORD представляют пользователя и пароль для weijhkdsvn, а 9091 указывает на внутренний сервер Linux. Проблема в том, что время ожидания этой команды истекает и / или она отклоняется.

wget --debug '--http-user=USER123' '--http-passwd=PASSWORD' http://GW-BOX:9093/weijhkdsvn/v9_odbc//CRONTAB.20140206

Порт 9093 указывает на другой внутренний сервер. Обратите внимание, что единственная разница - это порт.

Итак, я попытался выполнить wget прямо с сервера, чтобы убедиться, что http настроен правильно:

wget --debug '--http-user=USER123' '--http-passwd=PASSWORD' http://9091-Server:80/weijhkdsvn/v9_odbc//CRONTAB.20140206

В этом случае 9091-Server - это внутренний сервер, к которому относится порт 9091. Работает нормально. Затем я попробовал ту же команду, но имитируя порт 9093:

wget --debug '--http-user=USER123' '--http-passwd=PASSWORD' http://9093-Server:80/weijhkdsvn/v9_odbc//CRONTAB.20140206

где 9093-Server относится к внутреннему серверу, на который указывает 9093.

Итак, приведенные выше примеры доказывают, что 9093-Server правильно настроил http, чтобы разрешить wget, насколько я могу судить. Это говорит о том, что, возможно, проблема в GW-BOX, поэтому я протестировал порты с помощью telnet, и порт 9091 работал нормально.

[wmsodbc]> telnet GW-BOX 9091
Trying GW-BOX...
Connected to GW-BOX.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
[wmsodbc]> 

Но порт 9093 не работал:

[wmsodbc]> telnet GW-BOX 9093
Trying GW-BOX...
telnet: connect to address GW-BOX: Connection refused
[wmsodbc]>

Итак, я проверил iptables на GW-BOX:

[root@wmsgateway ~]# iptables-save | grep "909[13]"
-A INPUT -p tcp -m tcp --dport 9091 -j LOG 
-A INPUT -p tcp -m tcp --dport 9093 -j LOG 
-A PREROUTING -d GW-BOX-EXTERNAL-IP/32 -p tcp -m tcp --dport 9091 -j DNAT --to-destination 9091-ServerIp:80 
-A PREROUTING -d GW-BOX-EXTERNAL-IP/32 -p tcp -m tcp --dport 9093 -j DNAT --to-destination 9093-ServerIp:80 
-A POSTROUTING -d 9091-ServerIp/32 -p tcp -m tcp --dport 9091 -j SNAT --to-source GW-BOX-INTERNAL-IP
-A POSTROUTING -d 9093-ServerIp/32 -p tcp -m tcp --dport 9093 -j SNAT --to-source GW-BOX-INTERNAL-IP 
[root@wmsgateway ~]# 

Итак, что еще я могу проверить, чтобы понять, почему порт 9091 принимает запросы wget / telnet, а 9093 - нет?

Хорошо, я понял проблему. Очевидно, что GW-BOX предназначен для использования в качестве шлюза. Но как я уже сказал в другой ветке Вот, Я не мог получить доступ к Интернету ЧЕРЕЗ этот ящик. Оказывается, как только я исправил невозможность доступа к Интернету ЧЕРЕЗ GW-BOX, я смог нормально использовать wget. В моем случае, согласно только что упомянутой теме, мне пришлось изменить iptables с

iptables-save | grep eth
-A POSTROUTING -o eth1 -j SNAT --to-source 68.AAA.BBB.155

к

iptables-save | grep eth
-A POSTROUTING -o eth2 -j SNAT --to-source 68.AAA.BBB.155

и теперь все работает. Я также установил совершенно новые порты, но не думаю, что это было основной причиной.

Спасибо. Надеюсь, это поможет кому-то другому.

Во-первых, тест, который вы сделали непосредственно на wget на серверах, откуда были сделаны эти тесты? с оригинального хоста, или с GW-бокса, или с какого-нибудь "стороннего" хоста ?.

Кроме того, на GW-box вы проверяли, используют ли другие службы порт 9093? (в gw-box запустите что-то вроде:

netstat -lnptu | grep 9093

Один из методов проверки того, где проблема, - это поменять местами порты серверов. ServerA в настоящее время имеет порт 9091 и работает правильно, ServerB имеет порт 9093 и не работает. Чтобы определить, связана ли проблема с GW-Box или самим сервером, включите конфигурацию iptables в GW-box для SNAT. Укажите 9091 на ServerB и 9093 на ServerA. Если 9091 продолжает работать, вы знаете, что проблема где-то в правиле, которое у вас есть для порта 9093, поскольку сервер A и B оба работают на 9091, это также может указывать на проблему с правилом брандмауэра на сервере B. Если 9091 не работает, но 9093 работает, вы можете с уверенностью предположить, что ваш GW-Box работает правильно, и что Сервер B каким-то образом не разрешает доступ к портам верхнего диапазона через WGET, поскольку вы ранее подтвердили, что WGET доступен напрямую.