Raspbianでsystemd経由でWi-Fiを自動的に再接続する

Raspbianでsystemd経由でWi-Fiを自動的に再接続する

設定:rasbian raspberry pi 4.4.14-v7+およびネットワーク関連項目のためのシステム。

内部 Broadcom Wi-Fi を使用する

アクセスポイント: Hostapd 1:2.3-1+deb8u3および4.4.14-v7+を使用する別のRPi3

私はHostapdアクセスポイント(WPA2)に接続しようとするRPIを「クライアント」と呼びます。

HostapdはWi-Fiインターフェースでisc-dhcpサーバーを使用し、正常に機能します(リースの送信、リースの更新、DHCPACKなど)。

必要:

/etc/network/interfaces によるフォールバックモードや、そのファイルに依存する ifplugd による同様の設定を許可することはできません。

現在、デフォルトのdhcpcdの代わりにdhclientを使用しています。

他のネットワーク管理者やグラフィックツールは使用できません。

質問:

短時間アクセスポイントにアクセスできない場合(再起動、停電など)、Wi-Fiが再起動するにはクライアントを完全に再起動する必要があります。

この時点では、wpa_supplicantを介してAPに接続されていません。 (hostapd_cli all_staは私のクライアントWi-Fi MACを表示しません)

iwconfig wlan0 wlan0 IEEE 802.11bgn ESSID: off/any
モード: マネージド アクセス ポイント: 未接続 Tx-Power=31 dBm
再試行短期制限: 7 RTS thr:off フラグメント thr:off 暗号化キー:off 電源管理:off

この問題に対する「以前の」バージョンのソリューションは、ifplugdスクリプト(ifup / ifdown操作)および/または/etc / network / interfacesでwpa-roamを設定し、互換性レイヤ「networking.service - LSB:Lift Networkを使用することです。でした。 」

別のオプションは、cronjobを使用して失敗した接続を検出し、$ SOMETHINGを再起動することです。

残念ながら$ SOMETHINGが何であるかはわかりません。

私はsystemd-network方式だけを使いたいので、「network」ユニットはロードしません。

私の考えでは、wpa_supplicantはAPを再スキャンしようとしましたが、一致するAP SSIDを拒否しているようです。

これが設定です。

ロードされたサービス:

systemctl -t サービス

UNIT                               LOAD   ACTIVE SUB     DESCRIPTION
bluetooth.service                  loaded active running Bluetooth service
console-setup.service              loaded active exited  LSB: Set console font and keymap
cron.service                       loaded active running Regular background program processing daemon
dbus.service                       loaded active running D-Bus System Message Bus
dphys-swapfile.service             loaded active exited  LSB: Autogenerate and use a swap file
fake-hwclock.service               loaded active exited  Restore / save the current clock
[email protected]                 loaded active running Getty on tty1
hciuart.service                    loaded active running Configure Bluetooth Modems connected by UART
hdparm.service                     loaded active exited  LSB: Tune IDE hard disks
kbd.service                        loaded active exited  LSB: Prepare console
keyboard-setup.service             loaded active exited  LSB: Set preliminary keymap
kmod-static-nodes.service          loaded active exited  Create list of required static device nodes for the current kernel
[email protected]     loaded active exited  Wireless network connectivity (wlan0)
ntp.service                        loaded active running LSB: Start NTP daemon
openvpn.service                    loaded active exited  OpenVPN service
postfix.service                    loaded active running LSB: Postfix Mail Transport Agent
raspi-config.service               loaded active exited  LSB: Switch to ondemand cpu governor (unless shift key is pressed)
rc-local.service                   loaded active running /etc/rc.local Compatibility
rsyslog.service                    loaded active running System Logging Service
ssh.service                        loaded active running OpenBSD Secure Shell server
systemd-fsck-root.service          loaded active exited  File System Check on Root Device
[email protected] loaded active exited  File System Check on /dev/mmcblk0p1
systemd-journald.service           loaded active running Journal Service
systemd-logind.service             loaded active running Login Service
systemd-modules-load.service       loaded active exited  Load Kernel Modules
systemd-networkd.service           loaded active running Network Service
systemd-random-seed.service        loaded active exited  Load/Save Random Seed
systemd-remount-fs.service         loaded active exited  Remount Root and Kernel File Systems
[email protected]     loaded active exited  Load/Save RF Kill Switch Status of rfkill0
[email protected]     loaded active exited  Load/Save RF Kill Switch Status of rfkill1
systemd-setup-dgram-qlen.service   loaded active exited  Increase datagram queue length
systemd-sysctl.service             loaded active exited  Apply Kernel Variables
systemd-tmpfiles-setup-dev.service loaded active exited  Create Static Device Nodes in /dev
systemd-tmpfiles-setup.service     loaded active exited  Create Volatile Files and Directories
systemd-udev-trigger.service       loaded active exited  udev Coldplug all Devices
systemd-udevd.service              loaded active running udev Kernel Device Manager
systemd-update-utmp.service        loaded active exited  Update UTMP about System Boot/Shutdown
systemd-user-sessions.service      loaded active exited  Permit User Sessions
triggerhappy.service               loaded active running LSB: triggerhappy hotkey daemon
udev-finish.service                loaded active exited  Copy rules generated while the root was ro
[email protected]                     loaded active running User Manager for UID 0

