Создание точки доступа Wi-Fi с мостовым подключением в Centos 8 (или Fedora)

Я пытаюсь создать точку доступа WiFi в системе Centos 8 с помощью NetworkManager. Это Dell EPC3000, с двумя встроенными беспроводными адаптерами GigE и ath10k, а также LTE WWAN.

Создание точки доступа с NAT работает хорошо:

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 

Это назначает частный IP-адрес интерфейсу wlp4s0, вызывает dnsmasq для dhcp и создает правильную конфигурацию iptables для точки доступа.

Теперь моя идея состоит в том, чтобы покончить с NAT и связать интерфейс Wi-Fi со вторичным GigE, обслуживая клиентов Wi-Fi из этого сегмента с помощью своего удаленного DHCP и других служб.

Создание моста. и порабощение wlp4s0 и вторичного GigE работает нормально, в то время как AP продолжает работать и сигнализировать (используя nmcli полностью)

# 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

Когда соединение wlp4s0ap порабощено br0, оно предсказуемо теряет свои настройки IPv4. Мост br0 работает так, как если бы я включил на нем DHCP, он получает IPv4 / v6 из мостового сегмента GigE.

Теперь можно подумать, что конфигурация моста не повлияет (управляемый dbus) wpa_supplicant, который поддерживает точку доступа . Однако всякий раз, когда интерфейс wlp4s0 соединен мостом, wpa_supplicant постоянно останавливает аутентификацию WPA на полпути при завершении рукопожатия 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

Зная, что этот тип моста используется для большинства точек доступа на базе Linux, мне интересно, что Centos 8 делает иначе чтобы сломать wpa_supplicant. Я также скомпилировал новейшую версию wpa_supplicant из w1.fi git, но она вела себя точно так же: отлично работала с NAT, но ломалась с мостом.

Я также поиграл с / sys / class / net / br0 / bridge / group_fwd_mask, чтобы убедиться, пакеты управления Wi-Fi не отбрасываются, никакого эффекта.

Пробовал также общий (скомпилированный) пакет hostapd вне NetworkManager (используемый, например, точками доступа DD-WRT), но он также нарушает WPA, когда я включаю мост.

Любые предложения, какие попробовать дальше?

1
задан 21 December 2019 в 00:15
4 ответа

Я получил соединенное мостом AP, работающее

  • компиляция, и установка hostapd из источника
  • неруководящий интерфейс WiFi от NetworkManager (nmcli dev набор справился не)
  • создание интерфейса моста с NetworkManager и добавлением 2-го Ethernet как ведомое устройство
  • отключающий обеспеченный системой wpa_supplicant
  • , добавляющий "bridge=br0" в hostapd.conf стартовый hostapd

Теперь, я думаю, что это должно быть возможно с NetworkManager и стандартом wpa_supplicant также, но это решение работы на данный момент.

0
ответ дан 29 December 2019 в 22:49

NetworkManager не может создавать точки доступа, являющиеся частью моста, см. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/83 . Это не уникально для Centos. «то, как это делают большинство точек доступа на базе Linux», заключается в использовании hostapd.

1
ответ дан 24 May 2020 в 13:37

Я попробовал почти то же самое и получил точно такой же результат. Единственное отличие состоит в том, что я использовал nmcli для выполнения всех операций вместо brctl. Однако вам следует убедиться, что точка доступа работает правильно, если вы используете незащищенную сеть Wi-Fi (без WPA).

То, что следует далее, является моей довольно верной догадкой после того, как я прочитал довольно много, но я просто не мог найти время для отладки и проверки этого.

Существует фундаментальное различие между созданием мостовой точки доступа и созданием моста Wi-Fi-Ethernet (например, WDS). Первый может использовать кадры с 3 адресами, а второй использует кадры с 4 адресами. Я думаю, что происходит то, что когда мы соединяем eth0 с wlan0, он использует «общее» мостовое соединение (которое также, похоже, пытается создать прозрачное мостовое соединение), что подразумевает 4-адресное кадрирование и т. д. , Передача имени моста в wpa_supplicant или hostapd, по-видимому, настраивает более индивидуальный мост преобразования ethernet-wifi, который использует 3-адресное кадрирование.

Непосредственной причиной отказа этого метода является то, что wpa_supplicant, не зная о мосте, приводит к тому, что сообщения EAPol отбрасываются точкой доступа (см. https://ubuntuforums.org/archive/index.php/ t-1692292.html).

Я действительно надеюсь, что кто-то, кто более глубоко разбирается в мостах и ​​точках доступа, сможет взяться за дело и взять его отсюда.

0
ответ дан 22 August 2020 в 14:51

NetworkManager / nmcli CAN создавать точки доступа, являющиеся частью моста. Проситель WPA казался возникла проблема с определением типа интерфейса после моста, однако это было решено путем добавления интерфейса моста в аргументы командной строки wpa_suppliant в /etc/sysconfig/wpa_supplicant (CentOS 8.2)

INTERFACES="-i wlp2s0 - b br0"

Подключение Ethernet к интерфейсу Wi-Fi с помощью nmcli https://unix.stackexchange.com/questions/620169/disable-wifi-security-in-network-manger

1
ответ дан 18 November 2020 в 07:33

Теги

Похожие вопросы