Налаштування Raspberry Pi як точки доступу - простий спосіб


16

Я знаю, як це зробити класичним способом, як описано, наприклад, офіційною документацією щодо Налагодження Raspberry Pi як точки доступу в самостійній мережі (NAT) . Але для цього потрібно багато різних компонентів, які повинні грати разом, і кожен компонент повинен бути налаштований по-своєму. Це мережі (ifupdown) , dhcpcd , hostapd , dnsmasq і bridge-utils .

На сьогоднішній день Raspbian Stretch має вбудовані всі необхідні компоненти, тому не потрібно встановлювати додаткове програмне забезпечення. Це може значно спростити налаштування.

Чи можливо просто налаштувати Raspbian на роботу в якості точки доступу до Wi-Fi без встановлення додаткового програмного забезпечення?

Відповіді:


26

Налаштування точки доступу ━━━

Ми говоримо про точку доступу разом із портом Ethernet eth0 .

Якщо ви хочете точку доступу разом з підключенням wlan0 клієнта до іншої мережі Wi-Fi (wlan repeater), то подивіться на точку доступу як маршрутизатор / ретранслятор WiFi, необов'язково з мостом .

Можна настроїти Raspbian Stretch як точку доступу до Wi-Fi без встановлення додаткового програмного забезпечення. Доступні всі необхідні компоненти: мережа, DHCP-сервер та з'єднання з мережевою системою, а Wi-Fi можна налаштувати за допомогою wpa_supplicant . Підключення двох інтерфейсів eth0 і wlan0 можна здійснити маршрутизацією або мостом. Нижче спочатку налаштування для швидкого встановлення, а потім деталі. Спочатку ми маємо перейти на systemd-networkd .

Тестовано з
Raspbian Buster Lite 2019-09-26 на Raspberry Pi 4B, оновлене 2020-01-18.
Оновлення, зроблені за допомогою sudo apt update && sudo apt full-upgrade && sudo reboot.
Тут ви можете знайти останню перевірену версію попередніх версій Raspbian .


♦ Загальна установка

Переключіться на systemd-networkd

Для детальної інформації дивіться (1) та Як налаштувати роздільну здатність імен за допомогою systemd-networkd . Тут лише коротко. Виконайте ці команди:

# 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

Налаштуйте wpa_supplicant як точку доступу

Щоб налаштувати wpa_supplicant в якості точки доступу створити цей файл з вашими настройками для country=, ssid=, psk=і , можливо frequency=. Ви можете просто скопіювати та вставити це в один блок у свій командний рядок, починаючи з catта включаючи обидва EOF (роздільник EOF не отримає частину файлу):

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 wpa_supplicant@wlan0.service

Загальна установка завершена. Повертайся.


♦ Налаштування окремої точки доступу

Приклад цієї установки:

                 wifi
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0)
            \             /
           (dhcp)   192.168.4.1

Виконайте "Загальні настройки", а потім створіть наступний файл для налаштування wlan0 . У нас є лише точка доступу. Не налаштовано жодного мережевого пристрою.

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

Якщо ви хочете цього, перезавантажте.
Це воно.
Інакше продовжуйте, наразі не потрібно перезавантажувати.


♦ Налаштування точки доступу та з eth0, без маршрутизації

Приклад цієї установки:

                                 |
                 wifi            |           wired            wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
            \             /      |     \             /
           (dhcp)   192.168.4.1  |    (dhcp)   192.168.50.1

Налаштування

Виконайте "Налаштування окремої точки доступу", а потім створіть наступний файл для налаштування 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

Перезавантажте.
Це воно.

Деталі

Інтерфейс eth0 з'єднується з мережевим кабелем до інтернет-маршрутизатора і отримує його конфігурацію DHCP від ​​інтернет-маршрутизатора. Це не проблема, щоб надати йому статичну IP-адресу, наприклад, Address=192.168.50.2замість DHCP=yes.

Без маршрутизації ви не можете потрапити в Інтернет за допомогою мобільного телефону. Ви можете потрапити в нього лише із самого RPi, щоб отримати оновлення чи щось подібне.


♦ Налаштування точки доступу та з eth0, з NAT (рекомендується)

