ipfw forward?
2428
4
Full
guru
Дано - шлюз на FreeBSD, ядро собрано с параметра ip_firewall, ip_firewall_forward, ip_divert
То бишь работает машинка рутером. Стоит сквид, прозрачный прокси.
Задача - дать доступ из инета на другой сервак, web, ip 192.168.0.30
Думал, что все должно быть просто:
ipfw add fwd tcp from ${inetaddr} 80 to 192.168.0.30
И жестоко обломился, отключает тут же, connection refused
telnet 192.168.0.30 80 - есть ответ
telnet 192.168.0.1 80 - есть ответ (адрес фри, крутится самописная статистика, веб-морда)
telnet ${inetaddr} 80 - connection refused
tcpdump -i rl0 host ${inetaddr} and port 80
показывает попытку доступа, и ответ.
Или я как то неправильно понимаю форвард, и тут что другое надо делать?
Задумываюсь о создании демилитаризованной зоны, но не хотелось бы.
То бишь работает машинка рутером. Стоит сквид, прозрачный прокси.
Задача - дать доступ из инета на другой сервак, web, ip 192.168.0.30
Думал, что все должно быть просто:
ipfw add fwd tcp from ${inetaddr} 80 to 192.168.0.30
И жестоко обломился, отключает тут же, connection refused
telnet 192.168.0.30 80 - есть ответ
telnet 192.168.0.1 80 - есть ответ (адрес фри, крутится самописная статистика, веб-морда)
telnet ${inetaddr} 80 - connection refused
tcpdump -i rl0 host ${inetaddr} and port 80
показывает попытку доступа, и ответ.
Или я как то неправильно понимаю форвард, и тут что другое надо делать?
Задумываюсь о создании демилитаризованной зоны, но не хотелось бы.
Насколько я понял, у тебя на роутере внешний порт выходит на канал в инте под реальным ip, а внутрь локалки под приватным?
Тогда на роутере должен быть поднят NAT.
Если так, то ищи на роутере файлик natd.conf
Там прописывай строчку: redirect_port tcp 192.168.0.30:80 80
Потом перегрузи роутер.
Тогда на роутере должен быть поднят NAT.
Если так, то ищи на роутере файлик natd.conf
Там прописывай строчку: redirect_port tcp 192.168.0.30:80 80
Потом перегрузи роутер.
Малость не понял
NAT aka divert имеется
На рутере крутится статистика, с апачем на внутреннем интерфесе
Надо, чтобы обращения к 80 порту внешнего интерфейса пересылались во внутреннюю подсеть, на другой сервак.
Чем мне помогает редирект порта?
NAT aka divert имеется
На рутере крутится статистика, с апачем на внутреннем интерфесе
Надо, чтобы обращения к 80 порту внешнего интерфейса пересылались во внутреннюю подсеть, на другой сервак.
Чем мне помогает редирект порта?
Запросы на порт с внешнего ip идут на порт внутреннего ip, прописаный в конфиге.
Не это ли разве требуется?
У меня такая схема работает.
Не это ли разве требуется?
У меня такая схема работает.
NestЕr wrote
Мне казалось, что после обработки natd во внутреннюю сеть пакет пойдет от адреса рутера.
Ладно, другой вопрос.
Если я сделаю редирект, то ВСЕ пакеты, пришедшие на рутер порт 80 будут персылаться на 192.168.0.30?
проблему я решил созданием ДМЗ, но ради общего образования
>> Чем мне помогает редирект порта?Ну а разве после обработки natd и последующим forward адреса не сменятся на серые?
Тем что именно РЕДИРЕКТ, а не ФОРВАРД решает твою задачу.
Правило forward тупо перебрасывает пакет на другой адрес, не меняя его заголовки, т.е. работать это будет по
такой схеме:
1. Пакет с реальным dst_ip приходит на рутер.
2. Рутер (не меняя заголовки) перекидывает его на локальный web-сервер.
3. Локальный web-сервер видит, что к нему приш.л пакет с реальным адресом назначения, который не совпадает с
его адресом 192.168.0.30 и отбрасывает пакет... вс. -- connection refused тебе обеспечен.
Для нормальной работы тебе нужно, чтобы пакеты, приходящие на 80-ый порт пересылались демону natd, который
будет менять dst_ip c реального на серый и отсылать их web-серверу. После того, как web-сервер сгенерирует
ответ, пакеты будут снова посланы на рутер, опять пройдут через natd, который совершит обратную подстановку -
- поменяет src_ip с серого на белый, и дальше уйдут в инет...
Как уже написал ganymed конфа должна быть следующая:
/etc/rc.conf:
natd_enable="YES"
natd_flags="-f /etc/natd.conf
/etc/natd.conf:
redirect_port tcp 192.168.0.30:80 80
/etc/rc.firewall:
[skipped]
${fwcmp} add 50 divert natd ip from any to any via ${natd_interface}
[skipped]
Мне казалось, что после обработки natd во внутреннюю сеть пакет пойдет от адреса рутера.
Ладно, другой вопрос.
Если я сделаю редирект, то ВСЕ пакеты, пришедшие на рутер порт 80 будут персылаться на 192.168.0.30?
проблему я решил созданием ДМЗ, но ради общего образования