我正在尝试操作 2 个子网,范围内的第一个子网192.168.0.0/24
可以自由访问它想要的任何东西,包括第二个子网上的机器。范围内的第二个子网10.0.0.0/24
仅限于仅有的能够访问外部世界。我不希望有源的机器10.0.0.0/24
能够访问192.168.0.0/24
范围内的机器,但我希望它能够到外面去。
除此之外,在该192.168.0.0/24
范围内我还想要 2 个网关,第一个是默认网关(当前为 Ubuntu VM 的形式),它通过 vpn 路由流量,其地址为,192.168.0.250
第二个网关(面向互联网的 TP-Link 无线路由器)位于192.168.0.1
(也是该范围的 DHCP 和 DNS 服务器192.168.0.0/24
)
我还有第三个网关用于桥接两个子网,另一个带有 2 个 NICS 的 Ubuntu VM,第一个是192.168.0.251
,第二个是10.0.0.1
现在我已经解释了我想要的网络,下面是我的设置和我所经历的情况:
192.168.0.250 上的 Ubuntu 虚拟机
路由表192.168.0.250
如下:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.8.0.1 128.0.0.0 UG 0 0 0 tun0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 192.168.0.251 255.255.255.0 UG 0 0 0 eth0
10.8.0.0 * 255.255.0.0 U 0 0 0 tun0
128.0.0.0 10.8.0.1 128.0.0.0 UG 0 0 0 tun0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
. 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
我通过添加路线
ip rule add from 192.168.0.0/24 table default
ip route add 10.0.0.0/24 via 192.168.0.251
ip rule add from 10.0.0.0/24 table sandboxgateway
ip route add default via 192.168.0.1 dev eth0 table sandboxgateway
如果我删除这两sandboxgateway
行,我可以访问10.0.0.1
,但10.0.0.X
范围内的任何东西都通过 VPN 访问互联网,这不是我想要的。它的 iptable 看起来像这样:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
192.168.0.251/10.0.0.1 上的 Ubuntu 虚拟机
路由表192.168.0.251(eth0)/10.0.0.1(eth1)
如下:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
default 192.168.0.250 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 * 255.255.255.0 U 0 0 0 eth1
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
它的 iptable 如下所示:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- 10.0.0.0/24 192.168.0.0/24
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
问题
我遇到的问题是,虽然我的机器在可以通过或作为网关192.168.0.2
访问外部世界,我的机器在 也可以访问外部世界而无需访问 的任何内容,但我的机器在无法访问或,并且来自 Windows 命令提示符的结果是192.168.0.1
192.168.0.250
10.0.0.10
192.168.0.X
192.168.0.2
10.0.0.1
10.0.0.10
tracert
跟踪到 10.0.0.1 的路由,最多 30 个跳数
1 <1 ms <1 ms <1 ms 192.168.0.250
2 * * * Request timed out.
3 * * * Request timed out.
为什么192.168.0.250
没有路由到192.168.0.251
??
如果我提供的信息太多或太少,请原谅,请询问是否需要任何其他详细信息来回答这个问题。
答案1
iptables 数据包过滤器会丢弃 10.0.0.0/8 ips 到 192.168.0.0/8 IPs 的响应。在 DROP 规则之前添加一条规则,允许已建立的从 10.0 到 192.168 的数据包:
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
这应该可以解决问题。如果不行,请删除 DROP 规则以检查这是否真的是问题的根源。如果是,您可能需要构建更复杂的规则集。