我必须通过具有两个网卡的 Linux 服务器对 IP 为 10.10.10.10 的 Windows PC 进行 NAT。网卡的 IP 地址为 20.20.20.50(连接到外部网络)和 10.10.10.9。第二个网卡连接到 Windows PC。我的要求是我应该能够从外部网络访问 Windows PC,所以我需要将 20.20.20.40(这是外部网络应该能够访问 Windows PC 的 IP)进行 NAT 到 10.10.10.10。
我应该如何在 Linux 服务器上设置 iptables 来实现这一点?
答案1
@John Siu 只是部分正确——虽然他指出的步骤是使转发工作所必需的,但神奇的 NAT 酱是绝对必要的,因为 20.20.20.50 是一个真正的 IP 地址,而 10.10.10.x 不是。
对于出站连接(听起来你可能已经拥有了)
假设外部接口是 eth0,内部接口是 eth1,您还需要一条规则,例如
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
或者类似,但控制更加严格
/sbin/iptables -t nat -A POSTROUTING -s 10.10.10.10 -o eth0 -j SNAT --to 20.20.20.40
用于从世界到您的 PC 的入站连接
/sbin/iptables -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.10.10.10:80
这将允许来自世界各地的 TCP 端口 80 上的请求进入您的 Windows PC。(当然,您可以根据需要修改端口和协议)