J'essaie de créer un hotspot wifi ponté sur un système Centos 8, à l'aide de NetworkManager. La machine est Dell EPC3000, avec deux adaptateurs sans fil GIGE intégrés et ATH10K, plus un LTE WWAN.
Créer un point d'accès naulé fonctionne bien:
nmcli con add type wifi ifname wlp4s0 con-name wlp4s0 autoconnect yes ssid test
nmcli con modify wlp4s0 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared
nmcli con modify wlp4s0ap wifi-sec.key-mgmt wpa-psk
nmcli con modify wlp4s0ap wifi-sec.psk "password"
nmcli con up wlp4s0ap
Ceci attribue une adresse IP privée à l'interface WLP4S0, invoque DNSMASQ pour DHCP et crée une configuration appropriée IPTABLES pour le hotspot.
Maintenant, mon idée est de supprimer NAT et pontez l'interface WiFi au gigeon secondaire, servant des clients WiFi de ce segment avec son DHCP distant et d'autres services.
Créer un pont et une asservissement WLP4S0 et le gigue secondaire fonctionne correctement, tandis que l'AP reste up & Beaconing (en utilisant NMCLI tout le chemin))
# bridge link
4: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100
5: wlp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100
Lorsque la connexion WLP4S0AP est asservie à BR0, elle perd de manière prévisible ses réglages IPv4. Le pont BR0 fonctionne, comme si j'accepte DHCP dessus, il reçoit IPv4/V6 du segment gigue ponté.
On pourrait maintenant penser que la configuration du pont n'affecterait pas (le DBU-contrôlé) WPA_Supplicant qui maintient le point d'accès. Cependant, chaque fois que l'interface WLP4S0 est pontée, WPA_Supplicant s'arrête toujours WPA Authentification à mi-chemin lors de la finalisation de la poignée de main EAPOL:
hostapd_logger: STA 84:c7:ea:39:9b:28 - start authentication
WPA: 84:c7:ea:39:9b:28 WPA_PTK entering state INITIALIZE
wpa_driver_nl80211_set_key: ifindex=5 (wlp4s0) alg=0 addr=0x55d8a39e0bb0 key_idx=0 set_tx=1 seq_len=0 key_len=0
addr=84:c7:ea:39:9b:28
nl80211: Set STA flags - ifname=wlp4s0 addr=84:c7:ea:39:9b:28 total_flags=0x66 flags_or=0x0 flags_and=0xfffffffe authorized=0
hostapd_logger: STA 84:c7:ea:39:9b:28 - unauthorizing port
WPA: 84:c7:ea:39:9b:28 WPA_PTK_GROUP entering state IDLE
WPA: 84:c7:ea:39:9b:28 WPA_PTK entering state AUTHENTICATION
WPA: 84:c7:ea:39:9b:28 WPA_PTK entering state AUTHENTICATION2
WPA: Assign ANonce - hexdump(len=32): 6c 11 09 50 95 fc 7d 80 80 a0 a9 a7 be eb 23 d3 ec 6e f4 ef 42 87 ca 45 5e 55 80 5b 54 c0 38 7e
WPA: 84:c7:ea:39:9b:28 WPA_PTK entering state INITPSK
Searching a PSK for 84:c7:ea:39:9b:28 prev_psk=(nil)
Searching a PSK for 84:c7:ea:39:9b:28 prev_psk=(nil)
WPA: 84:c7:ea:39:9b:28 WPA_PTK entering state PTKSTART
hostapd_logger: STA 84:c7:ea:39:9b:28 - sending 1/4 msg of 4-Way Handshake
WPA: Send EAPOL(version=2 secure=0 mic=0 ack=1 install=0 pairwise=1 kde_len=0 keyidx=0 encr=0)
WPA: Replay Counter - hexdump(len=8): 00 00 00 00 00 00 00 01
WPA: Use EAPOL-Key timeout of 100 ms (retry counter 1)
wlp4s0: hostapd_new_assoc_sta: reschedule ap_handle_timer timeout for 84:c7:ea:39:9b:28 (300 seconds - ap_max_inactivity)
wlp4s0: Event EAPOL_TX_STATUS (37) received
hostapd_logger: STA 84:c7:ea:39:9b:28 - EAPOL-Key timeout
WPA: 84:c7:ea:39:9b:28 WPA_PTK entering state PTKSTART
hostapd_logger: STA 84:c7:ea:39:9b:28 - sending 1/4 msg of 4-Way Handshake
WPA: Send EAPOL(version=2 secure=0 mic=0 ack=1 install=0 pairwise=1 kde_len=0 keyidx=0 encr=0)
WPA: Replay Counter - hexdump(len=8): 00 00 00 00 00 00 00 02
WPA: Use EAPOL-Key timeout of 1000 ms (retry counter 2)
wlp4s0: Event EAPOL_TX_STATUS (37) received
hostapd_logger: STA 84:c7:ea:39:9b:28 - EAPOL-Key timeout
WPA: 84:c7:ea:39:9b:28 WPA_PTK entering state PTKSTART
hostapd_logger: STA 84:c7:ea:39:9b:28 - sending 1/4 msg of 4-Way Handshake
WPA: Send EAPOL(version=2 secure=0 mic=0 ack=1 install=0 pairwise=1 kde_len=0 keyidx=0 encr=0)
WPA: Replay Counter - hexdump(len=8): 00 00 00 00 00 00 00 03
WPA: Use EAPOL-Key timeout of 1000 ms (retry counter 3)
wlp4s0: Event EAPOL_TX_STATUS (37) received
hostapd_logger: STA 84:c7:ea:39:9b:28 - EAPOL-Key timeout
WPA: 84:c7:ea:39:9b:28 WPA_PTK entering state PTKSTART
hostapd_logger: STA 84:c7:ea:39:9b:28 - sending 1/4 msg of 4-Way Handshake
WPA: Send EAPOL(version=2 secure=0 mic=0 ack=1 install=0 pairwise=1 kde_len=0 keyidx=0 encr=0)
WPA: Replay Counter - hexdump(len=8): 00 00 00 00 00 00 00 04
WPA: Use EAPOL-Key timeout of 1000 ms (retry counter 4)
wlp4s0: Event EAPOL_TX_STATUS (37) received
hostapd_logger: STA 84:c7:ea:39:9b:28 - EAPOL-Key timeout
WPA: 84:c7:ea:39:9b:28 WPA_PTK entering state PTKSTART
hostapd_logger: STA 84:c7:ea:39:9b:28 - PTKSTART: Retry limit 4 reached
Sachant que ce type de pontage est la façon dont la plupart des points d'accès à base de Linux le font, je me demande quels Centos 8 effectue différemment de casser le WPA_Supplicant. J'ai également compilé le dernier WPA_Supplicant de W1.FI Git, mais il se comporte de la même manière, fonctionnant parfaitement avec NAT mais rompre avec le pont.
J'ai aussi traité avec/SYS/SYS/NET/BR0/BRIGE/GROUP_FWD_MASK Pour vous assurer qu'aucun paquets de contrôle WiFi n'est supprimé, aucun effet.
Essayé également Paquet HostapD en dehors de NetworkManager (E.g. utilisé par DD-WRT Points d'accès), mais il rompt également WPA une fois que je active le pontage.
Toute suggestion à essayer ensuite?
NetworkManager ne peut pas créer de points d'accès faisant partie d'un pont, voir https://gitlab.freedesktop.org/networkmanager/networkmanager/-/issues/8 . Ce n'est pas unique à Centos. "La façon dont la plupart des points d'accès à base de Linux le font" est d'utiliser HostapD.