Red Hat Training
A Red Hat training course is available for RHEL 8
47.4.4. 使用 nftables 配置目标 NAT
目标 NAT (DNAT)允许您将路由器上的流量重定向到无法从互联网访问的主机。
例如,对于 DNAT,路由器将发送到端口 80
和 443
的传入流量重定向到 IP 地址为 192.0.2.1
的 Web 服务器。
流程
创建一个表:
# nft add table nat
向表中添加
prerouting
和postrouting
链:# nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; } # nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
重要即使您没有向
postrouting
链添加规则,nftables
框架也会要求此链与传出数据包回复相匹配。请注意,您必须将
--
选项传递给nft
命令,以防止 shell 将负优先级值解释为nft
命令的选项。向
prerouting
链中添加一条规则,该规则将到路由器的ens3
接口上端口80
和443
的传入流量重定向到 IP 地址为192.0.2.1
的 Web 服务器:# nft add rule nat prerouting iifname ens3 tcp dport { 80, 443 } dnat to 192.0.2.1
根据您的环境,添加 SNAT 或伪装规则,将从 Web 服务器返回的数据包的源地址改为发送者:
如果
ens3
接口使用动态 IP 地址,请添加一条伪装规则:# nft add rule nat postrouting oifname "ens3" masquerade
如果
ens3
接口使用静态 IP 地址,请添加一条 SNAT 规则。例如,如果ens3
使用198.51.100.1
IP 地址:# nft add rule nat postrouting oifname "ens3" snat to 198.51.100.1
启用数据包转发:
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
其他资源