Zeroconf 네트워크를 사용하여 케이블 연결을 끊은 후 네트워크 서비스를 다시 시작해야 합니다.

Zeroconf 네트워크를 사용하여 케이블 연결을 끊은 후 네트워크 서비스를 다시 시작해야 합니다.

저는 키오스크와 같은 목적으로 Ubuntu 15.04를 실행하는 Wandboard(imx6) 장치를 사용하고 있습니다. 초기 구성과 네트워크 간 이동 후(사이트에서 키보드 액세스 없음) Zeroconf 네트워킹을 사용합니다. 네트워크를 Zeroconf 설정으로 변경한 후 네트워크 인터페이스가 작동하지 않는 문제가 있습니다. 재현하기 위한 단계는 다음과 같습니다(진단 스크립트에 추가할 수 있는 더 유용한 것이 있으면 알려주십시오).

  1. Zeroconf 설정으로 재설정하고 재부팅했는데 장치가 여전히 LAN에 연결되어 있습니다.
wandboard@lnm:~$ ./network-diag.sh 
+ cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 169.254.254.254
  netmask 255.255.0.0
  gateway 1.1.1.1

+ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1f:7b:b2:14:96 brd ff:ff:ff:ff:ff:ff
    inet 169.254.254.254/16 brd 169.254.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::21f:7bff:feb2:1496/64 scope link 
       valid_lft forever preferred_lft forever
+ ip route
169.254.0.0/16 dev eth0  proto kernel  scope link  src 169.254.254.254 

+ systemctl status sys-subsystem-net-devices-eth0.device
� sys-subsystem-net-devices-eth0.device - /sys/subsystem/net/devices/eth0
   Loaded: loaded
   Active: active (plugged) since Fri 2016-08-12 18:40:17 UTC; 1min 17s ago
   Device: /sys/devices/soc0/soc.1/2100000.aips-bus/2188000.ethernet/net/eth0
  1. 케이블을 뽑고 임시 제로 구성 네트워크에 연결합니다.
wandboard@lnm:~$ ./network-diag.sh 
+ cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 169.254.254.254
  netmask 255.255.0.0
  gateway 1.1.1.1

+ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1f:7b:b2:14:96 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::21f:7bff:feb2:1496/64 scope link 
       valid_lft forever preferred_lft forever
+ ip route

+ systemctl status sys-subsystem-net-devices-eth0.device
�  sys-subsystem-net-devices-eth0.device - /sys/subsystem/net/devices/eth0
   Loaded: loaded
   Active: active (plugged) since Fri 2016-08-12 18:40:17 UTC; 5min ago
   Device: /sys/devices/soc0/soc.1/2100000.aips-bus/2188000.ethernet/net/eth0
  1. 이제 제로 구성 모드에서는 Windows 컴퓨터에서 장치에 연결할 수 없습니다. Ping은 "대상 호스트에 연결할 수 없습니다"를 반환합니다. 하지만 네트워크가 빠르게 다시 시작되면서 ...
wandboard@lnm:~$ sudo service networking restart                                                                    
wandboard@lnm:~$ ./network-diag.sh 
+ cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 169.254.254.254
  netmask 255.255.0.0
  gateway 1.1.1.1

+ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1f:7b:b2:14:96 brd ff:ff:ff:ff:ff:ff
    inet 169.254.254.254/16 brd 169.254.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::21f:7bff:feb2:1496/64 scope link 
       valid_lft forever preferred_lft forever
+ ip route
169.254.0.0/16 dev eth0  proto kernel  scope link  src 169.254.254.254 

+ systemctl status sys-subsystem-net-devices-eth0.device
�  sys-subsystem-net-devices-eth0.device - /sys/subsystem/net/devices/eth0
   Loaded: loaded
   Active: active (plugged) since Fri 2016-08-12 18:40:17 UTC; 7min ago
   Device: /sys/devices/soc0/soc.1/2100000.aips-bus/2188000.ethernet/net/eth0

그러면 모든 것이 다시 괜찮습니다. Windows 컴퓨터의 Ping은 즉시 완료되기 시작합니다.

이는 현장의 사용자를 혼란스럽게 하며 결국 장치가 응답할 때까지 재부팅하게 됩니다.케이블 전환 이벤트 후 Zeroconf 모드에서 네트워크가 예상대로 다시 연결되도록 하려면 어떻게 해야 합니까?


업데이트: allow-hotplug eth0아무것도 변경되지 않은 것 같습니다.

업데이트 업데이트:
maxf의 조언에 따라 ifplugd를 설치하고 구성한 후 많은 문제가 사라졌습니다. 참고: ifplugd가 인터페이스를 모니터링하도록 하려면 /etc/default/ifplugd에서 ifplugd를 구성해야 합니다. 내 인터페이스가 한 가지 경우를 제외하고 모두 올바르게 온라인 상태가 된 것을 발견했습니다.

╔═══════════╦═══════════════╦═══════════╦═════════╗
║ Boot with ║   bad link    ║ good link ║ no link ║
╠═══════════╬═══════════════╬═══════════╬═════════╣
║ dhcp      ║ ok            ║ ok        ║ ok      ║
║ zeroconf  ║ needs restart ║ ok        ║ ok      ║
╚═══════════╩═══════════════╩═══════════╩═════════╝

이 표에서는 dhcp/zeroconf-static으로 구성된 장치를 부팅하고 케이블을 원하는 반대 네트워크(잘못된 링크), 올바른 네트워크(좋은 링크) 또는 연결되지 않음(링크 없음)에 연결합니다. 그런 다음 이를 올바른 네트워크에 연결하고 인터페이스가 올바르게 온라인 상태가 되는 것을 확인했습니다. 부팅 시 LAN에 연결된 제로 구성 구성만 제로 구성 랩탑 임시 네트워크에 연결할 수 없다는 것을 발견했습니다.

이것은 /etc/ifplugd/action.d/에 있는 내 작업 스크립트입니다.

#!/bin/sh

LNM_LOG=/tmp/ifplug.log
ZEROCONF_IP=169.254.254.254
date >> $LNM_LOG
echo $1 $2 >> $LNM_LOG
if [ "$1" = "eth0" -a "$2" = "up" -a $(grep -c $ZEROCONF_IP /etc/network/interfaces) -ne 0  ] ; then
    echo "eth0 plugged in for zeroconf, restart networking" >> $LNM_LOG
    service networking restart
    echo "network restarted" >> $LNM_LOG
fi

답변1

이론적으로는 네트워크를 다시 시작할 필요가 없습니다. /etc/network/interfaces의 "auto eth0" 줄 뒤에 "allow-hotplug eth0"을 추가하여 문제가 해결되는지 확인해보세요.

원래 질문은 다음을 사용할 수 있습니다.플러그인의 경우. Ifplugd는 기본적으로 이더넷 인터페이스의 링크 상태를 모니터링하고 변경 시 사용자 정의 스크립트(기본값은 /etc/ifplugd/ifplugd.action)를 호출하는 작은 데몬입니다. 스크립트는 단일 매개변수("up" 또는 "down")를 사용하며 일단 설정되면 이를 사용할 수 있습니다.

#!/bin/sh

if [ "$1" = "up" ] ; then
    service networking restart
fi

관련 정보