Konfigurowanie Raspberry Pi jako punktu dostępu - prosty sposób

16

Wiem, jak to zrobić w klasyczny sposób, jak opisano na przykład w oficjalnej dokumentacji Konfigurowanie Raspberry Pi jako punktu dostępu w autonomicznej sieci (NAT) . Ale to wymaga wielu różnych komponentów, które muszą grać razem, a każdy komponent musi być skonfigurowany na swój własny sposób. Są to sieci (ifupdown) , dhcpcd , hostapd , dnsmasq i bridge-utils .

Obecnie Raspbian Stretch ma wbudowane wszystkie potrzebne komponenty, więc nie trzeba instalować dodatkowego oprogramowania. Może to znacznie uprościć konfigurację.

Czy można tak skonfigurować Raspbian, aby działał jako punkt dostępu Wi-Fi bez instalowania dodatkowego oprogramowania?

Ingo
źródło

Odpowiedzi:

26

━━━ 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 cati 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.2Zamiast 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.linkjeś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ą -dbr0uż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ćdnsmasqw 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_supplicantza -dpomocą 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=5180w /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_availile entropii jest dostępnych. Powinno być> 1000, aby działać wystarczająco szybko. Aby to przyspieszyć, rng-toolssą 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

Ingo
źródło
rpi ~ # systemd-tmpfiles --create --prefix / var / log / journalroot FAILS z tym komunikatem wyjściowym @pi: ~ # systemd-tmpfiles --create --prefix / var / log / journal Nie można ustawić atrybutu pliku dla '/ var / log / journal ”, wartość = 0x00800000, maska ​​= 0x00800000: Operacja nie jest obsługiwana Nie można ustawić atrybutu pliku dla„ / var / log / journal / 6d18954849a74479955b761e891619aa ”, wartość = 0x00800000, maska ​​= 0x00800000: Operacja nie jest obsługiwana, więc dziennik nie może być obsługiwany zaimplementowano. Nie dobry początek wdrożenia procedury.
Jan Hus
1
Cześć @JanHus Dziękujemy za opinię. To tylko ostrzeżenie, a nie błąd i nie ma znaczenia. Dostaję to również za każdym razem. Trwały dziennik zostanie utworzony. Spójrz z ls /var/log/journal/. Zobaczysz katalog, który wygląda fa9462093e8d419cb646d0a0c44771c2. To jest miejsce na dziennik, do którego masz dostęp journalctl. Zaktualizuję swoją odpowiedź.
Ingo
Tak, sprawdziłem, czy plik został utworzony. Ale zostałem odsunięty na bok i zatrzymałem się. Będę kontynuować dzisiaj. Jak dotąd jest to jeden z lepszych „samouczków” na ten temat. Dzięki za opublikowanie. PS nazywa to trwałym OK? Trochę mylące, gdy jest tworzone przy użyciu procesu temp.
Jan Hus
2
@Ingo Myślę, że zaleca się stosowanie proto=WPA2w konfiguracji AP. Mój telefon przynajmniej narzeka na „słabe bezpieczeństwo” bez niego.
Robin Dinse
2
@RobinDinse Oczywiście masz rację. Ja to nadzorowałem. Dzięki za podpowiedź. Dodałem proto=RSN. Właśnie to preferuje docu (nazywanie proto=WPA2aliasu).
Ingo
3

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 eth0przez router, a następnie:

git clone https://github.com/f1linux/pi-ap

cd pi-ap

nano variables.sh   # Change default values for SSID & password

sudo ./install.sh

Wypij herbatę i po odczekaniu około 2 minut ustawiony przez Ciebie identyfikator SSID variables.shpojawi się na liście sieci bezprzewodowych. Połącz się z reklamowaną siecią WLAN Pi.

Aby SSH bezpośrednio do samego AP na wlan0interfejsie 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.shto 192.168.0.0/28. Jeśli już korzystasz z tej podsieci w swojej sieci, ustaw inną podsieć variables.shdla klientów WiFi PRZED uruchomieniem install.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 .

F1Linux
źródło
0

━━━ 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 -ezarejestrowane informacje.

Download ZIPobraz Raspbian Stretch Lite 2018-11-13 na komputer z systemem Linux.

Punkt kontrolny 1: Porównaj sumę kontrolną z sumą kontrolną na stronie pobierania.

pc ~$ sha256sum 2018-11-13-raspbian-stretch-lite.zip

47ef1b2501d0e5002675a50b6868074e693f78829822eef64f3878487953234d 2018-11-13-raspbian-stretch-lite.zip

Następny krok: wypal obraz na dołączonej karcie SD:

pc ~$ unzip -p 2018-11-13-raspbian-stretch-lite.zip | sudo dd of=/dev/sdb bs=4M conv=fsync

Punkt kontrolny 2: sprawdź partycje na karcie SD:

pc ~$ sudo parted /dev/sdb print
Model: Mass Storage Device (scsi)
Disk /dev/sdb: 3965MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      4194kB  50,2MB  46,0MB  primary  fat32        lba
 2      50,3MB  1866MB  1816MB  primary  ext4

Następny krok: zamontuj partycję rozruchową i utwórz wpa_supplicant.confplik:

pc ~$ mkdir boot/
pc ~$ sudo mount /dev/sdb1 boot/
pc ~$ sudo -e boot/wpa_supplicant.conf

# insert this into the empty editor with your settings, save it and quit the editor
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="RPiNet"
    mode=2
    key_mgmt=WPA-PSK
    psk="password"
    frequency=2412
}

pc ~$ sudo umount boot/

