Мы работаем с платой iMX6, работающей в сборке Yocto 4.9.88. Он имеет как Wi-Fi, так и Ethernet-соединения. Когда мы подключили только WiFi, пинг работает нормально. Пинг работает, если подключить Ethernet. Когда мы отключили Ethernet, WiFi по-прежнему получает IP-адрес и показывает, что он подключен, но мы не можем выполнить пинг.
У Wi-Fi метрика сети равна 10, а у Ethernet - 0. Ниже приведены таблицы маршрутизации для различных экземпляров.
Когда подключен только WiFi,
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 10 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
Когда Wi-Fi + Ethernet подключен,
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 10 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
202.83.21.25 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
202.83.21.43 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
Когда Ethernet отключен, но Wi-Fi все еще подключен,
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
Почему Ethernet также удаляет записи wlan0 в таблице маршрутизации и возможно ли, чтобы оба интерфейса работали без каких-либо ограничений?
Общий подход заключается в создании интерфейса связи для обоих интерфейсов. Отключите IP-адреса на обоих интерфейсах и настройте интерфейс связывания по своему усмотрению.
У вас всегда будет один и тот же IP-адрес, и он будет использовать интерфейсы по мере их доступности.
Быстрое решение - повторно добавить недостающий маршрут к wlan0.
Более длинная история:
Поведение в целом нормальное и логичное (кроме одной вещи, которая может быть ошибкой или неправильной конфигурацией).
Когда вы используете Wi-Fi и подключаете Ethernet, административное расстояние изменяется так, что Ethernet имеет приоритет. Вот что означают эти две строчки:
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 10 0 0 wlan0
Метрика 0 означает наивысший приоритет. Метрика 10 будет находиться в режиме ожидания, пока у вас активен и работает eth0. Если вы отключите кабель / eth0, тогда wlan0 снова станет основным подключением.
Пока все хорошо, но если при отключении проводной и маршрутизации
0.0.0.0 192.168.0.1 0.0.0.0 UG 10 0 0 wlan0
больше нет, то у вас, конечно, проблема с подключением, у вас больше нет фактического маршрута. Вы можете обойти это, добавив шлюз последней инстанции.
Если вы настроили несколько сетей в качестве возможных маршрутов по умолчанию, используя ip default-network command
, сеть с наименьшим административным расстоянием выбирается в качестве шлюза последней инстанции. Если все сети имеют одинаковое административное расстояние, тогда сеть, указанная первой в таблице маршрутизации (show ip route
) выбирается в качестве шлюза последней инстанции. Если вы используете оба ip default-network
и ip route 0.0.0.0 0.0.0.0
команды для настройки сетей-кандидатов по умолчанию и сети, используемой ip default-network
команда известна статически, сеть, определенная с помощью ip default-network
команда имеет приоритет и выбирается для шлюза последней инстанции. В противном случае, если сеть, используемая ip default-network
команда получена протоколом маршрутизации, ip route 0.0.0.0 0.0.0.0
команда, имеющая меньшее административное расстояние, имеет приоритет и выбирается для шлюза последней инстанции. Если вы используете несколько ip route 0.0.0.0 0.0.0.0
Команды для настройки маршрута по умолчанию, трафик балансируется по нескольким маршрутам и будет работать на любом из двух, когда один из них активен.
Вы можете выбрать, какая ситуация лучше всего подходит для вашего случая.