Linux ネットワークデバイスがループしてドロップし、再起動する

Linux ネットワークデバイスがループしてドロップし、再起動する

私が取り組んでいるスタックはかなりユニークですので、診断/デバッグ戦略があれば大歓迎です。

セットアップ: Ubuntu 18.04 デスクトップ、2 ポートの PCIe ネットワーク カード。2 台のイーサネット カメラをカードに直接接続。これにより、169.254.xy リンク ローカル アドレスが付与され、しばらくの間は問題なく動作しました。

ある時点で、これらのポートで DHCP として動作するように dnsmasq を使用して、カメラに静的 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

それで、これは奇妙なバグ集に載せておくのに面白いものになりました。結局、この問題は不十分な電源供給によって発生していました。カメラが差し込まれると、カーネルは接続を認識し、インターフェースを有効にします。これにより、カメラはコンピューターと通信を開始するよう指示され、コンピューターは電圧を下げるのに十分な余分な電力を消費して、カメラをリセットします。カメラがリセットされ、カーネルはインターフェースが差し込まれていないと認識します。カメラは再接続を試み、サイクルが繰り返されます。

この話の教訓: 抽象化は漏れを生じます。どんなにばかげた選択肢でも、すべての選択肢を考慮し、それから 1 つずつ排除します。

関連情報