Red Hat Training

A Red Hat training course is available for RHEL 8

7.7.2. 将特定本地端口上传入的数据包转发到不同主机

您可以使用目标网络地址转换(DNAT)规则将本地端口上传入的数据包转发到远程主机。这可让互联网中的用户访问使用专用 IP 地址在主机上运行的服务。

这个步骤描述了如何将本地端口 443 中传入的 IPv4 数据包转发到 IP 地址为 192.0.2.1 的远程系统上的相同端口号。

先决条件

  • 您以 root 用户身份登录应该转发数据包。

流程

  1. 使用 ip 地址系列创建一个名为 nat 的表:

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

    # nft -- add chain ip nat prerouting { type nat hook prerouting priority -100 \; }
    # nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
    注意

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

  3. prerouting chain 中添加一条规则,将端口 443 上传入的数据包重新指向 192.0.2.1 上的同一端口:

    # nft add rule ip nat prerouting tcp dport 443 dnat to 192.0.2.1
  4. postrouting 链添加一条规则伪装出站流量:

    # nft add rule ip daddr 192.0.2.1 masquerade
  5. 启用数据包转发:

    # echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf
    # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf