目标:将发往您服务器某个端口(例如 10800)的连接,转发到 1.1.1.1:443。
第 1 步:允许 UFW 进行流量转发
首先,我们需要修改 UFW 的主策略,允许它转发数据包。
编辑 UFW 的主配置文件:
Bash
sudo nano /etc/default/ufw找到
DEFAULT_FORWARD_POLICY这一行,将它的值从DROP修改为ACCEPT:Ini, TOML
# 将这里的值从 "DROP" 改为 "ACCEPT" DEFAULT_FORWARD_POLICY="ACCEPT"保存并关闭文件。
第 2 步:添加 NAT 转发规则
接下来,我们将具体的转发规则添加到 UFW 的规则文件中。这个文件会在 UFW 加载用户自定义规则之前被读取。
编辑
before.rules文件:Bash
sudo nano /etc/ufw/before.rules在文件的最顶部,在
*filter这一行之前,添加以下代码块。这个代码块定义了 NAT (网络地址转换) 规则。Ini, TOML
# ------------------------------------------------------------------ # NAT 规则 (用于端口转发) # 将此代码块放在文件的最顶部 *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] # 步骤 A: 将访问本机 10800 端口的 TCP 流量,目标地址转向 1.1.1.1:443 (DNAT) -A PREROUTING -p tcp --dport 10800 -j DNAT --to-destination 1.1.1.1:443 # 步骤 B: 将来自转发连接的出口流量的源IP伪装成本机IP (MASQUERADE/SNAT) # 这样,目标服务器 (1.1.1.1) 才能将响应数据正确地发回给您的服务器 -A POSTROUTING -d 1.1.1.1 -p tcp --dport 443 -j MASQUERADE COMMIT # NAT 规则结束 # ------------------------------------------------------------------ # 文件的其余部分 (例如 *filter) 保持不变 *filter :ufw-before-input - [0:0] ...保存并关闭文件。
第 3 步:重新加载 UFW 使配置生效
让 UFW 重新加载所有规则,包括我们刚刚修改的部分。
Bash
sudo ufw reload
如果提示需要确认,请输入 y。您也可以使用 sudo ufw disable && sudo ufw enable 来实现同样的效果。
至此,您的端口转发已经配置完毕!
如何验证规则 (iptables 后端)
因为您的后端是 iptables,您可以使用 iptables 命令来直接查看 NAT 规则是否被成功加载。
Bash
sudo iptables -t nat -L -n -v
命令解释:
-t nat: 表示查看nat表。-L: 列出所有规则。-n: 以数字形式显示 IP 地址和端口,不做反向解析,速度更快。-v: 显示详细信息,包括数据包和字节计数器。
在命令的输出中,您应该能在 PREROUTING 链中看到您的 DNAT 规则,在 POSTROUTING 链中看到 MASQUERADE 规则。当有流量通过这条转发规则时,pkts (数据包) 和 bytes (字节) 计数器会增加,这是判断规则是否在工作的最佳方式。
总结:完全不需要更换或禁用 UFW。只需按照上述步骤,通过修改 UFW 的配置文件,就能安全、稳定地实现您想要的端口转发功能,并且完全兼容您现有的 iptables 后端。
评论