Настройка Raspberry Pi в качестве точки доступа - простой способ

16

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

В настоящее время в Raspbian Stretch встроены все необходимые компоненты, поэтому нет необходимости устанавливать дополнительное программное обеспечение. Это может сильно упростить настройку.

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

Инго
источник

Ответы:

26

━━━ Настройка точки доступа ━━━

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

Если вам нужна точка доступа вместе с клиентским подключением wlan0 к другой сети Wi-Fi (ретранслятор wlan), тогда смотрите на точку доступа как маршрутизатор / ретранслятор WiFi, опционально с мостом .

Можно настроить Raspbian Stretch в качестве точки доступа Wi-Fi без установки дополнительного программного обеспечения. Доступны все необходимые компоненты: сеть, DHCP-сервер и мостовые соединения поставляются с systemd-networkd, а wifi можно настроить с помощью 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=. Вы можете просто скопировать и вставить это в одном блоке в вашу командную строку, начиная с catEOF и включая оба (разделитель 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 . У нас есть только точка доступа. Устройство 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

Если вы хотите этого, перезагрузите компьютер.
Вот и все.
В противном случае, не нужно перезагружаться в это время.


♦ Настройка точки доступа и с 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 подключается через Ethernet-кабель к интернет-маршрутизатору и получает его настройку по 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 (трансляция сетевых адресов), чтобы лгать, что все пакеты поступают с вашей точки доступа RasPi. Но это не чистая маршрутизация и имеет ограничения. Клиенты в подсети маршрутизатора не могут подключаться к клиентам по Wi-Fi. Но в большинстве случаев это не требуется, поэтому рекомендуется выполнить эту настройку, поскольку она упрощает настройку. Если вам необходимо подключиться к 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(сеть назначения от точки доступа), следующему маршрутизатору в моей подсети, точке доступа 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-сервером и интернет-маршрутизатором, и вы хотите расширить ее с помощью точки доступа Wi-Fi, но с теми же 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-адресами и опциями. Маршрутизатор будет обслуживать его.
excursus:
Но если у маршрутизатора нет 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

Вывод в журнал. Таким образом, я нашел проблему с неправильным согласованием ключа.

Wi-Fi

Если вы настроили точку доступа, вы должны найти ее с помощью мобильного телефона. Показаны доступные сети, он представлен с именем 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. Но вы должны быть уверены, что ваш Wi-Fi поддерживает полосу 5,1 ГГц. Вы можете проверить сsudo iw phy . Это даст вам кучу информации. Он также должен содержать поддерживаемые частоты выше 5000 МГц. Если вы видите только частоты 24xx МГц, то, конечно, вы можете использовать только это.

Другим пунктом могут быть случайные числа. Для шифрования ключей для защищенных соединений wpa_supplicant нужны случайные числа. Генерация этого очень медленно на Raspberry Pi. Если энтропии недостаточно для генерации ключей шифрования, wpa_supplicant отклонит аутентификацию. Вы можете посмотреть, cat /proc/sys/kernel/random/entropy_availсколько энтропии доступно. Должно быть> 1000, чтобы работать достаточно быстро. Чтобы ускорить это, rng-toolsони установлены по умолчанию. Посмотрите раздел Оптимизация для получения дополнительной информации.


ссылки:
[1] Как перейти с сети на systemd-networkd с динамическим переключением при сбое
[2] Список каналов WLAN
[3] Rng-tools

Инго
источник
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 называет это постоянным, хорошо? Немного смущает, когда он создается с использованием временного процесса.
Ян Хус
2
@ Инго, я думаю, что рекомендуется использовать proto=WPA2в конфигурации AP. Мой телефон, по крайней мере, жалуется на «слабую безопасность» без него.
Робин
2
@RobinDinse Вы правы, конечно. Я наблюдал за этим. Спасибо за подсказку. Я добавил proto=RSN. Это то, что документ предпочитает (называя proto=WPA2псевдоним).
Инго
3

Еще более простой способ настроить Raspberry Pi в качестве точки доступа - использовать репозиторий pi-ap 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появится в списке беспроводных сетей. Подключитесь к рекламируемой сети WLAN Pi.

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

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ : подсеть DHCP по умолчанию, которую pi-ap использует для назначения IP-адресов WiFi-клиентов в variables.shis 192.168.0.0/28. Если вы уже используете эту подсеть в сети, установите другую подсеть в variables.shклиентах WiFi ПЕРЕД выполнения install.sh.

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

РАСКРЫТИЕ ИНФОРМАЦИИ : Я разработчик pi-ap .

F1Linux
источник
0

━━━ Проверьте установку шаг за шагом с контрольными точками ━━━

Этот ответ не предназначен для настройки. Для стабильной настройки посмотрите на другой ответ Настройка точки доступа .

Этот ответ в основном предназначен для устранения неполадок и показывает, как он работает, с подробными пошаговыми командами и контрольными точками, но без дополнительной информации. Я полагаю, у вас есть монитор, клавиатура и мышь, подключенные к вашему Raspberry Pi. IP-адреса и другие настройки в этой проверке являются примерами. Вы должны использовать свой. Вы всегда можете посмотреть на journalctl -b -eзарегистрированную информацию.

Download ZIPimage 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

Проверьте Wi-Fi на вашем мобильном телефоне. Вы должны найти, 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?» Этот ответ «━━━ Проверьте установку шаг за шагом с контрольными точками ━━━» не является правильным, если вы хотите настроить точку доступа. Для этого вы должны использовать другой ответ «point Настройка точки доступа ━━━» здесь на этой стороне. Это также работает с Raspbian Buster. Я только что подтвердил.
Инго