Мне необходимо передать трафик 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 для передачи некоторого трафика докеров / контейнеров для отправки через туннель политики IPSec с помощью StrongSwan. Без ранее упомянутого правила iptables я могу получить трафик для маршрутизации В контейнер из VPN, но трафик, полученный из контейнера, падает.
eth0 - мой "общедоступный" интерфейс IP 1.2.3.4, а eth1 - мой "частный" IP-адрес 10.136.0.2.
Вот конфигурация * nat, которая у меня уже есть в файле '/etc/ufw/before.rules', чтобы получить поток трафика (за вычетом трафика из докеров):
*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
#
Если вы уже добавили это 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
...