
У меня есть довольно уникальный стек, над которым я работаю, поэтому любые стратегии диагностики/отладки будут приветствоваться.
Настройка: Ubuntu 18.04 desktop, PCIe network card с 2 портами. Две камеры Ethernet подключены напрямую к карте. Это дает им адрес link-local 169.254.xy, и это работало отлично некоторое время.
Я пробовал использовать dnsmasq в какой-то момент, чтобы он действовал как DHCP на этих портах, чтобы я мог назначить статический IP камере (из-за причин docker macvlan). Это тоже сработало, но позже оказалось ненужным, поэтому я отключил dnsmasq.
Теперь, когда устройства подключены, система зацикливается, многократно включая и отключая интерфейс. journalctl выглядит примерно так:
Nov 4 12:12:36 hostname NetworkManager[28979]: <info> [1572887556.0123] device (ethn0): carrier: link connected
Nov 4 12:12:36 hostname kernel: [ 5705.109602] ixgbe 0000:65:00.0 ethn0: NIC Link is Up 1 Gbps, Flow Control: None
Nov 4 12:12:36 hostname NetworkManager[28979]: <info> [1572887556.0130] device (ethn0): state change: unavailable -> disconnected (reason 'carrier-changed', sys-iface-state: 'managed')
Nov 4 12:12:36 hostname NetworkManager[28979]: <info> [1572887556.0160] policy: auto-activating connection 'Wired connection 3'
Nov 4 12:12:36 hostname NetworkManager[28979]: <info> [1572887556.0200] device (ethn0): Activation: starting connection 'Wired connection 3' (0ae083fb-03b4-3782-a069-7aa48780f65b)
Nov 4 12:12:36 hostname NetworkManager[28979]: <info> [1572887556.0207] device (ethn0): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed')
Nov 4 12:12:36 hostname NetworkManager[28979]: <info> [1572887556.0223] device (ethn0): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')
Nov 4 12:12:36 hostname NetworkManager[28979]: <info> [1572887556.0306] device (ethn0): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed')
Nov 4 12:12:36 hostname NetworkManager[28979]: <info> [1572887556.0313] dhcp4 (ethn0): activation: beginning transaction (timeout in 45 seconds)
Nov 4 12:12:36 hostname NetworkManager[28979]: <info> [1572887556.0347] dhcp4 (ethn0): dhclient started with pid 3304
Nov 4 12:12:36 hostname dhclient[3304]: DHCPDISCOVER on ethn0 to 255.255.255.255 port 67 interval 3 (xid=0x16ff5155)
Nov 4 12:12:37 hostname kernel: [ 5706.148368] ixgbe 0000:65:00.0 ethn0: NIC Link is Down
Nov 4 12:12:37 hostname avahi-daemon[492]: Joining mDNS multicast group on interface ethn0.IPv6 with address fe80::7e02:198c:dd14:f845.
Nov 4 12:12:37 hostname avahi-daemon[492]: New relevant interface ethn0.IPv6 for mDNS.
Nov 4 12:12:37 hostname avahi-daemon[492]: Registering new address record for fe80::7e02:198c:dd14:f845 on ethn0.*.
Nov 4 12:12:39 hostname dhclient[3304]: DHCPDISCOVER on ethn0 to 255.255.255.255 port 67 interval 4 (xid=0x16ff5155)
Nov 4 12:12:43 hostname NetworkManager[28979]: <info> [1572887563.0543] device (ethn0): state change: ip-config -> unavailable (reason 'carrier-changed', sys-iface-state: 'managed')
Nov 4 12:12:43 hostname NetworkManager[28979]: <info> [1572887563.0707] dhcp4 (ethn0): canceled DHCP transaction, DHCP client pid 3304
Nov 4 12:12:43 hostname NetworkManager[28979]: <info> [1572887563.0707] dhcp4 (ethn0): state changed unknown -> done
Nov 4 12:12:43 hostname avahi-daemon[492]: Withdrawing address record for fe80::7e02:198c:dd14:f845 on ethn0.
Nov 4 12:12:43 hostname avahi-daemon[492]: Leaving mDNS multicast group on interface ethn0.IPv6 with address fe80::7e02:198c:dd14:f845.
Nov 4 12:12:43 hostname avahi-daemon[492]: Interface ethn0.IPv6 no longer relevant for mDNS.
Nov 4 12:12:43 hostname NetworkManager[28979]: <info> [1572887563.3914] device (ethn0): carrier: link connected
Nov 4 12:12:43 hostname NetworkManager[28979]: <info> [1572887563.3922] device (ethn0): state change: unavailable -> disconnected (reason 'carrier-changed', sys-iface-state: 'managed')
Nov 4 12:12:43 hostname kernel: [ 5712.488688] ixgbe 0000:65:00.0 ethn0: NIC Link is Up 1 Gbps, Flow Control: None
Nov 4 12:12:43 hostname NetworkManager[28979]: <info> [1572887563.3954] policy: auto-activating connection 'Wired connection 3'
и просто циклы. Я понятия не имею, какая служба виновата, хотя это пахнет как NetworkManager, делающий что-то глупое. Перезагрузка, перезапуск networkmanager, повторное включение dnsmasq — все это пока не помогло, и я не уверен, где искать дальше.
решение1
Так что это оказалось забавным, чтобы засунуть это в Compendium of Weird Bugs. Как оказалось, эта проблема была вызвана недостаточным питанием. Когда камера подключена, ядро видит соединение и включает интерфейс. Это говорит камере начать общаться с компьютером, который потребляет как раз достаточно дополнительной мощности, чтобы понизить напряжение, сбрасывая камеру. Камера сбрасывается, заставляя ядро думать, что интерфейс был отключен. Камера пытается переподключиться, и цикл повторяется.
Мораль истории: абстракции дают течь. Учитывайте все варианты, какими бы глупыми они ни были, а затем исключайте их один за другим.