Приклад цієї установки:

                 wifi                        wired            wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
            \             /            \
           (dhcp)   192.168.4.1       (dhcp)

Налаштування

Виконайте "Загальне налаштування", а потім створіть такі файли для налаштування wlan0 та eth0 . Якщо ви спробували одну з попередніх налаштувань, ви можете просто перезаписати два файли. Будьте впевнені, що для точки доступу використовуєте іншу підмережу, ніж маршрутизатор. Роутер у цьому прикладі не використовує підмережу 192.168.4.0/24. Якщо вам потрібна інша підмережа, просто змініть рядок адреси, наприклад 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

Перезавантажте.
Це воно.

Деталі

Якщо у вас немає доступу до інтернет-роутера, ви можете підробити його NAT (переклад мережевих адрес), щоб сказати неправду, що всі пакети надходять з вашої програми AP RasPi. Але це не є чистою маршрутизацією і має обмеження. Клієнти в підмережі маршрутизатора не можуть підключитися до клієнтів через wifi. Але в більшості випадків це не потрібно, тому така настройка рекомендується, оскільки вона спрощує налаштування. Якщо вам потрібно підключитися до клієнтів Wi-Fi з мережі маршрутизаторів, вам доведеться використовувати повну маршрутизацію, як описано в наступному розділі.


♦ Налаштування точки доступу та з eth0, шляхом маршрутизації

Приклад цієї установки:

                 wifi                        wired            wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
            \             /            \              /
           (dhcp)   192.168.4.1   192.168.50.2   192.168.50.1

Налаштування

Виконайте "Загальне налаштування", а потім створіть такі файли для налаштування wlan0 та eth0 . Якщо ви спробували одну з попередніх налаштувань, ви можете просто перезаписати два файли. Не забудьте використовувати різні підмережі для точки доступу та мережі маршрутизаторів. Ми повинні використовувати статичні ip-адреси, оскільки ми повинні використовувати їх як шлюзи.

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

Перезавантажте.

Щоб повноцінно працювати, вам потрібно встановити статичний маршрут у своєму інтернет-маршрутизаторі, щоб він міг знайти маршрут для повернення пакетів через RasPi до клієнтів, підключених через Wi-Fi до точки доступу. На більшості інтернет-роутерів ви можете встановити статичний маршрут, але як це зробити, це залежить від моделі до моделі. Це вам належить дізнатись. Наприклад, ваш інтерфейс RasPi eth0 має статичну ip адресу 192.168.50.2. Тоді на вашому маршрутизаторі шлюз (наступний перехід) становить 192.168.50.2, цільова мережа - 192.168.4.0/24 (або 192.168.4.0 мережева маска 255.255.255.0).

Це означає для інтернет-маршрутизатора: "надішліть усі пакети, що належать до підмережі 192.168.4.0/24(цільова мережа від AP), до наступного маршрутизатора в моїй підмережі, AP RasPi 192.168.50.2(шлюз). Він знає, куди йти далі."

Це воно.


♦ Встановлення точки доступу з мостом

Приклад цієї установки:

                               RPi
               wifi   ┌──────bridge──────┐   wired            wan
mobile-phone <.~.~.~> │(wlan0) br0 (eth0)│ <-------> router <-----> INTERNET
            \                   |                   / DHCP-server
           (dhcp              (dhcp           192.168.50.1
        from router)       from router)

Якщо у вас вже є мережа Ethernet з сервером DHCP та маршрутизатором Інтернету, і ви хочете розширити її за допомогою точки доступу до wifi, але з тими ж IP-адресами, тоді ви використовуєте міст. Це часто використовується як висхідна лінія до маршрутизатора.

Налаштування

Виконайте "Загальні налаштування", а потім створіть наступні три файли для налаштування мережевих інтерфейсів. Якщо ви спробували одну з попередніх налаштувань, ви можете просто видалити всі файли, за /etc/systemd/network/винятком випадків, 99-default.linkколи вони є. IP-адреси - приклади. Ви повинні використовувати своє.

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

Тепер ми повинні сказати wpa_supplicant використовувати міст. Ми робимо це, змінюючи його сервіс на:

rpi ~# systemctl edit wpa_supplicant@wlan0.service

У порожній редактор вставити ці заяви, зберегти їх та вийти з редактора:

