我正在尝试使用iptables将端口443转发到不同的服务器。 什么可以解释这不工作? 我已经启用net.ipv4.ip_forward。
这是我使用的代码。 我没有其他的iptables规则:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j DNAT --to 1.2.3.4:443 iptables -A FORWARD -p tcp -d 1.2.3.4 --dport 443 -j ACCEPT
如果您的默认转发策略是DROP,那么您还需要接受返回的stream量:
iptables -A FORWARD -p tcp -s 1.2.3.4 --sport 443 -j ACCEPT
你应该保证这一点,所以如果你的方框1.2.3.4被破坏,至less没有伪造的数据包可以通过你的网关使用源端口443。
IPTABLES=/sbin/iptables [ ... ] $IPTABLES -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j DNAT --to 1.2.3.4:443 $IPTABLES -I FORWARD -p tcp ! --syn -m state --state NEW -j DROP $IPTABLES -A FORWARD -p tcp -d 1.2.3.4 --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT $IPTABLES -A FORWARD -p tcp -s 1.2.3.4 --sport 443 -m state --state ESTABLISHED -j ACCEPT