我正在运行带有两个板载 NIC 的 Ubuntu Server 16.04。Ubuntu 可以看到这两个卡,但 eth0 和 eth1 都只能从一个物理接口传递流量,尽管它们是单独配置的(我认为)。信息如下:
lshw -C network
*-network
description: Ethernet interface
product: 82579LM Gigabit Network Connection
vendor: Intel Corporation
physical id: 19
bus info: pci@0000:00:19.0
logical name: eth0
version: 04
serial: 54:be:f7:65:9a:9b
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 33MHz
capabilities: pm msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=3.2.6-k duplex=full firmware=0.13-4 ip=172.22.1.112 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
resources: irq:26 memory:f7e00000-f7e1ffff memory:f7e39000-f7e39fff ioport:f080(size=32)
*-network
description: Ethernet interface
product: 82574L Gigabit Network Connection
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:02:00.0
logical name: eth1
version: 00
serial: 54:be:f7:65:9a:9c
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 33MHz
capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=3.2.6-k duplex=full firmware=2.1-3 ip=172.22.1.113 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
resources: irq:18 memory:f7d00000-f7d1ffff ioport:e000(size=32) memory:f7d20000-f7d23fff
/etc/network/interfaces:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# The secondary network interface
auto eth1
iface eth1 inet dhcp
感谢您的任何帮助!
ifconfig:
eth0 Link encap:Ethernet HWaddr 54:be:f7:65:9a:9b
inet addr:172.22.1.112 Bcast:172.22.1.255 Mask:255.255.255.0
inet6 addr: fe80::56be:f7ff:fe65:9a9b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:61 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5880 (5.8 KB) TX bytes:1436 (1.4 KB)
Interrupt:20 Memory:f7e00000-f7e20000
eth1 Link encap:Ethernet HWaddr 54:be:f7:65:9a:9c
inet addr:172.22.1.113 Bcast:172.22.1.255 Mask:255.255.255.0
inet6 addr: fe80::56be:f7ff:fe65:9a9c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1093 errors:0 dropped:0 overruns:0 frame:0
TX packets:575 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:88205 (88.2 KB) TX bytes:42753 (42.7 KB)
Interrupt:18 Memory:f7d00000-f7d20000
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:160 errors:0 dropped:0 overruns:0 frame:0
TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:11840 (11.8 KB) TX bytes:11840 (11.8 KB)
route -n:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.22.1.1 0.0.0.0 UG 0 0 0 eth1
172.22.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.22.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
路由 -n,eth0 已拔出。无法访问任何 IP 地址。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.22.1.1 0.0.0.0 UG 0 0 0 eth0
172.22.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.22.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
eth0 断开连接的脚本 eth0 链路封装:以太网 HWaddr 54:be:f7:65:9a:9b inet 地址:172.22.1.112 Bcast:172.22.1.255 掩码:255.255.255.0 inet6 地址:fe80::56be:f7ff:fe65:9a9b/64 范围:链接 上行广播多播 MTU:1500 度量:1 RX 数据包:28527 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:10 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1000 RX 字节:2202058 (2.2 MB) TX 字节:1372 (1.3 KB) 中断:20 内存:f7e00000-f7e20000 eth1 链路封装:以太网 HWaddr 54:be:f7:65:9a:9c inet 地址:172.22.1.113 Bcast:172.22.1.255 掩码:255.255.255.0 inet6 地址:fe80::56be:f7ff:fe65:9a9c/64 范围:链接 上行广播运行多播 MTU:1500 度量:1 RX 数据包:31516 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:1730 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1000 RX 字节:6125004 (6.1 MB) TX 字节:155950 (155.9 KB) 中断:18 内存:f7d00000-f7d20000 lo 链路封装:本地环回 inet 地址:127.0.0.1 掩码:255.0.0.0 inet6 地址:::1/128 范围:主机 上行环回运行 MTU:65536 度量:1 RX 数据包:160 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:160 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1 RX 字节:11840 (11.8 KB) TX 字节:11840 (11.8 KB) 内核 IP 路由表 目标网关 Genmask 标志 指标参考使用 Iface 0.0.0.0 172.22.1.1 0.0.0.0 UG 0 0 0 eth1 172.22.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 172.22.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 PING 8.8.8.8 (8.8.8.8) 56(84)字节数据。 来自 8.8.8.8 的 64 字节:icmp_seq=1 ttl=58 时间=27.4 毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=2 ttl=58 时间=25.8 毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=3 ttl=58 时间=27.8 毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=4 ttl=58 时间=26.6 毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=5 ttl=58 时间=26.6 毫秒 --- 8.8.8.8 ping 统计 --- 发送 5 个数据包,接收 5 个数据包,0% 数据包丢失,耗时 4007 毫秒 rtt 最小值/平均值/最大值/mdev = 25.818/26.897/27.860/0.733 毫秒 eth1 断开连接的脚本 eth0 链路封装:以太网 HWaddr 54:be:f7:65:9a:9b inet 地址:172.22.1.112 Bcast:172.22.1.255 掩码:255.255.255.0 inet6 地址:fe80::56be:f7ff:fe65:9a9b/64 范围:链接 上行广播运行多播 MTU:1500 度量:1 RX 数据包:28540 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:10 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1000 RX 字节:2202968 (2.2 MB) TX 字节:1372 (1.3 KB) 中断:20 内存:f7e00000-f7e20000 eth1 链路封装:以太网 HWaddr 54:be:f7:65:9a:9c inet 地址:172.22.1.113 Bcast:172.22.1.255 掩码:255.255.255.0 inet6 地址:fe80::56be:f7ff:fe65:9a9c/64 范围:链接 上行广播多播 MTU:1500 度量:1 RX 数据包:31528 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:1735 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1000 RX 字节:6125988 (6.1 MB) TX 字节:156460 (156.4 KB) 中断:18 内存:f7d00000-f7d20000 lo 链路封装:本地环回 inet 地址:127.0.0.1 掩码:255.0.0.0 inet6 地址:::1/128 范围:主机 上行环回运行 MTU:65536 度量:1 RX 数据包:160 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:160 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1 RX 字节:11840 (11.8 KB) TX 字节:11840 (11.8 KB) 内核 IP 路由表 目标网关 Genmask 标志 指标参考使用 Iface 0.0.0.0 172.22.1.1 0.0.0.0 UG 0 0 0 eth1 172.22.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 172.22.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 PING 8.8.8.8 (8.8.8.8) 56(84)字节数据。 --- 8.8.8.8 ping 统计 --- 发送了 5 个数据包,接收了 0 个数据包,100% 数据包丢失,耗时 4031 毫秒
答案1
您的两个网卡均正常工作。其中一个网卡具有以下单独的 IP 地址:
eth0: 172.22.1.112
and
etho1: 172.22.1.113
您可以通过 ping 任一 IP 地址来验证它们是否正常工作:
$ ping -c10 172.22.1.112
$ ping -c10 172.22.1.113
如果您的网络中还有另一台计算机,您也可以从任一 IP 地址访问您的计算机。
如果您在计算机上设置了 Web 服务器,则可以使用以下任一 IP 地址访问该 Web 服务器:
http://172.22.1.112
http://172.22.1.113
您在这两个示例中看到的访问(输出)验证了它们都正常工作。另外,您的dhcp
服务器能够访问它们并分配 IP 地址这一事实也是它们两个都在工作中。
运行此脚本来测试NIC的分离:
复制并粘贴以下脚本。您可以将其命名为:testnic.sh
。当每个网卡插入计算机和路由器/调制解调器时,单独运行脚本。
testnic.sh:
#!/bin/bash
ifconfig
route -n
sudo route del default gw 172.22.1.1
sudo route add default gw 172.22.1.1
ping -c5 8.8.8.8
运行以下命令:
$ ./testnic.sh
显示命令和输出。
更新:
之前的输出表明,问题出在路由上。删除该网卡时,必须删除之前的根,然后在其位置创建另一个路由。
下面是一个示例脚本,可帮助您完成该任务。该脚本必须经过测试并针对您的环境进行微调。但您的问题的答案很明确,即两个网卡均正常工作。您看到的差异是由您的配置方式造成的。
移除一个 NIC 时,请更改网络配置以使用重新挖掘的 NIC 的路由。
这是另一个脚本示例,可让您在切换 NIC 时轻松更改配置。
#!/bin/bash
currentroute=$(route -n | awk '/UG/{print $NF}')
available="none"
route="0"
available="none"
find /sys/class/net/en* -exec echo "{}/operstate" \; | while read line; do
# echo "[$line]"
IFS='/' read -r -a array <<< "$line"
device="${array[4]}"
state="$(cat $line)"
thisdevice="$device:$state"
if [[ "$thisdevice" == "$currentroute:down" ]] ; then
route="0"
fi
if [[ "$state" == "up" ]]
then
echo "The device $device is available"
echo "$device" > /tmp/available
fi
done
read -r available </tmp/available
if [[ "$route" == "0" ]]; then
route del default gw 172.22.1.1 $currentdevice
route add default gw 172.22.1.1 $available
fi
echo "[$route/$available]"
答案2
为什么不使用绑定接口将两张卡捆绑成一个虚拟接口?
auto eth0
iface eth0 inet manual
mtu 9000
auto eth1
iface eth1 inet manual
mtu 9000
auto bond0
iface bond0 inet dhcp
mtu 9000
bond-mode 0
bond-primary eth0
bond-slaves eth0 eth1