不能同时使用两个网络接口

我有个问题。 首先,我想在Ubuntu 14.04上设置一个服务器。 我有2个接口:eth0用于dhcp服务器,eth1用于Internet连接。 但如果我同时连接到两个网络,PC上就没有互联网。 所以我必须在服务器和互联网之间做出选择。 那太糟糕了,有人能告诉我如何解决这个问题吗?

的/ etc /网络/接口:

auto lo eth0 eth1 iface lo inet loopback iface eth0 inet static address 172.16.1.100 netmask 255.255.255.0 broadcast 172.16.1.255 gateway 172.16.1.254 

sudo路线输出:

 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.0.1 0.0.0.0 UG 0 0 0 eth1 192.168.0.0 * 255.255.255.0 U 1 0 0 eth1 

UPD:ifconfig输出:

 eth0 Link encap:Ethernet HWaddr 90:e6:ba:46:1d:50 inet6 addr: fe80::92e6:baff:fe46:1d50/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:1110 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:184287 (184.2 KB) eth1 Link encap:Ethernet HWaddr 00:04:75:98:5f:da inet addr:192.168.0.101 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::204:75ff:fe98:5fda/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:14498 errors:0 dropped:0 overruns:2 frame:0 TX packets:13096 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:9710708 (9.7 MB) TX bytes:1840400 (1.8 MB) Interrupt:18 Base address:0x4c00 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:4398 errors:0 dropped:0 overruns:0 frame:0 TX packets:4398 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:527890 (527.8 KB) TX bytes:527890 (527.8 KB) 

配置ifconfig的输出和我给第一个答案给出的注释,我认为问题与你在/etc/network/interfaces配置NIC的方式有关。

由于您在/etc/network/interfaces没有针对eth1的任何特定配置,我认为您的调制解调器通过DHCP向您的服务器提供IP信息。 根据route输出,您将获得指向调制解调器的默认网关,以便连接到Internet。

但是在eth0/etc/network/interfaces文件中,您还配置了默认网关(语句gateway 172.16.1.254 )。

系统上不能有两个默认网关。 在eth1上分配默认网关会禁用eth0的静态配置,因为ifconfig输出中没有用于eth0的 IP以及Internet工作原因和内部网络不再存在的原因。

您必须删除线路gateway 172.16.1.254然后重试。

当然,通过这样做,如果内部LAN上有多个子网,您将无法再访问它们。 除非您在服务器上配置所有这些子网的静态路由:

sudo route add -net ABCD gw 1​​72.16.1.254

您可以在保存在/etc/network/if-up.d下的脚本中添加route命令,以便在每次接口启动时运行。

根据我对您的post的理解,您通过eth1连接到Internet,并通过eth0连接到您的内部网络。 然后,您的服务器将扮演DHCP服务器和默认网关的角色,让您的PC上网。

首先,在PC上,检查他们是否已正确接收所有DHCP设置,包括网关。 从你的问题,我认为它应该是172.16.1.100

其次,请确保您的eth1与Internet连接良好且配置良好; 这显然取决于您的ISP。

最后,最重要的操作是,您必须在服务器上的两个接口之间启用IP转发。 如果没有这个,数据包将不会在您的PC和Internet之间路由:

手动设置:

sudo echo 1> / proc / sys / net / ipv4 / ip_forward

要在引导时自动设置IP转发标志,请取消注释/etc/sysctl.conf #net.ipv4.ip_forward=1

您还必须确保没有阻止流量的IPtables防火墙规则。 做:

iptables -L -n

获取规则列表(如果有)。 我会先禁用所有防火墙规则来尝试此设置:

iptables -F

我有类似的问题,但我的interfaces文件是空的,如下所示:

 # The loopback network interface auto lo iface lo inet loopback 

我设法通过移动/删除找到的有线连接文件来解决问题: /etc/NetworkManager/system-connections/Wired connection 1

重启后,能够连接到两个网络。