我有一台带有两个网络接口的PC:eth0和eth1。
eth0 - ip为192.168.11.X / 24.
eth1 - ip为192.168.130.X / 24。 eth1具有互联网连接。
当我尝试连接互联网时,我的操作系统如何知道使用哪个界面?它是否遍历所有默认网关?它是否具有每个接口提供的缓存? Windows和Linux之间的行为有什么不同吗?
答案 0 :(得分:16)
我将回答Linux方面的问题(至少对于基于Debian的系统,例如Ubuntu,因为此时用户更常见):
在命令行中键入以下内容:
route -n
您应该会看到“路由表”,如下所示:
Destination Gateway Genmask ... Iface
0.0.0.0 192.168.11.254 0.0.0.0 ... eth0
169.254.0.0 0.0.0.0 255.255.0.0 ... eth0
192.168.11.0 0.0.0.0 255.255.255.0 ... eth0
192.168.130.0 0.0.0.0 255.255.255.0 ... eth1
我省略了几列,但基本上,“目标”下的“0.0.0.0”行是确定默认路径所在位置的行。换句话说,所有流量都不会流向其他行中的任何其他子网(google.com,facebook.com,等等)。
如果不正确(例如在上表中,“eth1”是您想要上网的卡),您应该更改默认路线:
sudo route del default
sudo route add default gw 192.168.130.254 netmask 255.255.255.0
这将解决它现在。要使其永久化,请编辑interfaces文件:
sudo gedit /etc/network/interfaces
将其编辑为类似以下内容(根据具体情况进行必要更改):
auto eth0
iface eth0 inet dhcp
up route del default
auto eth1
iface eth1 inet dhcp
up route add default gw 192.168.130.254 netmask 255.255.255.0
然后重新启动网络,看看是否有诀窍:
sudo /etc/init.d/networking restart
答案 1 :(得分:2)
您要问的功能是路由表,主机已知的目的地列表。
当操作系统需要转发数据包时,它会检查此列表并选择最合适的一个(从特定目的地到普通目的地)。例如:
192.0.2.0/28 - 192.0.2.1 via eth1
198.51.100.0/27 - 198.51.100.1 via eth0
0.0.0.0/0 - 203.0.113.1 via eth0
请注意最后一个目的地:它将匹配任何IPv4地址。