Источник NAT (SNAT) IPTables в /etc/ufw/before.rules

Источник NAT (SNAT) IPTables в /etc/ufw/before.rules

Мне нужно получить трафик NAT (SNAT) между двумя интерфейсами на сервере Ubuntu 18.04. Я пытался использовать файл '/etc/ufw/before.rules' для реализации моих различных потребностей NAT и пока все было хорошо... до сих пор.

Следующая команда iptables, кажется, делает именно то, что мне нужно:

iptables -j SNAT -t nat -I POSTROUTING 1 -o eth0 -d 192.168.1.0/24 -s 172.18.0.0/16 --to-source 10.136.0.2

Можно ли это правило легко перевести в конфигурацию в файле '/etc/ufw/before.rules'? Страницы руководства для конфигураций UFW NAT кажутся немного неполными по сравнению с более общими правилами фильтрации.

Предыстория: Я использую NAT для некоторого трафика docker/контейнера, чтобы отправить его через туннель политики IPSec с помощью StrongSwan. Без ранее упомянутого правила iptables я могу заставить трафик маршрутизироваться В контейнер из VPN, но трафик, исходящий ИЗ контейнера, не проходит.

eth0 — это мой «публичный» интерфейс IP 1.2.3.4, а eth1 — это мой «частный» интерфейс IP 10.136.0.2.

Вот конфигурация *nat, которая у меня уже есть в файле '/etc/ufw/before.rules' для передачи трафика (за исключением трафика, полученного от docker):

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.1.0/24  -d 10.136.0.0/16 -j MASQUERADE
-A POSTROUTING -s 192.168.1.0/24  -d 172.18.0.0/16 -j MASQUERADE
COMMIT
#

решение1

Если вы уже добавили это iptablesправило вручную, то вы можете найти его правильный формат и позицию для добавления, before.rulesвыполнив:

# sudo iptables -t nat -S
...
-A POSTROUTING -s 172.18.0.0/16 -d 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.136.0.2
...

Связанный контент