LINUX.ORG.RU
ФорумAdmin

ipsec, strongswan и nat

 , ,


1

1

Всем ку. Буду признателен за помощь. Проблема заключается в том что не могу нормально осилить ipsec с помощью strongswan. Сейчас есть конфиг вида:

config setup
        charondebug="cfg 2, ike 4"

conn %default
        ikelifetime=60m
        keylife=20m
        rekeymargin=3m
        keyingtries=1
        keyexchange=ikev2
        authby=psk
        type=tunnel

conn server1-server2
        left=16.3.3.1
        leftsubnet=192.168.7.0/24
        leftid=@conn.ua
        ike=aes128-sha1-modp1024
        esp=aes128-sha1-modp1024
        leftfirewall=yes
        right=178.2.16.25
        rightsubnet=192.168.223.0/24
        rightid=@vpn12.ua
        auto=start

С виду соединение установлено, все пингается и все хорошо. Ровно до тех пор пока в firewall не добавить правило:

-A POSTROUTING -s 192.168.7.0/24 -o eth0 -j MASQUERADE

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

-A POSTROUTING -s 192.168.7.0/24  -o eth0 -m policy --dir out --pol ipsec -j ACCEPT

И вот с ним как бы все заработало без всяких проблем, трафик просто не маскарадится и уходит в тунель. Но вот перекопавши кучу доки нашел только один параметр:

leftfirewall=yes

он добавляет в iptables filter такие строки:

1051 81936 ACCEPT     all  --  enp4s0 *       192.168.223.0/24     192.168.7.0/24       policy match dir in pol ipsec reqid 1 proto 50
 1060 67840 ACCEPT     all  --  *      enp4s0  192.168.7.0/24       192.168.223.0/24     policy match dir out pol ipsec reqid 1 proto 50

Не могу понять, что где настроено криво что нужно добавлять дополнительное правило в nat, ведь кучу статей с примерами где нужно одно лишь правило маскарадинга. Может кто подскажет?

Вы не описали кто у вас left а кто right точнее на какой стороне прописываете правила. Но догадаемся что на left. (Для сведения, слова left и right для ipsec относительны, если поменяете местами ничего не измениться, тут нет «локальный» «удаленный» )
А целом все логично если предположить что eth0 это выходной интерфейс. Согласно правилу он маскарадиться адресом 16.3.3.1, про который right ничего не знает. Поэтому нужен предыдущий accept. Можно вообще схалтурить типа -s 192.168.7.0/24 -d 192.168.223.0/24 -j ACCEPT

И что-то вы не договорили. У вас сначала eth0 а при параметре leftfirewall интерфейс enp4s0.

anc ★★★★★
()
Ответ на: комментарий от anc

Забыл добавить. Автоматизация в виде left/rightfirewall имхо лишнее, во всяком случае лучше понимать что делаеш и добавлять необходимое ручками.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.