Двойной 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:

# Сетевой интерфейс обратной связи
auto lo
iface lo inet loopback

# Основной сетевой интерфейс
auto eth0
iface eth0 inet dhcp

# Вторичный сетевой интерфейс
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:

Таблица маршрутизации IP ядра
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

route -n с отключенным eth0. Не удается получить доступ ни к одному IP-адресу.

Таблица маршрутизации IP ядра
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      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 MULTICAST  MTU:1500  Metric:1
          RX packets:28527 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2202058 (2.2 MB)  TX bytes:1372 (1.3 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:31516 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1730 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6125004 (6.1 MB)  TX bytes:155950 (155.9 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)

Таблица маршрутизации IP ядра
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
PING 8.8.8.8 (8.8.8.8) 56(84) байт данных.
64 байта от 8.8.8.8: icmp_seq=1 ttl=58 время=27.4 мс
64 байта от 8.8.8.8: icmp_seq=2 ttl=58 время=25.8 мс
64 байта от 8.8.8.8: icmp_seq=3 ttl=58 время=27.8 мс
64 байта от 8.8.8.8: icmp_seq=4 ttl=58 время=26.6 мс
64 байта от 8.8.8.8: icmp_seq=5 ttl=58 время=26.6 мс

--- статистика пинга 8.8.8.8 ---
5 пакетов передано, 5 получено, 0% потеря пакетов, время 4007мс
rtt min/avg/max/mdev = 25.818/26.897/27.860/0.733 мс


Скрипт с отключенным eth1

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:28540 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2202968 (2.2 MB)  TX bytes:1372 (1.3 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 MULTICAST  MTU:1500  Metric:1
          RX packets:31528 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1735 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6125988 (6.1 MB)  TX bytes:156460 (156.4 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)

Таблица маршрутизации IP ядра
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
PING 8.8.8.8 (8.8.8.8) 56(84) байт данных.

--- статистика пинга 8.8.8.8 ---
5 пакетов передано, 0 получено, 100% потеря пакетов, время 4031мс

Обе ваши сетевые карты работают. У каждой из них есть свои IP-адреса:

eth0: 172.22.1.112
    и
eth1: 172.22.1.113

Вы можете проверить, что обе из них работают, пингуя любой IP-адрес:

$ ping -c10 172.22.1.112
$ ping -c10 172.22.1.113

Если у вас есть другой компьютер в вашей сети, вы также можете получить доступ к вашему компьютеру с любого IP-адреса.

Если вы настроите веб-сервер на вашем компьютере, вы сможете получить доступ к веб-серверу, используя любой из IP-адресов:

http://172.22.1.112
http://172.22.1.113

Доступ (вывод, который вы видите при использовании любого из этих примеров) является подтверждением того, что обе сетевые карты работают. Кроме того, тот факт, что ваш dhcp сервер смог получить доступ к ним и назначить IP-адреса, является еще одним подтверждением того, что обе карты работают.

Запустите этот скрипт, чтобы протестировать сетевые карты по отдельности:

Скопируйте и вставьте следующий скрипт. Вы можете назвать его: 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

Покажите как команду, так и вывод.

Обновление:

Ваш предыдущий вывод указывает на проблему, как упоминалось, в маршруте. Вам нужно удалить предыдущий маршрут, когда вы отключаете эту сетевую карту, а затем создать другой маршрут на её место.

Ниже приведен пример скрипта, который поможет вам с этой задачей. Скрипт нужно будет протестировать и настроить под вашу среду. Но ответ на ваш вопрос в том, что обе сетевые карты работают. Разница, которую вы наблюдаете, является результатом их конфигурации.

Когда вы отключаете одну сетевую карту, измените свою сетевую конфигурацию так, чтобы использовать маршрутизацию оставшейся.

Это ещё один пример скрипта, чтобы облегчить изменение конфигураций, когда вы переключаете сетевые карты.

#!/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="https://askubuntu.com/" 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 "Устройство $device доступно"
        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]"

Почему бы не использовать объединённый интерфейс, чтобы объединить обе карты в один виртуальный интерфейс?

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

Ответ или решение

Ваша проблема с двумя сетевыми интерфейсами (NIC) на Ubuntu Server 16.04, когда только один интерфейс передает трафик, действительно может быть результатом неправильной маршрутизации. Ниже приведено полное решение с пояснениями.

Анализ текущей конфигурации

На основе предоставленных вами данных, оба сетевых интерфейса (eth0 и eth1) на самом деле функционируют и получают IP-адреса через DHCP:

  • eth0: 172.22.1.112
  • eth1: 172.22.1.113

Тем не менее, вы наблюдаете, что они не могут одновременно работать как отдельные интерфейсы, и маршруты в вашей таблице маршрутизации вызывают конфликт.

Проблема в таблице маршрутизации

Вы можете заметить, что в ваших выводах маршрутизации (route -n) для обоих интерфейсов прописан один и тот же маршрут (172.22.1.0/24). Это может стать причиной конфликтов, когда оба интерфейса пытаются передать трафик по одному и тому же маршруту.

Возможное решение

  1. Измените конфигурацию интерфейсов. Убедитесь, что каждый интерфейс настроен правильно в /etc/network/interfaces. Вы можете использовать DHCP для обоих интерфейсов, как вы уже сделали, но убедитесь, что маршрутизация выполняется на основе одного основного интерфейса.

  2. Настройка маршрутизации. Попробуйте вручную задать маршруты для каждого интерфейса, чтобы убедиться, что один из них не перехватывает трафик другого.

  3. Тестирование. Для тестирования лучше создать bash-скрипт для проверки состояния интерфейсов и маршрутов. Например:

#!/bin/bash

echo "Текущая конфигурация сетевых интерфейсов:"
ifconfig
echo "Текущая таблица маршрутов:"
route -n

# Управление маршрутами
sudo route del default gw 172.22.1.1 # Удаление текущего шлюза по умолчанию
sudo route add default gw 172.22.1.1 dev eth0 # Установка шлюза по умолчанию для eth0
ping -c5 8.8.8.8

Сохраните этот скрипт как testnic.sh, сделайте его исполняемым с помощью chmod +x testnic.sh, и запустите его.

Альтернатива: Объединение интерфейсов в "bonding"

Если ваша цель состоит в том, чтобы повысить надежность и пропускную способность, рассмотрите возможность использования объединенного интерфейса (bonding). Это позволит связать оба NIC в один виртуальный интерфейс. Вот пример конфигурации:

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

После внесения этих изменений перезапустите сетевые сервисы:

sudo ifdown eth0 eth1
sudo ifup bond0

Заключение

Если вы будете следовать предложенным шагам, это должно помочь вам правильно настроить и использовать оба интерфейса NIC в вашей системе. Убедитесь, что после выполнения всех изменений у вас есть возможность тестировать каждый интерфейс отдельно и использовать их в совокупности, если это требуется.

Если у вас возникают дополнительные проблемы, пожалуйста, предоставьте полные логи, чтобы можно было глубже проанализировать вашу конфигурацию.

Оцените материал
Добавить комментарий

Капча загружается...