20

我有一台带有两个网络接口的 PC:eth0 和 eth1。

eth0 - 具有 192.168.11.X/24 的 IP。

eth1 - 具有 192.168.130.X/24 的 IP。eth1 有互联网连接。

当我尝试连接到互联网时,我的操作系统如何知道要使用哪个接口?它是否遍历所有默认网关?它是否有每个接口提供的任何缓存?Windows和Linux之间的行为有什么区别吗?

4

2 回答 2

18

我将回答房子的 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

我省略了几列,但基本上,“Destination”下的“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

这将暂时解决它。要使其永久化,请编辑您的接口文件:

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
于 2012-08-24T13:09:47.440 回答
3

您要询问的功能是路由表,即主机已知的目的地列表。

当操作系统需要转发一个数据包时,它会检查这个列表并选择最合适的一个(从特定目的地到一般目的地)。例如:

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 地址。

于 2012-08-24T12:52:37.850 回答