
나는 작업 중인 상당히 독특한 스택을 가지고 있으므로 어떤 진단/디버깅 전략이라도 환영합니다.
설정: Ubuntu 18.04 데스크탑, 포트 2개가 있는 PCIe 네트워크 카드. 두 개의 이더넷 카메라가 카드에 직접 연결됩니다. 이는 169.254.xy 링크 로컬 주소를 제공하며 한동안 훌륭하게 작동했습니다.
나는 카메라에 고정 IP를 할당할 수 있도록 이 포트에서 DHCP 역할을 하기 위해 한 지점에서 dnsmasq를 사용해 보았습니다(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가 뭔가 어리석은 일을 하는 것 같은 냄새가 나지만 어떤 서비스에 문제가 있는지 전혀 모릅니다. 재부팅하고, 네트워크 관리자를 다시 시작하고, dnsmasq를 다시 활성화하는 등 지금까지 모두 해결하지 못했고 다음에는 어디를 봐야 할지 잘 모르겠습니다.
답변1
그래서 이것은 이상한 벌레 개요서에 집어넣는 재미있는 일임이 밝혀졌습니다. 알고 보니 이 문제는 전원 공급 부족으로 인해 발생했습니다. 카메라가 연결되면 커널은 연결을 확인하고 인터페이스를 활성화합니다. 이는 카메라가 컴퓨터와 통신을 시작하도록 지시하며, 컴퓨터는 전압을 낮추어 카메라를 재설정할 만큼 충분한 추가 전력을 끌어옵니다. 카메라가 재설정되어 커널이 인터페이스가 분리된 것으로 인식하게 됩니다. 카메라가 다시 연결을 시도하고 주기가 반복됩니다.
이야기의 교훈: 추상화가 누출됩니다. 아무리 어리석더라도 모든 옵션을 고려한 다음 하나씩 제외하세요.