Red Hat Training

A Red Hat training course is available for RHEL 8

7.4.4. 使用 nftables 配置目标 NAT

目标 NAT 可让您将路由器中的流量重新指向无法直接从互联网访问的主机。

以下流程描述了如何将发送到路由器的端口 80443 的传入流量重定向到使用 192.0.2.1 IP 地址的主机。

流程

  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. prerouting 链中添加一条规则,将发送到端口 80443ens3 接口上传入的流量重定向到具有 192.0.2.1 IP 的主机:

    # nft add rule nat prerouting iifname ens3 tcp dport { 80, 443 } dnat to 192.0.2.1
  4. 根据您的环境,添加 SNAT 或伪装规则以更改源地址:

    1. 如果 ens3 接口使用动态 IP 地址,请添加一个伪装规则:

      # nft add rule nat postrouting oifname "ens3" masquerade
    2. 如果 ens3 接口使用静态 IP 地址,请添加 SNAT 规则。例如,如果 ens3 使用 198.51.100.1 IP 地址:

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