Red Hat Training

A Red Hat training course is available for RHEL 8

7.4.3. 使用 nftables 配置源 NAT

在路由器中,源 NAT(SNAT)可让您将通过接口发送的数据包 IP 改为专门的 IP 地址。

以下流程描述了如何将通过 ens3 接口离开路由器的数据包源 IP 替换为 192.0.2.1

流程

  1. 创建一个表:

    # nft add table nat
  2. 在表中添加 preroutingpostrouting 链:

    # nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; }
    # nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
    重要

    即使您没有向 postrouting 链添加规则,nf tables 框架也要求此链与传出数据包回复匹配。

    请注意,您必须将 -- 选项传递给 nft 命令,以避免 shell 将负优先级值解析为 nft 命令的选项。

  3. postrouting 链中添加一条规则,通过 ens3 将传出数据包的源 IP 替换为 192.0.2.1

    # nft add rule nat postrouting oifname "ens3" snat to 192.0.2.1

其它资源

  • Lin:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/getting-started-with-nftables_configuring-and-managing-networking#forwarding-incoming-packets-on-a-specific-local-port-to-a-different-host_configuring-port-forwarding-using-nftables[Forwarding 在特定本地端口上传入到不同主机的数据包]