IPSec туннель с помощью ipsec-tools

Поднимал ipsec-туннель на роутере. Всё хорошо - роутеры друг друга нашли, о канале договорились, но вот пакеты почему-то мимо туннеля в сеть уходят. Долго ковырялся, потом понял: пакеты перехватываются ядром после прохождения iptables, а значит, должны сохранять адреса отправителя и получателя неизменными до самого конца. У меня же пакеты уходили в сеть с изменённым адресом отправителя - работал маскарадинг. Добавил в iptables следующее правило:

iptables -t nat -A POSTROUTING -o ppp0 -d $NETW/$MASK -j ACCEPT


Оно должно идти перед маскарадингом. $NETW/$MASK - адрес и маска удалённой сети. Например, 192.168.2.0/255.255.255.0. Далее, для корректной работы нужно разрешить входящие соединения на UDP порт 500 и протоколы esp/ah. Например, вот так:


iptables -t filter -N ipsec
iptables -t filter -F ipsec
iptables -t filter -A ipsec -p udp --dport 500 -j ACCEPT
iptables -t filter -A ipsec -p esp -j ACCEPT
iptables -t filter -A ipsec -p ah -j ACCEPT
iptables -t filter -A INPUT -j ipsec


Теперь туннель установится и будет работать.

Комментариев нет: