Linux 上多个静态网络接口的问题

Linux 上多个静态网络接口的问题

我创建了 2 个静态接口,eth0 和 eth1。我的/etc/network/interfaces文件如下所示。

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# This is an autoconfigured IPv6 interface
auto eth0
iface eth0 inet static
#iface eth0 inet static
address 192.168.2.42
netmask 255.255.252.0
gateway 192.168.0.11
dns-nameserver 192.168.1.7

auto eth1
iface eth1 inet static
address 192.168.2.44
netmask 255.255.252.0
gateway 192.168.0.11
dns-nameserver 192.168.1.7

eth0 运行正常,我可以从网络上的另一台机器 ping eth1 的 IP。问题是我无法通过 eth1 ping 任何其他机器:

aneesh@worker42:~$ ping -Ieth0 -c5 192.168.1.15
PING 192.168.1.15 (192.168.1.15) from 192.168.2.42 eth0: 56(84) bytes of data.
64 bytes from 192.168.1.15: icmp_seq=1 ttl=64 time=0.140 ms
64 bytes from 192.168.1.15: icmp_seq=2 ttl=64 time=0.131 ms
64 bytes from 192.168.1.15: icmp_seq=3 ttl=64 time=0.149 ms
64 bytes from 192.168.1.15: icmp_seq=4 ttl=64 time=0.153 ms
64 bytes from 192.168.1.15: icmp_seq=5 ttl=64 time=0.152 ms

--- 192.168.1.15 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3997ms
rtt min/avg/max/mdev = 0.131/0.145/0.153/0.008 ms
aneesh@worker42:~$ ping -Ieth1 -c5 192.168.1.15
PING 192.168.1.15 (192.168.1.15) from 192.168.2.44 eth1: 56(84) bytes of data.
From 192.168.2.44 icmp_seq=1 Destination Host Unreachable
From 192.168.2.44 icmp_seq=2 Destination Host Unreachable
From 192.168.2.44 icmp_seq=3 Destination Host Unreachable
From 192.168.2.44 icmp_seq=4 Destination Host Unreachable
From 192.168.2.44 icmp_seq=5 Destination Host Unreachable

--- 192.168.1.15 ping statistics ---
5 packets transmitted, 0 received, +5 errors, 100% packet loss, time 4023ms
pipe 3

我可以192.168.1.44从以下位置 ping 通192.168.1.15

aneesh@aneesh:~$ ping -c5 192.168.1.44
PING 192.168.1.44 (192.168.1.44) 56(84) bytes of data.
64 bytes from 192.168.1.44: icmp_seq=1 ttl=64 time=0.146 ms
64 bytes from 192.168.1.44: icmp_seq=2 ttl=64 time=0.192 ms
64 bytes from 192.168.1.44: icmp_seq=3 ttl=64 time=0.178 ms
64 bytes from 192.168.1.44: icmp_seq=4 ttl=64 time=0.177 ms
64 bytes from 192.168.1.44: icmp_seq=5 ttl=64 time=0.174 ms

--- 192.168.1.44 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3996ms
rtt min/avg/max/mdev = 0.146/0.173/0.192/0.019 ms

以下是 的输出ifconfig

aneesh@worker42:~$ ifconfig 
eth0      Link encap:Ethernet  HWaddr 08:00:27:0f:0b:38  
          inet addr:192.168.2.42  Bcast:192.168.3.255  Mask:255.255.252.0
          inet6 addr: 2001:df0:6000:0:a00:27ff:fe0f:b38/64 Scope:Global
          inet6 addr: fe80::a00:27ff:fe0f:b38/64 Scope:Link
          inet6 addr: 2001:df0:6000:0:397f:1b8f:468a:9424/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:10086 errors:0 dropped:1422 overruns:0 frame:0
          TX packets:524 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1190111 (1.1 MB)  TX bytes:63594 (63.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:4c:fd:42  
          inet addr:192.168.2.44  Bcast:192.168.3.255  Mask:255.255.252.0
          inet6 addr: fe80::a00:27ff:fe4c:fd42/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:2448 (2.4 KB)

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:21 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2352 (2.3 KB)  TX bytes:2352 (2.3 KB)

路由表:

aneesh@worker42:~$ sudo route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.11    0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.252.0   U     0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.252.0   U     0      0        0 eth1

该机器是运行 Ubuntu 13.10 的 VirtualBox VM。该 VM 有 2 个桥接网络适配器 eth0 和 eth1。

更新:

我将 eth1 的网络适配器更改为“仅主机”,将 eth1 的 IP 更改为 virtualbox 的 IP(通过 dhcp):192.168.56.101。之后,我能够 ping 通 eth1。为什么当 eth1 是 IP 为 192.168.2.42 的桥接适配器时,我无法执行此操作?

答案1

通常情况下,如果您希望多个物理接口(例如 eth0 和 eth1)连接到同一个 LAN 段(一组交换机中的同一个 VLAN),则应使用第 2 层链路聚合(在 Linux 中,它被称为粘合),而不是两个分别具有自己 IP 地址的独立接口。

如果要将多个 IP 地址分配给同一个 LAN IP 子网,则应使用逻辑 IP 子接口(eth0、eth0:1、eth0:2 等)在同一个基本接口上(如果是单个物理接口,则为 ethX;如果是链路聚合接口集,则为 bondX)。

至于您的原始设置,将两个单独的物理接口连接到同一个 VLAN 和 IP 子网存在多个问题,每个接口都有来自同一 IP 子网的自己的 IP 地址。基本问题是,两个接口上的相同目标具有相同的 IP 路由,但内核只会使用其中一个发送出站数据包,无论您尝试使用哪个源 IP 地址。并且使用哪个接口将取决于随机因素(例如,哪个接口最先/最后启动)。此外,两个物理接口都将响应两个 IP 地址的 ARP 请求,这又意味着结果将是随机的(哪个数据包首先到达请求者)。这种随机性通常不是一件好事,可能会导致某些网络设备出现问题。

答案2

我可以看到 eth0 也获得了 ipv6,但 eth1 没有,因此连接有问题,eth1 也收到了 0.0 B。我不知道它是物理机器还是虚拟机。
对于物理机器,我会检查连接 eth1 的电缆。我还会检查:
cat /sys/class/net/eth1/operstate
它应该是向上,如果不是,则执行以下操作:sudo ifup eth1

相关内容