Как настроить сетевой / WiFi / статический IP-адрес?

216

Я следовал (любой из сотен) учебник, и он не работает.

Как настроить сетевой / WiFi / статический IP-адрес на Raspberry Pi?


(Это Дороти Диксер, которая, надеюсь, поймает сотни подобных вопросов.)

Milliways
источник

Ответы:

252

В этом руководстве описывается настройка сети с помощью менеджера сети по умолчанию Dhcpcd включены в Raspbian поскольку 2015-05-05.
Это относится к выпускам Фонда Raspbian Buster , Raspbian Stretch , Raspbian Jessie и последней Raspbian Wheezy .
Настройки Buster идентичны настройкам Stretch.

Как настроить Raspbian Networking

Если вы используете соединение Ethernet с маршрутизатором, конфигурация не требуется, и она должна работать «из коробки».


ПРИМЕЧАНИЕ Встроенный WiFi Pi3 / Pi Zero W не поддерживает сети 5 ГГц и может не подключаться к каналу 12,13 в сетях 2,4 ГГц до тех пор, пока не будет задан регуляторный домен беспроводной сети .

Wi-Fi на устройствах с поддержкой 5 ГГц отключается до тех пор, пока не будет установлен беспроводной регуляторный домен (Pi4B, Pi3B +, Pi3A +)

  • Домен может быть установлен через Raspberry Pi Configuration(rc_gui) raspi-configили путем установки country=соответствующего кода страны ISO 3166 alpha2 в /etc/wpa_supplicant/wpa_supplicant.conf.

Если вы используете WiFi и GUI, настроенный в соответствии с Основными рекомендациями

Если вы используете WiFi из командной строки, настроенной в соответствии с Основными положениями, это единственный способ настроить сеть, которая не передает SSID.

Это также можно использовать для настройки системы без головы, например, с помощью последовательного консольного кабеля, но НАМНОГО проще, если вы можете одолжить монитор и клавиатуру для настройки. Ниже приведен другой возможный способ использования кабеля Ethernet к ПК.

Установка безголового Raspbian WiFi

Raspbian , начиная с мая 2016 года, проверяет содержимое загрузочного каталога на наличие вызываемого файла wpa_supplicant.confи копирует этот файл /etc/wpa_supplicant, заменяя любой существующий wpa_supplicant.confфайл, который может там находиться. Файл в каталоге загрузки удаляется. Это может быть использовано для включения безголовой настройки, используя wpa_supplicant.confнастройки, подробно описанные ниже. (Возможно, вы также захотите включить ssh.)

Какой у меня IP адрес?

Если вы просто хотите узнать, что IP Addressваш Pi использует, введите hostname -Iв командной строке.

SSH

Начиная с выпуска ноября 2016 года, Raspbian отключил SSH-сервер по умолчанию. Вам придется включить его вручную.

Войдите sudo raspi-configв терминал, сначала выберите advanced options, затем перейдите к ssh, нажмите Enterи выберите Включить или отключить ssh сервер.

Для автономной настройки SSH можно включить, поместив файл с именем ssh без расширения в загрузочный раздел SD-карты.

Сетевые файлы

Если вы работаете с недавним Raspbian, /etc/network/interfacesдолжно быть, как показано ниже. Если вы изменили его, ВЕРНУТЬСЯ НАЗАД. (Или Stretchпросто удалите это - это фактически НИЧЕГО не делает.)

Файл # interfaces (5), используемый ifup (8) и ifdown (8)

# Обратите внимание, что этот файл написан для использования с dhcpcd
# Для статического IP, обратитесь к /etc/dhcpcd.conf и 'man dhcpcd.conf'

# Включить файлы из /etc/network/interfaces.d:
исходный каталог /etc/network/interfaces.d

Файл /etc/wpa_supplicant/wpa_supplicant.confбудет создан / изменен с помощью рекомендуемых методов настройки, но его можно настроить вручную. Последние Raspbian имеют возможность raspi-configввести SSID и пароль. Он должен содержать что-то вроде следующего:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=AU

network={
    ssid="ESSID"
    psk="Your_wifi_password"
}

Если вам нужно подключиться к частной сети (то есть без вещания SSID), включите строку scan_ssid=1внутри network={⋯}.

ПРИМЕЧАНИЕ Если вы хотите подключиться к различным сетям (например, на работе или дома), вы можете включить несколько network={⋯}записей.

Если у вас есть доступ к нескольким сетям и вы хотите подключиться к определенной сети, включите строку priority=100внутри network={⋯}записи.
Вы можете выбрать разные приоритеты для каждой сети, будет выбрана сеть с наивысшим приоритетом; по умолчанию 0.

