在 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
提前谢谢了!
UFW是netfilter的接口,它使用iptables进行配置。
这意味着,当您尝试编辑配置文件时,您正在编辑 iptables 规则。因此,您可以在iptables 手册中找到帮助。
每个 iptables 规则做两件事:
在您想知道的规则的情况下,它将匹配任何已经路由发送到接口的数据包
ens3
,并且在 10.100.0.0/24 网络中具有源 IP。一旦匹配,它将被 NAT 到ens3
接口的 IP 地址。转发 - 没有 UFW
我怀疑您在提出问题时做出了假设,并且您没有说出您要解决的实际问题是什么。听起来您无法将网络 10.100.0.0/24 转发到互联网。这个问题感觉像XY 问题
如果你通过 Linux 路由流量,你必须启用 ip forwarding。
要验证是否启用了转发,请运行:
你会得到回报
0
fordisabled
和1
forenabled
。不使用UFW时,您可以通过编辑永久启用它
/etc/sysctl.conf
:上面的命令会将引号中的文本附加到提到的文件中。
为了应用新设置运行:
UFW
尽管上述设置适用于UFW,但坚持使用 ufw 基本配置是明智的。
检查 UFW 配置:
您可能会看到默认
routed
策略是disabled
:现在编辑
/etc/ufw/sysctl.conf
. 此文件中的设置将覆盖/etc/sysctl.conf
上述文件
#net/ipv4/ip_forward=1
中的定位行并删除#
.保存文件并重新加载 ufw:
这次显示详细状态时,您应该会看到默认路由策略从 更改
disabled
为deny
。要允许路由运行:
此推荐将修改
/etc/default/ufw
行,从至
化装舞会
使用上述设置,您的规则
/etc/ufw/before.rules
应该可以工作,但它们必须是 before*filter
。-F
在添加新规则之前刷新规则也是一个好主意-A
。否则,无论何时重新启动 ufw 服务,它都会添加相同规则的另一个副本。应用这些设置后,需要重新加载 ufw:
ufw 状态不会显示 NAT 配置,但可以通过以下方式进行验证
iptables
:POSTROUTING
链条应如下所示:请记住,您的防火墙还需要有一条返回 10.100.0.0/24 网络的路由。