Włóż kartę SD do RasPi i uruchom.

Punkt kontrolny 3: Po zalogowaniu sprawdź połączenie przewodowe. Eth0 interfejs musi mieć adres IP:

rpi ~$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.50.177/24 brd 192.168.50.255 scope global eth0
       valid_lft forever preferred_lft forever

rpi ~$ ping -I eth0 -c3 google.com
PING google.com (172.217.22.78) from 192.168.50.177 eth0: 56(84) bytes of data.
64 bytes from fra15s17-in-f14.1e100.net (172.217.22.78): icmp_seq=1 ttl=55 time=15.0 ms
64 bytes from fra15s17-in-f14.1e100.net (172.217.22.78): icmp_seq=2 ttl=55 time=14.7 ms
64 bytes from fra15s17-in-f14.1e100.net (172.217.22.78): icmp_seq=3 ttl=55 time=15.1 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 14.729/14.965/15.125/0.170 ms

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:

rpi ~$ sudo iw dev wlan0 info
Interface wlan0
        ifindex 3
        wdev 0x1
        addr b8:27:eb:06:e8:8b
        ssid RPiNet
        type AP
        wiphy 0
        channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
        txpower 31.00 dBm

Wlan0 interfejs Powinni mieć adres IP. Ponieważ nie skonfigurowaliśmy interfejsu, będzie on miał adres lokalny Link od 169.254.0.0/16.

rpi ~$ ip -4 addr show dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 169.254.210.182/16 brd 169.254.255.255 scope global wlan0
       valid_lft forever preferred_lft forever

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:

rpi ~$ sudo apt update
rpi ~$ sudo apt full-upgrade
rpi ~$ sudo systemctl reboot

Po ponownym uruchomieniu i zalogowaniu się przełącz się na systemd-networkd :

rpi ~$ sudo -Es
rpi ~# mkdir -p /var/log/journal
rpi ~# systemd-tmpfiles --create --prefix /var/log/journal #ignore warnings (*)

rpi ~# apt install rng-tools
rpi ~# systemctl mask networking.service
rpi ~# systemctl mask dhcpcd.service
rpi ~# sudo mv /etc/network/interfaces /etc/network/interfaces~
rpi ~# sed -i '1i resolvconf=NO' /etc/resolvconf.conf

rpi ~# systemctl enable systemd-networkd.service
rpi ~# systemctl enable systemd-resolved.service
rpi ~# ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

(*) 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:

rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Address=192.168.50.60/24
Gateway=192.168.50.1
DNS=84.200.69.80 84.200.70.40
IPForward=yes
EOF

rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 84.200.70.40
EOF

Zmień nazwę /etc/wpa_supplicant/wpa_supplicant.conf, aby pasowało do ustawienia interfejsu i uruchom ponownie:

rpi ~# mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
rpi ~# systemctl disable [email protected]
rpi ~# systemctl reboot

Punkt kontrolny 5: Po ponownym uruchomieniu i zalogowaniu sprawdź połączenie przewodowe eth0 :

rpi ~$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.50.60/24 brd 192.168.50.255 scope global eth0
       valid_lft forever preferred_lft forever

rpi ~$ ping -I eth0 -c3 google.com
PING google.com (172.217.10.14) from 192.168.50.60 eth0: 56(84) bytes of data.
64 bytes from lga34s12-in-f14.1e100.net (172.217.10.14): icmp_seq=1 ttl=51 time=93.5 ms
64 bytes from lga34s12-in-f14.1e100.net (172.217.10.14): icmp_seq=2 ttl=51 time=93.5 ms
64 bytes from lga34s12-in-f14.1e100.net (172.217.10.14): icmp_seq=3 ttl=51 time=93.5 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 93.519/93.551/93.592/0.030 ms

Punkt kontrolny 6: Sprawdź połączenie Wi-Fi wlan0 :

rpi ~$ sudo systemctl start [email protected]
rpi ~$ sudo iw dev wlan0 info
Interface wlan0
        ifindex 3
        wdev 0x1
        addr b8:27:eb:06:e8:8b
        ssid RPiNet
        type AP
        wiphy 0
        channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
        txpower 31.00 dBm

rpi ~$ ip -4 addr show dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.4.1/24 brd 192.168.4.255 scope global wlan0
       valid_lft forever preferred_lft forever

Sprawdź Wi-Fi na swoim telefonie komórkowym. Powinieneś znaleźć RPiNeti 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:

rpi ~$ sudo systemctl edit [email protected]

W pustym edytorze wstaw te instrukcje, zapisz je i zamknij edytor:

[Service]
ExecStartPre=/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ExecStopPost=-/sbin/iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Następnie wykonaj:

rpi ~$ sudo systemctl daemon-reload
rpi ~$ sudo systemctl restart systemd-networkd.service
rpi ~$ sudo systemctl restart [email protected]

Punkt kontrolny 7: Teraz możesz mieć dostęp do Internetu za pomocą telefonu komórkowego.

Ingo
źródło
@ Wim W usuniętej odpowiedzi zapytałeś: „Jak można to zrobić dzięki nowej wersji Buster Raspbian?” Odpowiedź „━━━ Sprawdź instalację krok po kroku za pomocą punktów kontrolnych ━━━” nie jest właściwa, jeśli chcesz skonfigurować punkt dostępu. W tym celu należy użyć innej odpowiedzi „━━━ Konfigurowanie punktu dostępu ━━━” tutaj po tej stronie. Działa również z Raspbian Buster. Właśnie to zweryfikowałem.
Ingo