Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по FreeBSD (http://forum.oszone.net/forumdisplay.php?f=10)
-   -   Проброс портов через IPSEC (http://forum.oszone.net/showthread.php?t=230083)

4pro.alex 11-03-2012 21:12 1877096

Проброс портов через IPSEC
 
Здравствуйте, уважаемые форумчане!

Нуждаюсь в ваше помощи.

Кратко опишу суть проблемы.

До бесконечности заезженная тема про проброс портов в локальную сеть...

Вобщем, есть FreeBSD + Nat +IPFW

Внутри сети есть почтовый сервер. Проброс портов работал отлично через redirect_port.

Стала необходимость перевести почтовый сервер в другую подсеть за ipsec. Ну думаю: проблем-то?

Перекинул, поправил redirect_port и соответствующие правила в IPFW.

И перестало работать... Уже больше недели бьюсь, загуглился весь уже.

Может кто подскажет особенности redirect_port и divert для подсети за ipsec тунелем?

VictorSh 12-03-2012 05:41 1877396

Цитата:

Цитата 4pro.alex
поправил redirect_port и соответствующие правила в IPFW »

пробовали файервол отключать?

Цитата:

Цитата 4pro.alex
Перекинул »

настроили правильно маршрутизацию?

почтовый сервер пингуется? и наоборот с него пингуется шлюз?
в почтовом сервере настроили доверенные сети? и на каких интерфейсах слушать соединения, ведь теперь у вас сменился ip адрес и подсеть.

Цитата:

Цитата 4pro.alex
Уже больше недели бьюсь, загуглился весь уже »

вряд ли поможет, у каждого свои особенности сети, а вы ищете шаблон. Попробуйте использовать команду tcpdump и выяснить, как ходят пакеты. Включите логирование в файерволе и изучайте логи.

4pro.alex 12-03-2012 11:31 1877541

С маршрутизацией все впорядке сети между собой видны, бегают.

tail -f /var/log/security

много чего показывает, но касательно нужных мне пакетов нем как рыба...

Заметил, что если в фаерволе убрать правило
${fwcmd} add divert natd ip from any to ${oip} in via ${oif}
то все работает.

Соответственно ${oip} - внешний адрес ${oif} - внешний интерфейс.

При этом, когда сервер находился в сети даже с этим правилом работало.

Когда он уехал за ipsec - перестало.

4pro.alex 12-03-2012 11:49 1877550

Наверно приведу детальные настройки:

Код:

192.168.0.0/24 внутрення сеть
192.168.1.0/24 сеть за ipsec


/etc/rc.conf
Код:

cloned_interfaces="tap0 bridge0 gif0 gif1"
ifconfig_bridge0="addm em0 addm tap0 up"
gif_interfaces="gif0 gif1"
gifconfig_gif0="xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy"
ifconfig_gif0="inet 192.168.0.4 192.168.110.9 netmask 0xffffffff"
gifconfig_gif1="xxx.xxx.xxx.xxx zzz.zzz.zzz.zzz"
ifconfig_gif1="inet 192.168.0.4 192.168.1.1 netmask 0xffffffff"
ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"
racoon_enable="YES"
racoon_flags="-4 -l /var/log/racoon.log"
static_routes="1 2"
route_1="192.168.1.0/24 -interface gif1"
route_2="192.168.110.0/24 -interface gif0"

firewall
Код:

fwcmd='/sbin/ipfw'
net1='192.168.0.0/24'         
net2='192.168.110.0/24'       
net3='192.168.1.0/24'         
oif='em0'
iif='em1'
oip='xxx.xxx.xxx.xxx'
iip1='192.168.0.4'

#IPSEC VPN
${fwcmd} add allow udp from ${oip} to 89.162.144.154,77.72.132.32 isakmp
${fwcmd} add allow udp from 89.162.144.154,77.72.132.32 to ${oip} isakmp
${fwcmd} add allow esp from 193.93.186.100 to 89.162.144.154,77.72.132.32
${fwcmd} add allow esp from 89.162.144.154,77.72.132.32 to ${oip}
${fwcmd} add allow ipencap from ${oip} to 77.72.132.32,89.162.144.154
${fwcmd} add allow ipencap from 89.162.144.154,77.72.132.32 to ${oip}

# Разрешаем прохождение пакетов на внутреннем интерфейсе
${fwcmd} add allow ip from any to any via ${iif}

# Разрешаем весь траффик по внутреннему интерфейсу (петле)
${fwcmd} add allow ip from any to any via lo0

#Mail
${fwcmd} add divert natd ip from 192.168.0.8 25,21,60000-60100 to any via ${oif} out
${fwcmd} add divert natd ip from 192.168.0.8 to any 25,21,60000-60100 via ${oif} out

${fwcmd} add allow tcp from any to any established

${fwcmd} add allow ip from ${oip} to any out xmit ${oif}

${fwcmd} add allow udp from any 53 to any via ${oif}

${fwcmd} add allow udp from any to any 123 via ${oif}

${fwcmd} add allow icmp from any to any icmptypes 0,8,11

${fwcmd} add allow tcp from any to any via ${iif}
${fwcmd} add allow tcp from any to any via ng*
${fwcmd} add allow tcp from any to any via gif*

${fwcmd} add allow udp from any to any via ${iif}
${fwcmd} add allow udp from any to any via ng*
${fwcmd} add allow udp from any to any via gif*

${fwcmd} add allow icmp from any to any via ${iif}

${fwcmd} add deny log logamount 1000 ip from any to any

И вконец

/etc/natd.conf

Код:

interface em0
use_sockets yes
same_ports yes
unregistered_only
redirect_port tcp 192.168.0.8:25 25
redirect_port tcp 192.168.0.8:21 21


Собственно при тако расскладе все работает. Порты 21,25 на 192.168.0.8 пробрасываются.

Стоит постовый сервак переместить за ipsec, соответственно адрес меняем на 192.168.1.8.

Изменяю natd.conf и firewall все со 192.168.0.8 на 192.168.1.8 и тут меня ждут грабли.

VictorSh 13-03-2012 02:27 1878044

хм, не пользовался если честно такой связкой. Может проблема в IPSEC. У меня проброс портов через rinetd. Стоит pf+nat средствами pf, проброс портов через rinetd. IPSEC не использовал, gifconfig тоже.

Попробуйте заюзать rinetd и прописать правило

ip_сервера_в_сети_1 25 ip_почтового_сервера 25

Возможно, неправильно пробрасываются порты.

Попробуйте отправить почту и посмотреть, что в этом случае пишет tcpdump на сервере и что на почтовом сервере происходит тоже tcpdump - вообще до него пакеты с портом назначения 25 доходят? и какие порты действительно пробрасываются

4pro.alex 13-03-2012 02:52 1878052

rinetd конечно мне знаком - вещь хорошая, не спорю. Но помимо одиночных портов мне нужно пробрасывать еще и ФТП, который работает в пасивном режиме. redirect_port спокойно справляется с диапазоном портов, а ринетд не умеет такого.


Время: 01:03.

Время: 01:03.
© OSzone.net 2001-