Что означает "state UNKNOWN" в ip link
выводе? Например
10: enp56s0f3u4u2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
link/ether X:X:X:X:X:X brd ff:ff:ff:ff:ff:ff
Насколько мне известно, сетевой интерфейс может быть либо UP, либо DOWN.
решение1
Каждый интерфейс имеет как минимум два различных типа состояний:
Административное состояние (является ли интерфейсвключено). Это просто включение/выключение, и оно контролируется вами или сетевым программным обеспечением; после включения интерфейса с помощью
ip link set eth0 up
илиifconfig eth0 up
вы можете увидеть его обозначенным в виде флага<UP>
около начала вашего примера.Рабочее состояние (независимо от того, интерфейсработает). То, что он включен, не означает, что он уже может передавать данные — для Ethernet требуется кабель для подключения; Wi-Fi необходимо связать с точкой доступа; по сути, ему нужнаперевозчик. Для физических интерфейсов это, очевидно, внешний фактор, и им нельзя управлять с помощью команд; он отображается только на выходе, как
<LOWER_UP>
если бы присутствовал носитель.На самом деле это сложнее, чем вверх/вниз, например, сети Wi-Fi с WPA-Enterpriseделатьимеют оператора связи после присоединения, но не могут отправлять данные, пока не будет выполнено рукопожатие WPA, поэтому существует третий уровень «рабочего» состояния: «спящий».
(Для виртуальных интерфейсов, таких как VLAN, есть еще один, «lowerlayerdown».)
Итак, "state UNKNOWN" — это не административный переключатель "вверх/вниз", это рабочее состояние, которое исходит от самой системы, показывающей целый набор значений. Это состояние должно быть предоставлено драйвером — и (по крайней мере, согласно документации Linux) не все драйверы имеют необходимые биты для установки фактического состояния oper. Так что если ваш драйвер Ethernet этого не сделал, вы увидите значение по умолчанию IF_OPER_UNKNOWN (0).
решение2
Вывод ip
может быть вводящим в заблуждение.
Часть, которую вы видите, переходит из состояния DOWN в состояние UNKNOWN, когда интерфейс активен, и в состояние UP, когда установлено фактическое соединение.
Частьвнутриугловые скобки — это то, что сообщает вам, когда сам интерфейс включен.