Мне нужно получить трафик 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
...