猫/etc/systemd/network/00-wireless.network

#General configuration wlan0
[Match]
Name=wlan0
[Network]
DHCP=ipv4

/var/log/wpa_supplicant.logにいくつかの追加のデバッグ情報を設定したので、ExecStartは通常より少し時間がかかりました。

猫/etc/systemd/system/[Eメール保護]

[Unit]
Description=Wireless network connectivity (%i)
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device

[Service]
Type=oneshot
RemainAfterExit=yes

ExecStart=/sbin/ip l set %i up
ExecStart=/sbin/wpa_supplicant -t -dd -f /var/log/wpa_supplicant.log -dd -B -i %i -c /etc/wpa_supplicant/wpa_supplicant.conf
ExecStart=/sbin/dhclient %i

ExecStop=/sbin/ip l set %i down

[Install]
WantedBy=multi-user.target

Cat/etc/wpa_supplicant/wpa_supplicant.conf

country=DE
ctrl_interface=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={ 
    ssid="testap"
    psk="testconn"
  }

いくつかのログ:

クライアントを起動します。

システム制御状態[Eメール保護]

[email protected] - Wireless network connectivity (wlan0)
Loaded: loaded (/etc/systemd/system/[email protected]; enabled)
Active: active (exited) since Fri 2016-08-05 12:21:17 CEST; 3min 32s ago
Process: 431 ExecStart=/sbin/dhclient %i (code=exited, status=0/SUCCESS)
Process: 425 ExecStart=/sbin/wpa_supplicant -t -dd -f /var/log/wpa_supplicant.log -dd -B -i %i -c /etc/wpa_supplicant/wpa_supplicant.conf (code=exited, status=0/SUCCESS)
Process: 387 ExecStart=/sbin/ip l set %i up (code=exited, status=0/SUCCESS)
Main PID: 431 (code=exited, status=0/SUCCESS)

クライアントを起動します(すべてが正常で、接続は安定しており、以前のテストで数時間/日間動作しました)。

ログctl-u[Eメール保護]-雨

-- Logs begin at Fri 2016-08-05 12:21:05 CEST, end at Fri 2016-08-05 12:22:53 CEST. --
Aug 05 12:21:08 testclient systemd[1]: Starting Wireless network connectivity (wlan0)...
Aug 05 12:21:09 testclient dhclient[431]: DHCPREQUEST on wlan0 to 255.255.255.255 port 67
Aug 05 12:21:13 testclient dhclient[431]: DHCPREQUEST on wlan0 to 255.255.255.255 port 67
Aug 05 12:21:17 testclient dhclient[431]: DHCPREQUEST on wlan0 to 255.255.255.255 port 67
Aug 05 12:21:17 testclient dhclient[431]: DHCPACK from 192.168.100.1
Aug 05 12:21:17 testclient dhclient[431]: bound to 192.168.100.11 -- renewal in 60 seconds.
Aug 05 12:21:17 testclient systemd[1]: Started Wireless network connectivity (wlan0).
Aug 05 12:22:17 testclient dhclient[549]: DHCPREQUEST on wlan0 to 192.168.100.1 port 67
Aug 05 12:22:17 testclient dhclient[549]: DHCPACK from 192.168.100.1
Aug 05 12:22:17 testclient dhclient[549]: bound to 192.168.100.11 -- renewal in 53 seconds.

APの再起動:

Aug  5 12:26:55 testclient systemd-networkd[422]: wlan0           : lost carrier
Aug  5 12:26:55 testclient dhclient: DHCPREQUEST on wlan0 to 192.168.100.1 port 67
Aug  5 12:27:00 testclient dhclient: DHCPREQUEST on wlan0 to 192.168.100.1 port 67
Aug  5 12:27:12 testclient dhclient: DHCPREQUEST on wlan0 to 192.168.100.1 port 67
Aug  5 12:27:32 testclient dhclient: DHCPREQUEST on wlan0 to 192.168.100.1 port 67

これにより、ワイヤレスサービスを再起動するためのsystemd-networkデバイスの「lost Carrier」オプションが欠落していると考えられます。

SEとGoogleの検索技術が失敗した場合は、どの部分を見逃したのか、どこで詳細情報を入手できるのかをご覧ください。ありがとうございます。

注:raspberrypi.seのヘルプに従って、rpi seウェブサイトを使用せずにUXを使用する必要があります。 「Linux / Unixの問題に直接関連する質問。UnixとLinux Exchangeの使用」セクションを誤って理解した場合は、続行してください。

いくつかの参考資料を試しましたが、ほとんどは古くなったり、私の状況には役に立ちませんでした。

https://raspberrypi.stackexchange.com/questions/4120/how-to-automatically-reconnect-wifi https://wiki.archlinux.org/index.php/WPA_supplicant

http://weworkweplay.com/play/automatically-connect-a-raspberry-pi-to-a-wifi-network/

https://raspberrypi.stackexchange.com/questions/37594/how-can-i-disable-autoconfigured-networking-on-raspbian

Wi-Fiが切断された場合、自動的に再接続されますか?

WIFIに自動的に再接続する方法を学びます

障害時に無線を再接続するためのシステム装置

関連情報