我需要在 Ubuntu 18.04 服务器的两个接口之间获取 NAT(SNAT)流量。我一直在尝试使用“/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 配置的手册页似乎有些欠缺。
背景:我正在使用 StrongSwan 对一些 docker/容器流量进行源 NAT,以便通过 IPSec 策略隧道发送。如果没有前面提到的 iptables 规则,我可以让流量从 VPN 路由到容器中,但来自容器的流量会失败。
eth0 是我的“公共”接口 IP 1.2.3.4,eth1 是我的“私有”接口 IP 10.136.0.2
这是我在“/etc/ufw/before.rules”文件中已有的 *nat 配置,用于使流量流动(减去 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
...