Как сделать так, чтобы `ifup wlan0` немедленно возвращался, если невозможно получить аренду dhcp?

У меня есть небольшая беспроводная встроенная система на основе Ubuntu 16.04. Если беспроводной интерфейс настроен неправильно или точка доступа не работает, ifup wlan0 никогда не закончится, потому что dhclient не демонизирует себя, пока не получит аренду. Это проблема, потому что ifdown wlan0 зависает из-за блокировки ifup все еще держит:

ifdown: waiting for lock on /run/network/ifstate.wlan0

Как мне это решить?

  • Опция 1: pkill -f 'ifup .*wlan0'; ifdown wlan0

Это грубо, но если мне придется это сделать, я сделаю это. Я бы предпочел лучшее решение.

  • Вариант 2: dhclient поддерживает -nw, nowait, опция, которая говорит ему немедленно демонизировать, но ifup не использует его, и кажется, что dhclient команда жестко запрограммирована в ifup через исходный файл с именем inet.defn:

,

$ apt-get source ifupdown
$ grep -n 'dhclient -1' ifupdown-*/inet.defn | head -1
97:    /sbin/dhclient -1 -v -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
  • Вариант 3: есть ли способ заставить dhcp контролироваться статусом от wpa_supplicant? Таким образом, dhclient не будет работать, пока wpa_supplicant не завершит сопоставление с точкой доступа.

Дополнительная информация:

/etc/network/interfaces:

auto lo
iface lo inet loopback

# ifplugd configuration
mapping hotplug
script grep
map eth0
map wlan0

auto eth0
iface eth0 inet dhcp

auto wlan0
iface wlan0 inet dhcp
  wpa-driver wext
  wpa-conf /etc/wpa_supplicant.conf

/etc/wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant

network={
   ssid="AccessPoint"
   scan_ssid=1
   proto=WPA RSN
   key_mgmt=WPA-PSK
   pairwise=CCMP TKIP
   group=CCMP TKIP
   psk="passphrase"
   priority=10
}
network={
   key_mgmt=NONE
   priority=0
   disabled=1
}

1 ответ

У меня была такая же проблема некоторое время, и я делал простое:

$ systemctl enable netctl.service
$ systemctl start netctl.service

Исправлено все на моем Ubuntu 17.04.

Надеюсь, поможет.

Другие вопросы по тегам