我有一个问题。首先,我想在 Ubuntu 14.04 上设置一个服务器。我有 2 个接口:eth0 用于 dhcp 服务器,eth1 用于互联网连接。但是如果我同时连接到两个网络,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 route 输出:
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)
答案1
配置输出ifconfig
和对我的第一个答案的评论,我认为问题与您在中配置 NIC 的方式有关/etc/network/interfaces
。
由于您没有任何特定的配置eth1在 中/etc/network/interfaces
,我假设您的调制解调器通过 DHCP 向您的服务器提供 IP 信息。根据输出route
,您将获得指向调制解调器的默认网关,从而指向 Internet。
但你的/etc/network/interfaces
档案上eth0您还配置了默认网关(声明gateway 172.16.1.254
)。
系统上不能有两个默认网关。eth1禁用静态配置eth0,为什么没有 IPeth0在ifconfig
输出中以及为什么 Internet 工作而内部网络不再工作。
您必须删除该线gateway 172.16.1.254
并重试。
当然,如果内部 LAN 上有多个子网,那么你将无法再访问它们。除非你在服务器上为所有这些子网配置静态路由:
sudo route add -net ABCD gw 172.16.1.254
route
您可以在保存的脚本中添加该命令/etc/network/if-up.d
,以便在每次接口启动时运行该命令。
答案2
据我了解,您正在通过以下方式连接到互联网:eth1并通过eth0. 然后您的服务器将充当 DHCP 服务器和您的 PC 访问互联网的默认网关的角色。
首先,在 PC 上检查它们是否正确接收了所有 DHCP 设置,包括网关。根据您的问题,我假设它应该是 172.16.1.100
其次,确保您的eth1是否已良好连接至互联网且配置良好;这显然取决于您的 ISP。
最后,最重要的操作是,您必须在服务器上的两个接口之间启用 IP 转发。如果没有这个,数据包将不会在您的 PC 和互联网之间路由:
手动设置:
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
要在启动时自动设置 IP 转发标志,请取消#net.ipv4.ip_forward=1
注释/etc/sysctl.conf
您还必须确保没有 IPtables 防火墙规则阻止流量。请执行以下操作:
iptables -L -n
获取规则列表(如果有)。我将首先尝试此设置,禁用所有防火墙规则:
iptables -F
答案3
我遇到了类似的问题,但是我的接口文件是空的,如下所示:
# The loopback network interface
auto lo
iface lo inet loopback
我设法通过移动/删除找到的有线连接文件来解决该问题:
/etc/NetworkManager/system-connections/Wired connection 1
重启后,就能连接到两个网络。