Menu Close
Settings Close

Language and Page Formatting Options

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

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

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

先决条件

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

流程

  1. 创建一个名为 nat 、具有 ip 地址系列的表:

    # 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 链添加一条规则,该规则将端口 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 nat postrouting 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