Есть много других вариантов, которые можно использовать, см man wpa_supplicant.conf.

Примечания по устаревшим операционным системам

Jessie не включает 10-wpa_supplicantхук для управления интерфейсами WiFi, поэтому необходимы ссылки на wpa_supplicant. Эти параметры несовместимы с предсказуемыми именами сетевых интерфейсов.

/etc/network/interfacesИспользуется Jessie должно быть: -

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Примечание вызова DHCP в /etc/network/interfacesбудет отключен dhcpcd .

Предсказуемые имена сетевых интерфейсов

Stretchпредставил 1 предсказуемые имена сетевых интерфейсов, которые в течение некоторого времени использовались в других дистрибутивах.

Сетевые интерфейсы будут иметь имена, сформированные из префикса en- Ethernet или wl- wlan с последующим xуказанием MACи, MACнапример, enxb827eb123456или wlx00c140123456. Встроенный WiFi подключенных через Pi4, Pi3 и PIZeroW sdio, однако, будет использовать названиеwlan0

Это может быть выгодно для тех, кто использует несколько сетевых интерфейсов, однако для большинства пользователей Pi единый интерфейс Ethernet и WiFi не будет иметь большого значения. Предыдущие имена eth0и wlan0могут быть восстановлены, если вы передаете net.ifnames=0в командной строке ядра в /boot/cmdline.txt.

Существует возможность raspi-configвключить предсказуемые имена сетевых интерфейсов.

1. По какой-то непонятной причине Фонд решил «Отключить предсказуемые имена сетевых интерфейсов для устройств Ethernet» только через 3 недели после введения долгожданной функции. Существует возможность при Advanced Optionsот raspi-configпереключать эту настройку.


Настройте статический IP-адрес

Смотрите отдельный ответ Статический IP-адрес


Расширенная dhcpcdнастройка

Raspbian по умолчанию использует dhcpcdдля управления сетевыми интерфейсами. Это происходит автоматически, и большинству пользователей нужно только указать SSID и пароль для беспроводных сетей.

Можно настроить, как dhcpcdработает, введя параметры в /etc/dhcpcd.conf; см man dhcpcd.conf.Есть хорошая статья о dhcpcdв https://wiki.archlinux.org/index.php/dhcpcd

Ниже описаны некоторые из наиболее распространенных конфигураций:

Резервный профиль

Можно настроить статический профиль внутри dhcpcdи использовать его при сбое аренды DHCP. Это особенно полезно для безголовых машин, где статический профиль можно использовать как профиль «восстановления», чтобы всегда было возможно подключиться к машине. Статический профиль настраивается как любой другой статический IP-адрес

    # определить статический профиль
    профиль
    статический ip_address = ⋯
    статические маршрутизаторы = ⋯
    статический domain_name_servers = =

    # откат к статическому профилю на eth0
    интерфейс eth0
    отступление static_eth0

Запретить dhcpcdнастройку интерфейса

Это часто делается для того, чтобы позволить Pi действовать в качестве точки доступа (которую необходимо настроить с использованием других файлов), в то же время разрешая нормальную DHCPнастройку на других интерфейсах.

Добавьте denyinterfaces wlan0в конец файла (но выше любых других добавленных строк интерфейса).

Запретить dhcpcdнастройку шлюза на интерфейсе

Если вы хотите, чтобы интерфейс не устанавливал маршруты по умолчанию (часто используется вместе со статическим IP-адресом), укажите

    nogateway

Конкретная конфигурация хоста

dhcpcdМожно настроить интерфейсы в зависимости от сети хоста. При этом используется протокол разрешения адресов (ARP) для проверки хостов на основе MAC-адресов или IP-адресов перед попыткой разрешения DHCP.

    интерфейс bge0
    арпинг 192.168.0.1

    # Моя конкретная сеть 192.168.0.1
    профиль дд: э: аа: дд: бб: э
    статический ip_address = 192.168.0.10 / 24

    # Общая сеть 192.168.0.1
    профиль 192.168.0.1
    статический ip_address = 192.168.0.98 / 24

Вы можете ускорить DHCP, отключив зондирование ARP, если вы не используете эти функции и используете простую сеть.

    noarp

Используйте разные файлы wpa_supplicant

Можно настроить dhcpcd на использование разных файлов wpa_supplicant.conf для определенного беспроводного интерфейса.

