对非直连网络进行 NAT

对非直连网络进行 NAT

在 before.rules 的顶部添加以下 UFW 配置(除了所有相应的先决条件,例如在平台本身上启用 IP 路由、将默认转发策略从 DROP 更改为 ACCEPT 以及在 UFW 配置中启用 IP 转发):

*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.100.0.0/24 -o ens3 -j MASQUERADE
COMMIT

子网 10.100.0.0/24 是否必须直接地连接到运行该 UFW 的 Ubuntu VM 的任何接口?如果是,我该如何配置 UFW 以将非直接连接的接口 NAT 到 Internet?例如:

UserA--10.100.0.x/24---10.100.0.1/24--(Router1)--1.1.1.1/24-----1.1.1.2/24--(UFW)--Internet

提前谢谢了!

答案1

联邦水务局是一个接口网络过滤器它使用iptables用于配置。
这意味着,当您尝试编辑配置文件时,您正在编辑 iptables 规则。因此,您可以在iptables 手册

每个 iptables 规则都会做两件事:

  1. 匹配 IP 数据包
  2. 对数据包执行操作

就您想知道的规则而言,它将匹配任何已路由到接口发送的数据包ens3,并且源 IP 在 10.100.0.0/24 网络中。一旦匹配,它将被 NAT 到ens3接口的 IP 地址。

转发 - 无 UFW

我怀疑你在提问时做出了假设,并没有说明你试图解决的实际问题是什么。听起来你无法将网络 10.100.0.0/24 转发到互联网。这个问题听起来像XY问题
如果您通过 Linux 路由流量,则必须启用 IP 转发。
要验证转发是否已启用,请运行:

echo /proc/sys/net/ipv4/ip_forward

您将获得0disabled1回报enabled

什么时候不是使用联邦水务局您可以通过编辑来永久启用它/etc/sysctl.conf

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf

上述命令将把引号中的文本附加到上述文件中。
要应用新设置,请运行:

sudo sysctl -p

联邦水务局

尽管上述设置适用于联邦水务局坚持使用 ufw 基本配置是明智之举。
检查 UFW 配置:

sudo ufw status verbose

您可能会看到默认routed策略是disabled

Default: deny (incoming), allow (outgoing), disabled (routed)

现在编辑/etc/ufw/sysctl.conf。此文件中的设置将覆盖/etc/sysctl.conf
上述文件中的定位行#net/ipv4/ip_forward=1并删除#
保存文件并重新加载 ufw:

sudo ufw reload

这次显示详细状态时,您应该看到默认路由策略从 更改disableddeny

要允许路由运行:

sudo ufw default allow routed

此命令将修改/etc/default/ufw行,从

DEFAULT_FORWARD_POLICY="DROP"

DEFAULT_FORWARD_POLICY="ACCEPT"

化装舞会

使用上述设置,您的规则/etc/ufw/before.rules应该可以工作,但它们必须在之前。在添加新规则之前*filter刷新规则也是一个好主意。否则,任何时候重新启动 ufw 服务,它都会添加同一规则的另一个副本。-F-A

*nat 
:POSTROUTING ACCEPT [0:0]
-F
-A POSTROUTING -s 10.100.0.0/24 -o ens3 -j MASQUERADE
COMMIT

应用这些设置后,需要重新加载 ufw:

sudo ufw reload

ufw 状态不会显示 NAT 配置,但可以通过以下iptables方式进行验证:

sudo iptables -t nat -L -v

并且该POSTROUTING链应如下所示:

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
0     0 MASQUERADE  all  --  any    ens3    10.100.0.0/24        anywhere

请记住,您的防火墙还需要有一条返回 10.100.0.0/24 网络的路由。

相关内容