在 Ubuntu 14.04 上配置两个网络接口

在 Ubuntu 14.04 上配置两个网络接口

我的电脑运行的是 Ubuntu Server 14.04,同时连接到两个网络(即本地网络 A,IP 为 192.168.1.30,可以访问互联网;另一个本地网络 B,IP 为 10.73.9.30,无法访问互联网)。大多数流量应该通过网络 A,但是,我还需要我的电脑与网络 B 中的其他计算机进行通信(例如,10.84.1.8 - 是的,实际上不在网络 B 的同一子网中)。我已经metric在文件中进行了/etc/network/interfaces设置,以便可以设置两个网关,但似乎只有第一个网关有效,网络 B 的其他子网中的计算机(即 10.84.1.8)根本无法访问我的电脑(10.73.9.30)。

有趣的是,网络 B 的同一子网中的计算机(例如 10.73.9.3)可以毫无问题地访问我的计算机,而 10.84.1.8 也可以访问 10.73.9.3(仅连接到网络 B)。因此,我认为我的计算机出现网络问题的原因是它连接到了两个网络。这是我的/etc/network/interfaces文件:

auto lo
iface lo inet loopback

auto em1
iface em1 inet static
metric 0
address 192.168.1.30
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1

auto em2
iface em2 inet static
metric 1
address 10.73.9.30
netmask 255.255.255.0
gateway 10.73.9.1

如何让计算机使用 10.73.9.1 作为10\.*\.*\.*IP 地址的默认网关?

答案1

您需要添加一条到 10.0.0.0/8 的路由:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.73.9.1 dev em2(未经测试)

为了使其永久生效,请将其添加到 em2 部分中的接口配置中:

up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.73.9.1 dev em2

只是为了理解:您的计算机知道在本地网络中将数据包发送到哪里。对于其他所有事情,他都需要路由。如果没有更具体的路由,则使用默认路由。现在您已告诉他通过另一个路由器发送该子网的所有数据包,该路由器可能知道将数据包发送到哪里。(或知道还有谁可能知道。)

相关内容