임베디드 데비안 시스템을 사용하고 있는데 이더넷이 일관되게 작동하도록 할 수 없습니다. eth0이 5~10번 시작되고 실패할 때마다 SSH를 통해 연결할 수 없으며 핑에 응답하지 않습니다. 해결 방법은 재부팅하거나 직렬 콘솔을 통해 로그인한 후 eth0을 종료하고 다시 부팅하는 것입니다. ifconfig eth0 down && ifconfig eth0 up
장치가 응답을 멈출 때까지 반복적으로 재부팅하거나 반복적으로 발행하여 문제를 재현할 수 있습니다 .
내 /etc/network/interfaces는 다음과 같습니다.
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.122
gateway 192.168.1.1
netmask 255.255.255.0
네트워크가 작동하면 dmesg
다음과 같이 표시됩니다.
[ 2612.775183] PHY found at addr 7
[ 2612.776944] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 2614.414704] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
말하지 않을 때 dmesg
:
[ 2617.224970] PHY found at addr 7
[ 2617.227005] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
네트워크가 작동 중일 때 ifconfig
출력은 다음과 같습니다.
eth0 Link encap:Ethernet HWaddr 00:d0:69:46:d9:08
inet addr:192.168.1.122 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::2d0:69ff:fe46:d908/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1528 Metric:1
RX packets:3242 errors:0 dropped:0 overruns:0 frame:0
TX packets:1382 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:300701 (293.6 KiB) TX bytes:132344 (129.2 KiB)
Interrupt:22
출력 되지 않는 경우는 ifconfig
다음과 같습니다.
eth0 Link encap:Ethernet HWaddr 00:d0:69:46:d9:08
inet addr:192.168.1.122 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1536 Metric:1
RX packets:3355 errors:0 dropped:0 overruns:0 frame:0
TX packets:1430 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:310120 (302.8 KiB) TX bytes:136800 (133.5 KiB)
Interrupt:22
네트워크가 작동 중일 때 ip link show eth0
출력은 다음과 같습니다.
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1528 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:d0:69:46:d9:08 brd ff:ff:ff:ff:ff:ff
뭔가가 작동하지 않을 때 ip link show eth0
주어진 :
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1536 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
link/ether 00:d0:69:46:d9:08 brd ff:ff:ff:ff:ff:ff
나의 현재 해결책은 스크립트가 eth0의 출력을 구문 분석 ip link show eth0
하고 eth0이 나타날 때까지 다시 시작하는 것입니다. 그러나 이는 해킹된 것처럼 보입니다.
문제가 무엇인지, 어디를 살펴봐야 할지 아시나요?
ethtool eth0
편집: 문제가 없을 때 출력:
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 7
Transceiver: internal
Auto-negotiation: on
Link detected: yes
ethtool eth0
존재하지 않을 때 출력:
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Speed: 10Mb/s
Duplex: Half
Port: MII
PHYAD: 7
Transceiver: internal
Auto-negotiation: on
Link detected: no
또한 사용했던 시스템을 이미지화하고 두 번째 동일한 시스템에서 테스트했지만 케이블과 라우터는 달랐지만 동일한 동작을 확인했습니다.
편집 2: ttsiodras의 관찰을 바탕으로 몇 가지 MTU 테스트를 수행했습니다. 장치가 부팅될 때 MTU는 처음에 1508인 것으로 나타났습니다. eth0을 종료했다가 다시 시작할 때마다 MTU는 4씩 증가하여 최대 1540에 도달한 후 동일하게 유지되었습니다. 불행하게도 MTU와 네트워크 연결이 끊어졌을 때 사이에는 아무런 상관관계가 없는 것 같습니다. MTU를 1508에서 1540 사이의 다양한 값으로 수동으로 설정해 보았지만 수동 MTU 설정과 관계없이 여전히 네트워크에 가끔 문제가 발생합니다.
답변1
이는 이전 버전과의 호환성을 위해 약간 시스템화된 데비안 패치와 관련이 있을 수 있습니다. 그러나 이는 해결 방법이지만 몇 가지 문제가 있습니다. 전체 내용은 다음에서 확인할 수 있습니다.주제에 대한 데비안 위키 페이지. 우리의 목표는 rcS
init 스크립트가 포함된 패키지에 systemd 특정 코드를 추가하여 Stretch(다음 Debian 버전) 문제를 해결하는 것입니다. 대부분의 작업이 완료되었지만 일부만 남아 있습니다.
이 문제를 해결할 수 있는 방법:
rc.local
귀하의 경우에 가장 중요한 스크립트가 성공적으로 실행되는지 확인 하는 스크립트를 추가하고rcS
그렇지 않은 경우 문제를 해결하십시오(실행하는 것이systemctl status foo.service
도움이 될 수 있음)- 네트워크 스크립트를 위한 시스템 단위를 작성하거나 확장하여 가져옵니다(일부 테스트 필요)
systemd
시스템에서 다음으로 교체하십시오sysvinit
(약간 과잉일 수도 있음).- 시스템 로그를 확인하여 어떤 서비스(네트워킹 제외)가 종속성 주기에 포함되어 있는지 확인하고 그 중 하나 이상을 시스템에서 제거하세요.
- Network Manager를 설치하고 대신 사용하십시오
ifupdown
.