同一服务器中两个 IP 之间的 iptables 端口转发问题

同一服务器中两个 IP 之间的 iptables 端口转发问题

服务器有两个 IP 地址 A 和 B (默认网关是 B)我想将端口 443 转发到 IP C:443,这样我就可以连接 A:443 ----到------c:443

如果我使用(A:443 NAT 到 C:443)它不起作用

-A PREROUTING -d A/32  -p tcp -m tcp --dport 443 -j  DNAT --to-destination C:443
-A POSTROUTING -d C/32 -p tcp -m tcp --dport 443 -j SNAT --to-source A:443

如果我使用(B:443 NAT 到 C:443),我可以连接 B:443,但这不是我想要的

  -A PREROUTING -d B/32  -p tcp -m tcp --dport 443 -j  DNAT --to-destination C:443
  -A POSTROUTING -d C/32 -p tcp -m tcp --dport 443 -j SNAT --to-source B:443

即使我使用(A:443 NAT 到 B:443 B:443 到 C:443)它也不起作用

-A PREROUTING -d A/32  -p tcp -m tcp --dport 443 -j  DNAT --to-destination B:443
-A POSTROUTING -d B/32 -p tcp -m tcp --dport 443 -j SNAT --to-source A:443

-A PREROUTING -d B/32  -p tcp -m tcp --dport 443 -j  DNAT --to-destination C:443
-A POSTROUTING -d C/32 -p tcp -m tcp --dport 443 -j SNAT --to-source B:443

所以我该怎么做才能让它工作,谢谢

答案1

如果我理解正确的话(如果您想将端口 443 从 A 转发到 C),您应该像这样配置您的 iptables:

*nat
-A PREROUTING -d A/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination C:443
-A POSTROUTING -p tcp -m tcp --dport 443 -j MASQUERADE

另外,您还应该检查 iptables 配置,看是否-A FORWARD -j REJECT --reject-with icmp-host-prohibited有完全禁用转发的规则。并且您应该已net.ipv4.ip_forward在 中启用sysctl

相关内容