문제 설명
systemd-networkd
네트워크 관리에 사용되는 임베디드 Linux 시스템이 있습니다. 약 절반의 시간 동안 장치는 30초 이내에 Wifi AP에 연결하고 DHCP를 통해 IPv4 주소를 얻을 수 있습니다. 다른 경우에는 시스템 로그에 인증 및 연결이 표시되지만 장치가 IPv4 주소를 얻지 못합니다. IP를 받지 못한 채 5분 이상을 기다렸습니다.
구성
/etc/systemd/network/wlan0.network
1) 구성 파일 은 다음과 같습니다 .
[Match]
Name=wlan0
[Network]
DHCP=ipv4
IPv6AcceptRA=no
LinkLocalAddressing=no
.network
파일 설정 도 다음과 같이 지정했습니다 DHCP=yes
. 결과는 동일해 보입니다.
/etc/wpa_supplicant.conf
2) 파일은 다음과 같습니다 .
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
country=US
network={
ssid=<my SSID>
psk=<my key>
}
3) 필요할 때 인터페이스를 수동으로 시작하기 [email protected]
때문에 내 파일을 구성하지 않았습니다 . wpa_supplicant
다른 네트워크 관리자(NetworkManager, connman 등)는 설치되지 않습니다. 저는 DHCP 도구(dhclient, dhcpcd)를 시작하지 않았습니다. 이를 달성하기 위해 systemd-network 내부에 의존했습니다.
디버그
dmesg | tail
1) 다음은 IP 주소 획득 여부에 관계없이 발생하는 연결을 보여주는 출력입니다 .
[ 846.988274] ieee80211 phy1: WMM Turbo=1
[ 847.312843] wlan0: authenticate with <AP MAC addr>
[ 847.329052] wlan0: send auth to <AP MAC addr> (try 1/3)
[ 847.334566] wlan0: authenticated
[ 847.352271] wlan0: associate with <AP MAC addr> (try 1/3)
[ 847.362762] wlan0: RX AssocResp from <AP MAC addr> (capab=0x1011 status=0 aid=1)
[ 847.373968] wlan0: associated
[ 847.391864] wlan0: Limiting TX power to 24 (24 - 0) dBm as advertised by <AP MAC addr>
이 출력은 드라이버에서 나오므로 "관련이 있습니다"라고 말하는 것 외에는 일반적인 의미에서는 별 의미가 없을 것입니다.
2) 일부 블로그/게시물에서는 DHCP 재협상을 트리거하기 위해 systemctl restart systemd-networkd
및 같은 명령을 사용할 것을 제안합니다. ifconfig wlan0 down && ifconfig wlan0 up
때로는 후자의 명령이 작동하는 경우도 있습니다. 단지 몇 초만 기다려도 효과가 있을지는 알 수 없지만요.
3) 모든 것이 정상이면 다음과 같은 로그가 표시됩니다.
Apr 25 12:41:43 host systemd-networkd[511]: [[0;1;39m[[0;1;31m[[0;1;39mwlan0: found matching network '/etc/systemd/network/wlan0.network', based on potentially unpredictable ifname[[0m
Apr 25 12:41:43 host systemd-networkd[511]: wlan0: IPv6 successfully disabled
Apr 25 12:41:48 host systemd-networkd[511]: wlan0: Gained carrier
Apr 25 12:41:48 host systemd-networkd[511]: wlan0: DHCPv4 address 10.217.244.165/8 via 10.128.128.128
Apr 25 12:41:48 host systemd-networkd[511]: wlan0: Configured
문제가 발생하면 "wlan0: 일치하는 네트워크를 찾았습니다..." 메시지만 표시됩니다.
4) 유사함 dmesg
: iw wlan0 link
IP를 얻지 못하더라도 AP에 대한 연결은 항상 표시됩니다.
$ iw wlan0 link
Connected to <AP MAC addr> (on wlan0)
SSID: <AP name>
freq: 5200
RX: 87243 bytes (416 packets)
TX: 3038 bytes (11 packets)
signal: -60 dBm
tx bitrate: 6.0 MBit/s
bss flags: short-slot-time
dtim period: 1
beacon int: 100
편집: 드라이버에는 "iw wlan0 링크 명령의 출력이 항상 연결된 대역의 가장 낮은 데이터 전송률로 비트 전송률을 표시합니다."라는 알려진 버그가 있습니다. 따라서 6.0MBit/s는 잘못되었습니다. 그러나 신호 레벨은 정확해야 합니다.
질문
이 작업을 안정적으로 수행하기 위한 디버깅이나 구성에 대한 추가 제안이 있는 사람이 있습니까? 이것이 드라이버 문제인지, 시스템 문제인지, 네트워크 문제인지 확실하지 않습니다.
답변1
주로 6Mbps의 TX 속도인 신호로 판단하면 레이어 2에는 분명히 개선이 필요한 문제가 있습니다. 안정적인 서비스를 보장할 만큼 신호가 강하지 않습니다.
신호 강도가 향상되면 DHCP 문제가 사라집니다.
TLDR 문제 자체는 유닉스에만 국한된 것이 아닙니다.