|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Dmitry Liakh 2:5020/400 24 Jan 2002 18:56:58 To : All Subject : траблы с NAT -------------------------------------------------------------------------------- Добрый вечер, All! Помогите пжлста с одной небольшой проблемкой. Ситуация, значит, следующая: Локалка на серых адресах подключена к инету через машинку, работающую под фрей 4.4-R и имеющую 1 статический реальный IP. Для связи с провайдером на ней работают pppd и natd. Также на ней работает апач, раздающий служебный сайт, используемый удаленными филиалами. Внутри локалки, есть машинка с апачем под NT, которая исполняет единственный CGI-скрипт (это екзешник, написанный на Delphi не мной, и перекинуть его на фрю пока не предоставляется возможным бо он для формирования контента юзает борландовскую технологию MIDAS. Короче - пишет в stdout, данные из MIDAS'овского ClientDataset'а, а затем на удаленной стороне его проглатывает на Delphi же писанная программа). Для того, чтоб клиент из инета мог вызвать этот скрипт, на фре в natd'е проброшен порт 8080 на 80'й порт машинки под NT. Проблема в том, что когда клиент вызывает этот скрипт снаружи - скрипт выполняется, но данные клиенту обратно не возвращает. Вместо данных клиенту возвращается сообщение о таймауте от его прокси. Причем, если снаружи с этого же NT'вого апача запросить простую html страницу - то все ок, клиент ее увидит. Зато результат работы скрипта можно получить обратившись к этому апачу из *локалки*, причем никаких задержек не наблюдается. Покопавшись немного (путем включения на фре net.inet.tcp.log_in_vain=1, и просматривания /var/log/messages на фре и апачевского access.log на NT в момент запроса удаленным клиентом вышеназванного скрипта), я обнаружил, что перед возникновением таймаута происходит следующее: удаленный клиент коннектится снаружи на порт 8080 фри, natd успешно пробрасывает его запрос на 80 порт NT, на NT запускается скрипт, успешно отрабатывает и в access.log появляется подтверждающая этот факт запись (http 200 и т.д.) после этого на фре в /var/log/messages начинают лезть сообщения о том, что NT со своего 80-го порта пытался коннектнуться к произвольному (очевидно, к тому, с которого обращался клиент) закрытому порту на *внешнем* (ppp) интерфейсе фри. Через некоторое время у клиента вылазит сообщение о таймауте. Если я правильно понял, выходит что natd пробрасывает запрос на NT, и после этого считает сокет закрытым. В man natd ничего, обьясняющего причину проблемы и пути ее решения не нашел. natd запускается с use_sockets и same_ports. Что мудрый All посоветует в этой ситуёвине делать? -- WBR Dmitry --- ifmail v.2.15dev5 * Origin: Hansa (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/17301325a7719.html, оценка из 5, голосов 10
|