# 开启 IP 转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 添加永久性 IP 转发配置
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p
# 添加 iptables 转发规则
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 13.91.51.239:80 iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 13.91.51.239:443 iptables -t nat -A POSTROUTING -j MASQUERADE
# 保存 iptables 规则
iptables-save > /etc/sysconfig/iptables
# 重启 iptables 服务
service iptables restart
在 *filter 表中,FORWARD 链的规则是拒绝所有转发流量:
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
这会阻止所有的转发流量,使得 NAT 转发无法工作。需要修改以下几点:
首先删除阻止转发的规则:
iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited
添加允许转发的规则:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT # 假设 eth0 是你的网络接口
NAT 表的设置是正确的:
PREROUTING 链正确配置了 80 和 443 端口的转发
POSTROUTING 链正确配置了 MASQUERADE
完成修改后,可以用以下命令保存规则:
service iptables save
然后重启 iptables 服务:
service iptables restart
修改完成后,你可以通过以下方式测试转发是否生效:
# 测试到目标服务器的连接
telnet 13.91.51.239 80 telnet 13.91.51.239 443
# 查看连接状态
netstat -nat | grep :80 netstat -nat | grep :443