━━━ Konfigurowanie punktu dostępu ━━━
Mówimy o punkcie dostępu wraz z portem ethernetowym eth0 .
Jeśli chcesz punktu dostępu wraz z połączeniem klienta wlan0 z inną siecią Wi-Fi (repeater wlan), spójrz na punkt dostępu jako router / repeater WiFi, opcjonalnie z mostkiem .
Możliwe jest skonfigurowanie Raspbian Stretch jako punktu dostępu Wi-Fi bez instalowania dodatkowego oprogramowania. Wszystkie potrzebne komponenty są dostępne: sieć, serwer DHCP i mostkowanie są dostarczane z systemd-networkd, a Wi - Fi można skonfigurować za pomocą wpa_supplicant . Łączenie dwóch interfejsów eth0 i wlan0 można wykonać przez routing lub mostkowanie. Poniżej najpierw konfiguracja do szybkiej instalacji, a następnie szczegóły. Najpierw musimy przejść na systemd-networkd .
Testowany z
Raspbian Buster Lite 26.09.2019 na Raspberry Pi 4B zaktualizowany 18.01.2018.
Aktualizacje wykonane za pomocą sudo apt update && sudo apt full-upgrade && sudo reboot
.
Tutaj możesz znaleźć ostatnią przetestowaną wersję dla poprzednich wersji Raspbian .
♦ Ogólna konfiguracja
Przełącz na systemd-networkd
Aby uzyskać szczegółowe informacje, patrz (1) i Jak skonfigurować rozpoznawanie nazw za pomocą systemd-networkd . Tutaj tylko w skrócie. Wykonaj następujące polecenia:
# deinstall classic networking
rpi ~$ sudo -Es
rpi ~# apt --autoremove purge ifupdown dhcpcd5 isc-dhcp-client isc-dhcp-common
rpi ~# rm -r /etc/network /etc/dhcp
# setup systemd-resolved
rpi ~# apt --autoremove purge avahi-daemon
rpi ~# apt install libnss-resolve
rpi ~# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
rpi ~# systemctl enable systemd-resolved.service
# enable systemd-networkd
rpi ~# systemctl enable systemd-networkd.service
Skonfiguruj wpa_supplicant jako punkt dostępu
Aby skonfigurować wpa_supplicant jako punkt dostępowy utworzyć ten plik z ustawieniami do country=
, ssid=
, psk=
i może frequency=
. Możesz po prostu skopiować i wkleić to w jednym bloku do linii poleceń, zaczynając od cat
i włączając zarówno EOF (separator EOF nie otrzyma części pliku):
rpi ~# cat > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf <<EOF
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="RPiNet"
mode=2
frequency=2437
#key_mgmt=NONE # uncomment this for an open hotspot
# delete next 3 lines if key_mgmt=NONE
key_mgmt=WPA-PSK
proto=RSN WPA
psk="password"
}
EOF
rpi ~# chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
rpi ~# systemctl disable wpa_supplicant.service
rpi ~# systemctl enable [email protected]
Zakończono konfigurację ogólną. Wróć.
♦ Konfigurowanie samodzielnego punktu dostępu
Przykład tej konfiguracji:
wifi
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0)
\ /
(dhcp) 192.168.4.1
Wykonaj „Ustawienia ogólne”, a następnie utwórz następujący plik, aby skonfigurować wlan0 . Mamy tylko punkt dostępu. Nie ma skonfigurowanego urządzenia Ethernet.
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
EOF
Jeśli chcesz, uruchom ponownie.
Otóż to.
W przeciwnym razie kontynuuj, nie ma potrzeby ponownego uruchamiania w tym momencie.
♦ Utworzenie punktu dostępu i z eth0, bez routingu
Przykład tej konfiguracji:
|
wifi | wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / | \ /
(dhcp) 192.168.4.1 | (dhcp) 192.168.50.1
Ustawiać
Wykonaj „Konfigurowanie samodzielnego punktu dostępu”, a następnie utwórz następujący plik, aby skonfigurować eth0 .
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
EOF
Restart.
Otóż to.
Detale
Interfejs eth0 jest połączony kablem Ethernet z routerem internetowym i pobiera go przez DHCP z routera internetowego. Bez problemu można nadać mu statyczny adres IP np. Address=192.168.50.2
Zamiast DHCP=yes
.
Bez routingu nie można uzyskać dostępu do Internetu za pomocą telefonu komórkowego. Możesz wejść do niego tylko z samego RPi, aby uzyskać aktualizacje lub coś w tym rodzaju.
♦ Konfigurowanie punktu dostępu iz et0, z NAT (zalecane)
Przykład tej konfiguracji:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \
(dhcp) 192.168.4.1 (dhcp)
Ustawiać
Wykonaj „Ustawienia ogólne”, a następnie utwórz następujące pliki, aby skonfigurować wlan0 i eth0 . Jeśli wypróbowałeś jedną z poprzednich konfiguracji, możesz po prostu zastąpić dwa pliki. Upewnij się, że używasz innej podsieci dla punktu dostępu niż z routera. Router w tym przykładzie nie korzysta z podsieci 192.168.4.0/24. Jeśli potrzebujesz innej podsieci, po prostu zmień linię adresu, np Address=192.168.5.1/24
.
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
# IPMasquerade is doing NAT
IPMasquerade=yes
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
IPForward=yes
EOF
Restart.
Otóż to.
Detale
Jeśli nie masz dostępu do routera internetowego, możesz go sfałszować za pomocą NAT (translacja adresu sieciowego), aby kłamać, że wszystkie pakiety pochodzą z AP RasPi. Ale to nie jest czysty routing i ma ograniczenia. Klienci w podsieci routera nie mogą łączyć się z klientami w sieci Wi-Fi. Ale w większości przypadków nie jest to konieczne, więc ta konfiguracja jest zalecana, ponieważ upraszcza konfigurację. Jeśli musisz połączyć się z klientami Wi-Fi z sieci routera, musisz użyć pełnego routingu, jak opisano w następnej sekcji.
♦ Utworzenie punktu dostępowego i z eth0, z routingiem
Przykład tej konfiguracji:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \ /
(dhcp) 192.168.4.1 192.168.50.2 192.168.50.1
Ustawiać
Wykonaj „Ustawienia ogólne”, a następnie utwórz następujące pliki, aby skonfigurować wlan0 i eth0 . Jeśli wypróbowałeś jedną z poprzednich konfiguracji, możesz po prostu zastąpić dwa pliki. Upewnij się, że używasz różnych podsieci dla punktu dostępu i sieci routera. Musimy używać statycznych adresów IP, ponieważ musimy ich używać jako bram.
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Address=192.168.50.2/24
Gateway=192.168.50.1
DNS=84.200.69.80 1.1.1.1
IPForward=yes
EOF
Restart.
Aby routing został zakończony, musisz ustawić statyczną trasę w routerze internetowym, aby mógł on znaleźć trasę do powrotu pakietów przez RasPi do klientów podłączonych przez Wi-Fi do punktu dostępowego. Na większości routerów internetowych można ustawić trasę statyczną, ale sposób jej wykonania różni się w zależności od modelu. Od Ciebie zależy, czy się o tym dowiesz. Na przykład Twój raspi eth0 interfejs ma statyczny adres IP 192.168.50.2. Następnie na routerze brama (następny przeskok) to 192.168.50.2, sieć docelowa to 192.168.4.0/24 (lub 192.168.4.0 maska sieci 255.255.255.0).
To oznacza dla routera internetowego: „wyślij wszystkie pakiety należące do podsieci 192.168.4.0/24
(sieć docelowa z AP) do następnego routera w mojej podsieci, RasPi AP 192.168.50.2
(brama). Wie, gdzie się udać”.
Otóż to.
♦ Utworzenie punktu dostępu z mostem
Przykład tej konfiguracji:
RPi
wifi ┌──────bridge──────┐ wired wan
mobile-phone <.~.~.~> │(wlan0) br0 (eth0)│ <-------> router <-----> INTERNET
\ | / DHCP-server
(dhcp (dhcp 192.168.50.1
from router) from router)
Jeśli masz już sieć Ethernet z serwerem DHCP i routerem internetowym i chcesz ją rozszerzyć o punkt dostępu Wi-Fi, ale z tymi samymi adresami IP, wówczas korzystasz z mostka. Jest to często używane jako łącze nadrzędne do routera.
Ustawiać
Wykonaj „Ustawienia ogólne”, a następnie utwórz następujące trzy pliki, aby skonfigurować interfejsy sieciowe. Jeśli wypróbowałeś jedną z poprzednich konfiguracji, możesz po prostu usunąć wszystkie pliki /etc/systemd/network/
oprócz, 99-default.link
jeśli są obecne. Adresy IP są przykładami. Musisz użyć własnego.
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/02-br0.netdev <<EOF
[NetDev]
Name=br0
Kind=bridge
EOF
rpi ~# cat > /etc/systemd/network/04-br0_add-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Bridge=br0
EOF
rpi ~# cat > /etc/systemd/network/12-br0_up.network <<EOF
[Match]
Name=br0
[Network]
MulticastDNS=yes
DHCP=yes
# to use static IP uncomment these and comment DHCP=yes
#Address=192.168.50.60/24
#Gateway=192.168.50.1
#DNS=84.200.69.80 1.1.1.1
EOF
Teraz musimy powiedzieć wpa_supplicant, aby używał mostu. Robimy to, modyfikując jego usługę za pomocą:
rpi ~# systemctl edit [email protected]
W pustym edytorze wstaw te instrukcje, zapisz je i zamknij edytor:
[Service]
ExecStartPre=/sbin/iw dev %i set type __ap
ExecStartPre=/bin/ip link set %i master br0
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0
ExecStopPost=-/bin/ip link set %i nomaster
ExecStopPost=-/sbin/iw dev %i set type managed
Restart.
Otóż to.
Detale
Musimy powiedzieć wpa_supplicant, że jego interfejs wlan0 jest niewolnikiem mostu. W przeciwnym razie klient odrzuci połączenie z „złym hasłem”, co oznacza, że negocjacja klucza nie działa. Kiedy mówimy / sbin / wpa_supplicant z opcją -dbr0
użycia mostu dla wlan0, interfejs musi już być członkiem mostka. Tak właśnie robimy z plikiem zrzutu (nakładki) dla usługi wpa_supplicant . Pusta instrukcja ExecStart=
usuwa stary wpis. W przeciwnym razie masz dwie linie, ExecStart=
a wpa_supplicant uruchomi się dwa razy. Oryginał, ExecStart=
który możesz wyświetlić systemctl cat [email protected]
.
Zwykle router, do którego podłączony jest kabel Ethernet, ma włączony serwer DHCP. Most jest również przezroczysty dla żądań DHCP ze stacji (urządzeń podłączonych do punktu dostępu), więc nie musisz się martwić konfiguracją interfejsów z adresami IP i opcjami. Router go obsłuży.
wycieczka:
Jeśli jednak router nie ma serwera DHCP, możesz go skonfigurować na RasPi. systemd-networkd ma opcje konfiguracji wbudowanego serwera DHCP, ale problem polega na tym, że systemd-networkd zakłada, że działa on na samym routerze, co nie jest prawdą w tym przypadku. Będzie obsługiwał złe opcje dla stacji, w szczególności opcję routera . Nie ma sposobu, aby to skonfigurować. Więc musimy zainstalowaćdnsmasq
w takim przypadku można go skonfigurować w razie potrzeby. Zainstaluj i skonfiguruj za pomocą (na przykład użyj własnego adresu IP):
rpi ~$ sudo -Es
rpi ~# apt install dnsmasq
rpi ~# systemctl stop dnsmasq
rpi ~# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
rpi ~# cat > /etc/dnsmasq.conf <<EOF
interface=br0
dhcp-range=192.168.50.128,192.168.50.164,255.255.255.0,24h
dhcp-option=option:router,192.168.50.1
dhcp-option=option:dns-server,8.8.8.8,1.1.1.1
EOF
rpi ~# systemctl start dnsmasq
rpi ~# exit
rpi ~$
W tym przykładzie są adresy IP od 192.168.50.128 do 192.168.50.164 zarezerwowane dla stacji. W przypadku innych statycznych adresów IP użyj adresu spoza tej puli, również adresu IP samego mostu.
♦ Optymalizacja
Podczas uruchamiania wpa_supplicant najczęściej pojawia się w dzienniku:
wpa_supplicant[427]: random: Cannot read from /dev/random: Resource temporarily unavailable
wpa_supplicant[427]: random: Only 12/20 bytes of strong random data available from /dev/random
wpa_supplicant[427]: random: Not enough entropy pool available for secure operations
wpa_supplicant[427]: WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
To nie jest duży problem. wpa_supplicant potrzebuje liczb losowych, aby wygenerować klucze szyfrujące. Odbywa się to trochę powoli, więc musi poczekać. Na szczęście RasPi ma wbudowany T rue R andom N umber G enerator (TRNG). Możemy go użyć i przyspieszyć uzyskiwanie losowych liczb, instalując oprogramowanie (3) z:
rpi ~$ sudo apt install rng-tools
Aktualizacja:
Od Raspbian Stretch 2019-04-08 nie trzeba instalować rng-tools
. Są instalowane domyślnie.
♦ Rozwiązywanie problemów
systemd-networkd
Spójrz na status usługi:
rpi ~$ systemctl status systemd-networkd.service
rpi ~$ systemctl status [email protected]
A nawet trochę więcej:
rpi ~$ journalctl --boot --pager-end
Uważam, że pomocne jest śledzenie trwającego logowania:
rpi ~$ journalctl --boot --follow
Jeśli zrobiłeś zrzut pliku, możesz spojrzeć na wynik:
rpi ~$ systemctl cat [email protected]
Aby sprawdzić środowisko wykonawcze jednostki, możesz je pokazać i na przykład sprawdzić, czy są dwie ExecStart=
linie:
rpi ~$ systemctl show [email protected]
A jeśli nic innego nie pomoże, możesz włączyć opcję debugowania /sbin/wpa_supplicant
za -d
pomocą upuszczonego pliku:
rpi ~$ sudo systemctl edit [email protected]
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0 -d
Dane wyjściowe znajdują się w dzienniku. W ten sposób znalazłem problem z niewłaściwą negocjacją klucza.
wifi
Jeśli skonfigurowałeś punkt dostępu, powinieneś go znaleźć za pomocą telefonu komórkowego. Pokazuje dostępne sieci, ma nazwę RPiNet i możesz się z nią połączyć. Na RasPi możesz również użyć polecenia:
rpi ~$ sudo iw dev wlan0 info
phy#0
Interface wlan0
ifindex 3
wdev 0x2
addr b8:27:eb:06:e8:8b
ssid RPiNet
type AP
channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
Jak widać, jest to typ AP (punkt dostępu), a także pokaże, jakiego kanału używa. Problemem może być przełożenie kanału na częstotliwość. Częstotliwość musi pasować do kanału. Możesz spojrzeć na (2), aby zobaczyć listę kanałów WLAN. Na przykład do korzystania kanale 36 w paśmie 5,1 GHz, trzeba ustawić frequency=5180
w /etc/wpa_supplicant\wpa_supplicant.conf
. Ale musisz mieć pewność, że twoje WiFi obsługuje pasmo 5,1 GHz. Możesz to sprawdzić za pomocą sudo iw phy
. To da ci mnóstwo informacji. Musi także zawierać obsługiwane częstotliwości powyżej 5000 MHz. Jeśli widzisz tylko częstotliwości 24xx MHz, możesz oczywiście tylko tego użyć.
Kolejnym punktem mogą być liczby losowe. Do szyfrowania kluczy dla bezpiecznych połączeń wpa_supplicant potrzebuje liczb losowych. Generowanie tego jest bardzo wolne na Raspberry Pi. Jeśli nie ma wystarczającej entropii do wygenerowania kluczy szyfrujących, wpa_supplicant odrzuci uwierzytelnienie. Możesz sprawdzić, cat /proc/sys/kernel/random/entropy_avail
ile entropii jest dostępnych. Powinno być> 1000, aby działać wystarczająco szybko. Aby to przyspieszyć, rng-tools
są instalowane domyślnie. Więcej informacji znajduje się w sekcji Optymalizacja .
referencje:
[1] Jak przeprowadzić migrację z sieci do systemd-networkd z dynamicznym przełączaniem awaryjnym
[2] Lista kanałów WLAN
[3] Narzędzia Rng
ls /var/log/journal/
. Zobaczysz katalog, który wyglądafa9462093e8d419cb646d0a0c44771c2
. To jest miejsce na dziennik, do którego masz dostępjournalctl
. Zaktualizuję swoją odpowiedź.proto=WPA2
w konfiguracji AP. Mój telefon przynajmniej narzeka na „słabe bezpieczeństwo” bez niego.proto=RSN
. Właśnie to preferuje docu (nazywanieproto=WPA2
aliasu).Jeszcze łatwiejszym sposobem skonfigurowania Raspberry Pi jako AP jest użycie repozytorium Github pi-ap, które automatyzuje konfigurację Pi 3B + / 4 w AP.
Podłącz Pi do wolnego portu w routerze podłączonym do Internetu, który ma włączony DHCP (prawdopodobnie w większości routerów konsumenckich).
Po podłączeniu SSH do Pi na adresie IP przypisanym do DHCP przypisanym
eth0
przez router, a następnie:Wypij herbatę i po odczekaniu około 2 minut ustawiony przez Ciebie identyfikator SSID
variables.sh
pojawi się na liście sieci bezprzewodowych. Połącz się z reklamowaną siecią WLAN Pi.Aby SSH bezpośrednio do samego AP na
wlan0
interfejsie Pi , użyj domyślnego adresu IP192.168.0.1
UWAGA : domyślna podsieć DHCP, której pi-ap używa do przypisania adresów IP klientów WiFi,
variables.sh
to192.168.0.0/28
. Jeśli już korzystasz z tej podsieci w swojej sieci, ustaw inną podsiećvariables.sh
dla klientów WiFi PRZED uruchomienieminstall.sh
.Do uzyskania dobrych wyników nie jest wymagany kalkulator podsieci ani nawet poważne umiejętności sieciowe. pi-ap obsługuje nawet ograniczenia dostępu przez listy ACL MAC.
UJAWNIENIE : Jestem twórcą pi-ap .
źródło
━━━ Sprawdź instalację krok po kroku za pomocą punktów kontrolnych ━━━
Ta odpowiedź nie jest brana pod uwagę przy konfiguracji. Aby uzyskać stabilną konfigurację, spójrz na drugą odpowiedź. Konfigurowanie punktu dostępu .
Ta odpowiedź służy głównie rozwiązywaniu problemów i pokazuje, jak działa ze szczegółowymi poleceniami krok po kroku i punktami kontrolnymi, ale bez informacji w tle. Podejrzewam, że do Raspberry Pi masz monitor, klawiaturę i mysz. Adresy IP i inne ustawienia w tym sprawdzeniu są przykładami. Musisz użyć swojego. Zawsze możesz sprawdzić
journalctl -b -e
zarejestrowane informacje.Download ZIP
obraz Raspbian Stretch Lite 2018-11-13 na komputer z systemem Linux.Punkt kontrolny 1: Porównaj sumę kontrolną z sumą kontrolną na stronie pobierania.
47ef1b2501d0e5002675a50b6868074e693f78829822eef64f3878487953234d 2018-11-13-raspbian-stretch-lite.zip
Następny krok: wypal obraz na dołączonej karcie SD:
Punkt kontrolny 2: sprawdź partycje na karcie SD:
Następny krok: zamontuj partycję rozruchową i utwórz
wpa_supplicant.conf
plik:Włóż kartę SD do RasPi i uruchom.
Punkt kontrolny 3: Po zalogowaniu sprawdź połączenie przewodowe. Eth0 interfejs musi mieć adres IP:
To powinno działać po wyjęciu z pudełka. Jeśli to nie działa, masz ogólny problem z konfiguracją sieci. Napraw to, zanim przejdziesz dalej.
Punkt kontrolny 4: Sprawdź punkt dostępu:
Wlan0 interfejs Powinni mieć adres IP. Ponieważ nie skonfigurowaliśmy interfejsu, będzie on miał adres lokalny Link od 169.254.0.0/16.
RPiNet zobaczysz na liście punktów dostępu w telefonie komórkowym, ale nie możesz się jeszcze z nim połączyć.
Następny krok: pełne uaktualnienie i ponowne uruchomienie:
Po ponownym uruchomieniu i zalogowaniu się przełącz się na systemd-networkd :
(*) Otrzymasz jedno lub dwa mylące ostrzeżenia „... Nie można ustawić atrybutu pliku ...” To nie są błędy i nie ma to znaczenia w tym przypadku.
Utwórz te pliki dla interfejsów eth0 i wlan0 z własnymi ustawieniami:
Zmień nazwę /etc/wpa_supplicant/wpa_supplicant.conf, aby pasowało do ustawienia interfejsu i uruchom ponownie:
Punkt kontrolny 5: Po ponownym uruchomieniu i zalogowaniu sprawdź połączenie przewodowe eth0 :
Punkt kontrolny 6: Sprawdź połączenie Wi-Fi wlan0 :
Sprawdź Wi-Fi na swoim telefonie komórkowym. Powinieneś znaleźć
RPiNet
i możesz się z nim połączyć. Twój telefon komórkowy nie może uzyskać dostępu do Internetu, ponieważ routing nie jest jeszcze skonfigurowany.Następny krok: włącz NAT dla połączenia internetowego. Aby skonfigurować NAT, musisz rozszerzyć usługę wpa_supplicant o:
W pustym edytorze wstaw te instrukcje, zapisz je i zamknij edytor:
Następnie wykonaj:
Punkt kontrolny 7: Teraz możesz mieć dostęp do Internetu za pomocą telefonu komórkowego.
źródło