[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

Перезавантажте.
Це воно.

Деталі

Ми повинні сказати wpa_supplicant, що його інтерфейс wlan0 є рабом моста. Інакше він відхилить підключення клієнта із "неправильним паролем", це означає, що ключові переговори не працюють. Коли ми говоримо / sbin / wpa_supplicant з опцією -dbr0використовувати міст для wlan0, то інтерфейс повинен бути вже членом мосту. Це те, що ми робимо при падінні файлу (накладення) для сервісу wpa_supplicant . Порожнє повідомлення ExecStart=видаляє старий запис. Інакше у вас є два рядки, ExecStart=і wpa_supplicant почнеться два рази. Оригінал, який ExecStart=ви можете переглядати systemctl cat wpa_supplicant@wlan0.service.

Зазвичай у маршрутизаторі, до якого ви підключені за допомогою кабелю Ethernet, увімкнено сервер DHCP. Міст також прозорий для DHCP-запитів від станцій (пристроїв, підключених до точки доступу), тому вам не доведеться турбуватися про конфігурацію його інтерфейсів з ip адресами та параметрами. Роутер буде його обслуговувати.
екскурс:
Але якщо у маршрутизатора немає сервера DHCP, його можна встановити на RasPi. systemd-networkd має варіанти налаштування вбудованого сервера DHCP, але проблема полягає в тому, що systemd-networkd передбачає, що він працює на самому маршрутизаторі, і це не вірно в цьому випадку. Він подаватиме неправильні варіанти станцій, зокрема варіант маршрутизатора . Немає можливості його налаштувати. Тому нам доведеться встановитиdnsmasqу цьому випадку можна налаштувати за потребою. Встановіть і налаштуйте його за допомогою (наприклад, використовуйте власні 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 ~$

У цьому прикладі є ip адреси 192.168.50.128 до 192.168.50.164, зарезервовані для надання станціям. Для інших статичних ip-адрес використовується одна поза цього пулу, також ip-адреса для самого мосту.


♦ Оптимізація

При запуску wpa_supplicant ви в основному отримуєте ці повідомлення в журналі:

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

Це не велике питання. wpa_supplicant потрібні випадкові числа для створення ключів шифрування. Це робиться трохи повільно, тому доводиться чекати. До щастя, RasPi має вбудований в T Ріт R andom N темно - коричневий G enerator (TRNG). Ми можемо використовувати його та прискорити отримання випадкових чисел, встановивши частину програмного забезпечення (3) за допомогою:

rpi ~$ sudo apt install rng-tools

Оновлення:
оскільки Raspbian Stretch 2019-04-08 встановлювати не потрібно rng-tools. Вони встановлені за замовчуванням.


♦ Виправлення неполадок

systemd-networkd

Подивіться на статус послуги:

rpi ~$ systemctl status systemd-networkd.service
rpi ~$ systemctl status wpa_supplicant@wlan0.service

Або навіть трохи більше:

rpi ~$ journalctl --boot --pager-end

Мені було корисно слідкувати за поточним веденням журналу:

rpi ~$ journalctl --boot --follow

Якщо ви зробили падіння файлу, ви можете подивитися на результат:

rpi ~$ systemctl cat wpa_supplicant@wlan0.service

Щоб перевірити середовище виконання пристрою, ви можете показати його, наприклад, подивитися, чи є два ExecStart=рядки:

rpi ~$ systemctl show wpa_supplicant@wlan0.service

І якщо нічого іншого не допомагає, ви можете ввімкнути параметр налагодження /sbin/wpa_supplicantз -dу краплі файлу:

rpi ~$ sudo systemctl edit wpa_supplicant@wlan0.service
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0 -d

Вихід є в журналі. Таким чином я знайшов проблему з неправильним ключовим переговором.

wifi

Якщо у вас налаштована точка доступу, вам слід знайти її за допомогою мобільного телефону. Відображаючи доступні мережі, йому надається ім'я RPiNet і ви можете підключитися до нього. На RasPi ви також можете використовувати команду:

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

Як ви бачите, це тип AP (точка доступу), і він також покаже, який канал ви використовуєте. Проблема може полягати в перекладі каналу на частоту. Частота повинна відповідати каналу. Ви можете переглянути (2) список каналів WLAN. Наприклад , щоб використовувати канал 36 на смузі 5,1 ГГц , ви повинні встановити frequency=5180в /etc/wpa_supplicant\wpa_supplicant.conf. Але ви повинні бути впевнені, що ваш wifi підтримує діапазон 5,1 ГГц. Ви можете перевірити sudo iw phy. Це дасть вам купу інформації. Він також повинен містити підтримувані частоти понад 5000 МГц. Якщо ви бачите лише частоти 24xx МГц, то, звичайно, ви можете використовувати це лише.

Іншим моментом можуть бути випадкові числа. Для шифрування ключів для захищених з'єднань wpa_supplicant потрібні випадкові числа. Це створює дуже повільно на Raspberry Pi. Якщо у нього недостатньо ентропії для створення ключів шифрування, wpa_supplicant відхилить автентифікацію. Ви можете подивитися, cat /proc/sys/kernel/random/entropy_availскільки ентропії доступно. Для роботи досить швидко. Щоб прискорити це, rng-toolsустановки встановлені за замовчуванням. Перегляньте розділ Оптимізація для отримання додаткової інформації.


посилання:
[1] Як перейти від мереж до системних мереж з динамічним відмовою
[2] Список каналів WLAN
[3] Rng-інструменти


rpi ~ # systemd-tmpfiles --create --prefix / var / log / journalroot ЗНАТИ з цим вихідним повідомленням @pi: ~ # systemd-tmpfiles --create --prefix / var / log / journal Неможливо встановити атрибут файлу для '/ var / log / journal ', значення = 0x00800000, маска = 0x00800000: Операція не підтримується Неможливо встановити атрибут файлу для' / var / log / journal / 6d18954849a74479955b761e891619aa ', значення = 0x00800000, маска = 0x00800000: Операція не підтримується. здійснено. Не вдалий початок впровадження процедури.
Ян Гус

1
Привіт @JanHus Дякую за відгук Це лише попередження, не помилка і не має значення. Я також отримую це кожного разу. Створюється наполегливий журнал. Подивіться ls /var/log/journal/. Ви побачите каталог, який виглядає так fa9462093e8d419cb646d0a0c44771c2. Це сховище для журналу, до якого ви отримуєте доступ journalctl. Я оновлю свою відповідь.
Інго

Так, я перевірив, чи створено файл. Але я перейшов на бік і зупинився. Я продовжу сьогодні. Поки що це один з кращих "навчальних посібників" з цього питання. Дякуємо за публікацію PS називає це стійким? Мало заплутано, коли він створений за допомогою процесу temp.
Ян Хус

2
@Ingo Я думаю, що рекомендується використовувати proto=WPA2в конфігурації AP. Мій телефон, принаймні, скаржиться на "слабку безпеку" без нього.
Робін Дінзе

2
@RobinDinse Ви, звичайно, праві. Я це наглядав. Дякую за підказку. Я додав proto=RSN. Саме тому воліє доку (називаючи proto=WPA2псевдонім).
Інго

4

Навіть ПРОЩЕ способом налаштування малини Pi в якості точки доступу є використання пі-ар GitHub репо , який автоматизує конфігурацію Pi + 3B / 4 в точку доступу.

Підключіть Pi до вільного порту в підключеному до Інтернету маршрутизаторі, який увімкнено DHCP (можливо, це стосується більшості маршрутизаторів споживачів).

Після підключення SSH в Pi на DHCP, призначеному IP, призначеному eth0 маршрутизатором, а потім:

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

cd pi-ap

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

sudo ./install.sh

Випийте чай і, почекавши близько 2 хвилин, SSID, який ви встановили variables.sh, з’явиться у списку бездротових мереж. Підключіться до рекламної мережі W, що рекламується.

До SSH безпосередньо до AP на Pi wlan0 інтерфейсі , використовуйте IP за замовчуванням192.168.0.1

Будь ласка , зверніть увагу : по замовчуванням DHCP підмереж пі-ар використовує для призначення IP - адрес клієнтів WiFi в variables.shце 192.168.0.0/28. Якщо ви вже використовуєте цю підмережу у своїй мережі, встановіть іншу підмережу variables.shдля клієнтів WiFi перед тим, як виконати install.sh.

Для досягнення хороших результатів не потрібен калькулятор підмережі або навіть серйозні навички роботи в мережі. pi-ap навіть підтримує обмеження доступу через MAC ACL.

Розкриття : Я розробник pi-ap .


0

Перевірте установку поетапно за допомогою контрольних точок ━━━

Ця відповідь не налаштована для налаштування. Для стабільної настройки дивіться іншу відповідь Налаштування точки доступу .

Ця відповідь в основному призначена для усунення несправностей та для того, щоб показати, як вона працює з детальними командами крок за кроком та контрольними пунктами, але без довідкової інформації. Я думаю, у вас є монітор, клавіатура та миша, прикріплені до вашого Raspberry Pi. Ip адреси та інші налаштування в цій перевірці - приклади. Ви повинні використовувати своє. Ви завжди можете шукати journalctl -b -eзаписану інформацію.

Download ZIPзображення Raspbian Stretch Lite 2018-11-13 до вашого ПК на Linux.

Контрольна точка 1: Порівняйте контрольну суму з такою на сайті завантаження.

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

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

Наступний крок: Запишіть зображення на додану SD-карту:

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

Контрольна точка 2: перевірка розділів на 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

Наступний крок: змонтуйте завантажувальний розділ та створіть wpa_supplicant.confфайл:

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/

Помістіть SD-карту у ваш RasPi та завантажте її.

Контрольна точка 3: Після входу перевірте провідне з'єднання. Інтерфейс eth0 повинен мати 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

Це повинно вийти з коробки. Якщо це не працює, то у вас загальна проблема з налаштуванням мережі. Виправте це, перш ніж продовжувати.

Контрольна точка 4: Перевірте точку доступу:

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 інтерфейс Шоуду мати адресу IP. Оскільки ми не налаштували інтерфейс, він матиме локальну адресу посилання від 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 у списку точок доступу на вашому мобільному телефоні, але поки не можете підключитися до нього.

Наступний крок: Повне оновлення та перезавантаження:

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

Після перезавантаження та входу в систему перейдіть на 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

(*) Ви отримаєте одне або два заплутаних попередження "... Неможливо встановити атрибут файлу ..." У цьому випадку це не помилки і не має значення.

Створіть ці файли для інтерфейсів eth0 та wlan0 зі своїми налаштуваннями:

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

Перейменуйте /etc/wpa_supplicant/wpa_supplicant.conf, щоб він відповідав налаштуванню інтерфейсу та перезавантажте:

rpi ~# mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
rpi ~# systemctl disable wpa_supplicant@wlan0.service
rpi ~# systemctl reboot

Контрольна точка 5: Після перезавантаження та входу перевірте провідне з'єднання 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

Контрольно - пропускний пункт 6: Перевірте підключення Wi - Fi wlan0 :

rpi ~$ sudo systemctl start wpa_supplicant@wlan0.service
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

Перевірте wifi на своєму мобільному телефоні. Ви повинні знайти, RPiNetі ви можете підключитися до нього. Ваш мобільний телефон не може потрапити в Інтернет, оскільки маршрутизація ще не налаштована.

Наступний крок: увімкніть NAT для підключення до Інтернету. Для налаштування NAT вам потрібно розширити службу wpa_supplicant за допомогою:

rpi ~$ sudo systemctl edit wpa_supplicant@wlan0.service

У порожній редактор вставити ці заяви, зберегти їх та вийти з редактора:

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

Потім зробіть:

rpi ~$ sudo systemctl daemon-reload
rpi ~$ sudo systemctl restart systemd-networkd.service
rpi ~$ sudo systemctl restart wpa_supplicant@wlan0.service

Контрольний пункт 7: Тепер ви повинні мати можливість зайти в Інтернет за допомогою мобільного телефону.


@Wim Ви запитали у видаленій відповіді: "Як це можна зробити з новим випуском програми Raspbian Buster?" Ця відповідь "━━━ Перевірте встановлення крок за кроком з контрольними точками ━━━" не є правильною, якщо ви хочете встановити точку доступу. Для цього слід скористатися іншою відповіддю "━━━ Налаштування точки доступу ━━━" тут, на цій стороні. Він також працює з Raspbian Buster. Я це тільки перевірив.
Інго
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.