iptables 是 Linux 系统中用于配置内核防火墙的一个命令行工具。使用 iptables 可以实现端口转发(Port Forwarding),即将一个端口的流量重定向到另一个端口。以下是实现端口转发的基本步骤:
首先,确保你的系统启用了 IP 转发功能。编辑 /etc/sysctl.conf 文件,找到并修改以下行:
net.ipv4.ip_forward=1
然后运行以下命令使更改生效:
sudo sysctl -p
使用 iptables 命令配置端口转发规则。假设你想将外部端口 8080 的流量转发到内部服务器的端口 80,可以使用以下命令:
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
解释:
-t nat:指定使用 NAT 表。-A PREROUTING:在 PREROUTING 链添加规则。-p tcp:指定协议为 TCP。--dport 8080:指定目标端口为 8080。-j DNAT:指定目标地址转换(Destination Network Address Translation)。--to-destination 192.168.1.100:80:指定目标地址和端口。为了确保重启后规则仍然有效,需要保存 iptables 规则。不同的 Linux 发行版可能有不同的方法来保存规则。
sudo iptables-save > /etc/iptables/rules.v4
sudo service iptables save
或者使用 firewall-cmd(如果使用的是 firewalld):
sudo firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.1.100
sudo firewall-cmd --reload
使用以下命令验证规则是否已正确添加:
sudo iptables -t nat -L -v -n
你应该能看到类似以下的输出,表明规则已成功添加:
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 to:192.168.1.100:80
通过以上步骤,你应该能够成功配置 iptables 实现端口转发。