Создайте файл с именем wpa_supplicant-"$interface".confв , /etc/wpa_supplicant/например , wpa_supplicant-wlan0.confбудет использоваться толькоwlan0

/etc/wpa_supplicant/wpa_supplicant.conf будет использоваться для любых других беспроводных интерфейсов.


Подключение компьютера к пи

Последние версии Raspbian (которые используют dhcpcd) позволяют sshработать над link-localадресом и avahi(что является реализацией zeroconf) позволяют программам обнаруживать узлы, работающие в локальной сети.

Это означает, что вы можете подключить Pi к компьютеру (с помощью кабеля Ethernet) или к локальному сетевому маршрутизатору и подключаться, не зная IP-адрес.

Вы можете легко подключиться из Linux и OS X с ssh pi@hostname.local(имя хоста по умолчанию raspberrypi). Это должно работать с популярными sshпрограммами с графическим интерфейсом . Это иногда проблематично с некоторыми версиями Windows и сетями, которые используют .local нестандартным способом. (См. Https://en.wikipedia.org/wiki/.local )

ПРИМЕЧАНИЕ .localразрешение не всегда работает, например, в rsync. Следующее должно разрешать IP (и может быть включено в bashсценарии)
RemotePi=$(getent hosts hostname.local | awk '{ print $1 }')

Если вашей системе не нужно getentзапрашивать, hostsнапример, macOS, вы можете использовать следующее:
RemotePi=$(arp -n hostname.local | awk '{x = $2; gsub(/[()]/, "", x); print x }')

Если у вас несколько Pi, вам нужно убедиться, что у каждого Pi есть уникальное имя хоста.

Вы можете использовать перекрестный кабель, но он вам не нужен (большинство современных интерфейсов автоматически обнаруживают).

Один из недостатков прямого подключения заключается в том, что у Pi не будет доступа в Интернет, и дата не будет установлена. Вы можете скопировать дату с хоста, запустив ssh pi@hostname.local sudo date -s$(date -Ins)перед подключением.

Объем:

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

Он в первую очередь направлен на то, чтобы помочь новым пользователям, пытающимся заставить работать свой Pi (особенно WiFi).

Это НЕ охватывает: -

  • Другие сетевые менеджеры.
  • Запуск расширенных сетей на Pi (например, DHCPсерверы, туннелирование, VPN, точка доступа).
  • Использование ipv6(хотя, если у вас есть ipv6сеть, это должно работать).
  • Альтернативные сетевые настройки. (Существует много разных способов настройки сети.)
Milliways
источник
2
Меня смутило «это НЕ то, что вы вводите в файл». Если я не ошибаюсь, Milliways означает, что вы не замените весь файл этим битом текста. Тем не менее, это прекрасно добавить этот бит в конце (изменение параметров по вашему вкусу, конечно). Кроме того , routersи domain_name_serversлинии не являются обязательными , если вы не хотите , чтобы настроить маршрутизацию через этот интерфейс.
Марк
4
Итак, теперь, чтобы настроить свой IP-адрес, вам нужно установить DHCP-клиент и использовать его конфигурацию для установки статического IP-адреса ?! Это не работает, если я хочу DHCP-сервер на моем Raspbian! DHCP-клиент запускается после запуска DHCP-сервера, поэтому ip еще не установлен, что заставляет DHCP-сервер (isc-dhcpd) пожаловаться.
Люк Степневски,
16
Где это официально задокументировано?
Аластер МакКормак
6
Где это задокументировано? Я имею в виду, WTF. Я следовал этим указаниям, а также многим другим и не могу подключиться. Я могу счастливо видеть и сканировать сети, но он никогда не будет соединяться или связываться. Я так расстроен по этому поводу.
AaronJAnderson
4
@MikeD. См raspberrypi.org/blog/...
Milliways
64

Настройте статический IP-адрес

Вопросы по настройке статического IP-адреса являются одними из самых распространенных на этом сайте. Есть очень много учебных пособий (много неправильных, устаревших или неполных).

отказ

Прежде чем продолжить, я чувствую себя обязанным заявить, что установка статического адреса НЕ рекомендуется. Инженеры связи не делают этого. Статические IP-адреса могут быть проклятием жизни сетевого администратора. Существуют ситуации, когда статические IP-адреса необходимы, например, если вы используете сервер DHCP или работаете в изолированной сети без сервера DHCP.

Если вы полны решимости продолжить, вам следует убедиться, что вы правильно поняли. Адаптировано из Основы сети Учебник

Найти настройки вашей локальной сети

Это проще всего сделать с помощью самого Pi, используя DHCP, но это можно сделать на любом компьютере в сети, хотя команды могут отличаться в других системах.

Бегать

ip -4 addr show | grep global

который должен дать вывод как:

inet 10.1.1.30/24 brd 10.1.1.255 scope global eth0
inet 10.1.1.31/24 brd 10.1.1.255 scope global wlan0

Первый адрес - это IP-адрес вашего Pi в сети, а часть после косой черты - это размер сети. Весьма вероятно, что у вас будет / 24.

Второй адрес - это brd (широковещательный) адрес сети.

Найдите адрес вашего роутера (или шлюза)

ip route | grep default | awk '{print $3}'

10.1.1.1

Наконец запишите адрес вашего DNS-сервера, который часто совпадает с вашим шлюзом.

cat /etc/resolv.conf

# Generated by resolvconf
nameserver 10.1.1.1

Затем выполните ОДИН из следующих методов. (Существуют и другие методы не документированы. Они являются наиболее распространенными на Raspbian.) ( В любом методе заменить соответствующее имя сетевого интерфейса для eth0, wlan0или предсказуемые имена сетевых интерфейсов . )

Если вы хотите найти имена интерфейсов, даже если они не подключены, выполните следующую команду ls /sys/class/net/

В любом методе вы должны выбрать IP-адреса, которые не используются; в идеале за пределами диапазона, используемого вашим DHCP-сервером, в той же подсети.

метод dhcpcd

Оставьте /etc/network/interfacesпо умолчанию (как указано выше).

Изменить /etc/dhcpcd.confследующим образом:

 Here is an example which configures a static address, routes and dns.
       interface eth0
       static ip_address=10.1.1.30/24
       static routers=10.1.1.1
       static domain_name_servers=10.1.1.1

       interface wlan0
       static ip_address=10.1.1.31/24
       static routers=10.1.1.1
       static domain_name_servers=10.1.1.1

ip_addressэто адрес и размер из приведенной выше команды (или другой неиспользуемый адрес в той же сети), routersэто адрес вашего маршрутизатора (или шлюза). domain_name_serversэто DNS-адрес (а) из /etc/resolv.conf. (см. man dhcpcd.conf)

Существует хорошая статья о dhcpcdв https://wiki.archlinux.org/index.php/dhcpcdFallback profile является альтернативой статическим IP


Метод сетевых интерфейсов

ПРИМЕЧАНИЕ. Этот метод НЕ рекомендуется (и работает только при отключении демона DHCP-клиента), особенно если вы планируете использовать оба интерфейса.

Настройте статический сетевой адрес на своем Pi в /etc/network/interfaces

auto eth0
iface eth0 inet static
        address 10.1.1.30
        netmask 255.255.255.0
        gateway 10.1.1.1

allow-hotplug wlan0
iface wlan0 inet static
        address 10.1.1.31
        netmask 255.255.255.0
        gateway 10.1.1.1
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

addressэто адрес из вышеприведенной команды (или другой неиспользуемый адрес в той же сети), netmask255.255.255.0 соответствует размеру сети /24. gatewayэто адрес вашего роутера (или шлюза).

Вы также можете указать dns-nameservers, но это, как правило, не обязательно. broadcastАвтоматически происходит от addressи netmaskи не должны быть указаны. Для получения более подробной информации см. Https://wiki.debian.org/NetworkConfiguration.

Вы можете установить одно или оба eth0, wlan0либо одно из предсказуемых имен сетевых интерфейсов.

Затем отключите демон DHCP-клиента и переключитесь на стандартную сеть Debian :

sudo systemctl disable dhcpcd
sudo systemctl enable networking

Перезагрузитесь, чтобы изменения вступили в силу:

sudo reboot
Milliways
источник
1
Какие плюсы и минусы этих двух методов вы упоминаете?
Эллиотт Б
@ElliottB прочитайте заявление об отказе от ответственности выше.
Milliways
1
Я читал это, мне просто интересно узнать о двух методах dhcpcd vs network. Я хочу посмотреть, позволяет ли статический IP загружаться быстрее, потому что я вижу задержку в 15 секунд для dhcpcd в systemd-analyze.
Эллиотт Б
Я тоже не использую - это только потому, что так много людей пытаются (по любой причине - что ускользает от меня), НО ошибаются, потому что они не понимают сетей. Нет простого ответа, потому что это зависит от того, что еще вы делаете. Примечание настройки статического IP вряд ли будет иметь НИКАКОЕ влияние на время загрузки, если у вас есть очень медленный сервер DHCP. Если у вас есть вопросы, вы должны задать вопрос - это не дискуссионный форум.
Milliways
Я добавил static domain_search=example.localв метод dhcpcd.conf. Не стесняйтесь вернуться / редактировать / связаться со мной.
MadMike
35

Для статического IP-адреса в соединении Ethernet:

  1. sudo nano /etc/dhcpcd.conf
  2. Введите следующие строки в верхней части файла:

    interface eth0
    static ip_address=192.168.1.XX/24
    static routers=192.168.1.1
    static domain_name_servers=192.168.1.1
    
  3. sudo reboot

Это должно быть сделано для недавнего обновления Джесси. /etc/network/interfacesдолжен быть оставлен в покое . Откройте браузер и введите адрес своего маршрутизатора (для большинства 192.168.1.1) и проверьте свою домашнюю сеть, чтобы убедиться, что Raspberry Pi отображается как «Статический».

Даника Паница
источник
5
Если вы собираетесь скопировать часть ответа по крайней мере, вы должны сделать это правильно.
Milliways
2
Это, вероятно, сработало в вашем случае, но не в целом, потому что dhcpcdвывело маску сети, чего не может быть для других диапазонов адресов. Читайте manстраницы.
Milliways
1
Вы утверждаете, что / etc / network / interfaces следует оставить в покое, но не говорите почему. На самом деле, совсем наоборот. Смотрите мой ответ ниже.
JayEye
2
Если вы хотите перезапустить сетевые службы без перезагрузки, убедитесь, что в вашем файле есть строка auto eth0выше . Перезапустите сеть с помощью командыiface eth0 inet manual/etc/network/interfacesudo service networking restart
Barmaley
3
Это может быть скопированный ответ, но в нем есть все необходимое для настройки статического IP-адреса на Raspberry, принятый ответ излишне длинный.
Педро Лобито
11

Краткий и надежный метод, как это сделать с помощью:

Распби Джесси и Стретч

Это установит фиксированный IP-адрес и включит демон ssh:

  • Откройте /boot/cmdline.txtи добавьте ip=192.168.1.20в конец строки.
  • Создать пустой файл /boot/ssh
  • Загрузи свой Raspberry Pi
  • При запуске Linux ssh pi@192.168.1.20пароль есть raspberry. Используйте Putty на Windows для подключения через ssh.

Я использую это для доступа к моей Raspbian Jessie and Stretch, которая загружается без подключенного монитора, только с питанием и Ethernet. После доступа к нему с помощью оболочки ssh я могу продолжить настройку.

После этой процедуры Raspberry PI имел два IP-адреса: один из указанных вами фиксированных IP-адресов и один из dhcp-клиента, работающего на Raspberry Pi.

ifconfigпокажет вам фиксированный IP. Принимая во внимание, что синяя стрелка-иконка в правом верхнем углу показывает dhcpd-IP.

MadMike
источник
1
Пожалуйста, НЕ предлагайте отключить IPv6. Нет необходимости в этом.
Андерс
Зачем мне 2 IP?
@ SiXandSeven8ths Нет необходимости в 2 IP. Я наблюдал за поведением и описываю его здесь, чтобы минимизировать неожиданности. Я бы улучшил свой ответ, но не успел это сделать.
MadMike
@MadMike Я тоже это наблюдал, и это все испортило для меня, в конце концов я разобрался, но это сбивает с толку.
1
@ SiXandSeven8ths Мне жаль это слышать. Это работало хорошо для меня. Также это был единственный способ обойтись без подключения монитора и клавиатуры к Raspberry Pi. поэтому я подумал, что это может быть полезно для кого-то еще.
MadMike
4

Первое, что вы должны сделать, это сделать IP-адрес вашего Raspberry pi статическим. Так что всякий раз, когда вы включаете Raspberry Pi, он должен подключаться к вашей точке доступа (Hotspot).

Подключитесь к своей точке доступа. Введите ifconfig в терминале Raspberry Pi и введите этот IP-адрес ниже, в моем случае это был 192.168.43.233

Начните с редактирования файла dhcpcd.conf

sudo nano /etc/dhcpcd.conf

Прокрутите весь путь до конца и добавьте эти строки в конце в соответствии с вашим подключением (проводным или беспроводным).

interface eth0

static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1


interface wlan0
static ip_address=192.168.43.233/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Нажмите Ctrl + x для сохранения и перезагрузки. Теперь включите ваш Raspberry Pi, и он автоматически подключится к вашей точке доступа.

Smshrimant
источник