我有一台 CentOS 7 计算机,该计算机具有一个带 NAT 的接口。我有一台 Windows 8.1 计算机,该计算机具有一个作为 NAT 客户端的接口。两台计算机都位于同一个 IP 网络上
以下是相关的 iptables 条目
配置 1(工作)
-A POSTROUTING -o eth0 -j MASQUERADE
-A FORWARD -i eth0 -j ACCEPT
配置 2(工作)
-A POSTROUTING -o eth0 -j MASQUERADE
-A FORWARD -s 0.0.0.0/0 -i eth0 -j ACCEPT
配置 3 - 所需配置(不起作用)
-A POSTROUTING -o eth0 -j MASQUERADE
-A FORWARD -s x.x.x.x/32 -i eth0 -j ACCEPT
配置 1 和 2 有效。并whatismyipaddress.com
从 Win8.1 机器上的浏览器显示 NAT 机器的地址。所以我知道 NAT 正在运行,并且网关等在 Win8.1 机器上设置正确。
但是当我尝试按照配置 3 限制源 IP 时,我在 Win8.1 机器上失去了互联网连接。是的,我确信源 IP 是正确的。
有什么想法吗?需要更多信息吗?
答案1
如果在情况 3 中您的 FORWARD 策略是 DROP,那么您不允许将返回的流转发回客户端计算机。我会说添加一个-A FORWARD -d x.x.x.x/32 -j ACCEPT
。如果没有看到您的所有规则,我无法确定。
顺便说一句,只使用一个接口并不是一个好主意,但您必须已经知道它。
答案2
-A FORWARD -s x.x.x.x/32 -i eth0 -j ACCEPT
这意味着该x.x.x.x
IP地址将被允许从互联网转发eth0
。
更改eth0
为连接到本地网络的接口。转发表在后路由表之前应用。