Як встановити мережеву / WiFi / статичну IP-адресу?


217

Я дотримувався (будь-який із сотень) підручник, і він не працює.

Як встановити мережеву / WiFi / статичну IP-адресу на Raspberry Pi?


(Це Дороті Діксер, з якою сподіваємося наздогнати сотні подібних питань.)

Відповіді:


253

У цьому підручнику описано, як налаштувати мережу за допомогою мережевого менеджера dhcpcd за замовчуванням, включеного в Raspbian з 2015-05-05.
Це стосується випусків програми Raspbian Buster , Raspbian Stretch , Raspbian Jessie та останнього Raspbian Wheezy .
Налаштування Buster ідентичні Stretch.

Як налаштувати Raspbian Networking

Якщо ви використовуєте Ethernet- з'єднання з маршрутизатором, конфігурація не повинна бути потрібною, і він повинен працювати поза коробкою.


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

WiFi на пристроях із підтримкою 5 ГГц відключений, поки не буде встановлено бездротовий регуляторний домен (Pi4B, Pi3B +, Pi3A +)

  • Домен можна встановити через Raspberry Pi Configuration(rc_gui) raspi-configабо встановивши country=відповідний код країни alfa2 ISO 3166 у /etc/wpa_supplicant/wpa_supplicant.conf.

Якщо ви користуєтесь WiFi та налаштованим графічним інтерфейсом , дотримуючись Правил фонду

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

Це також можна використовувати для налаштування системи "Без голови", наприклад, за допомогою кабелю послідовної консолі, але це набагато простіше, якщо ви можете позичити монітор та клавіатуру для налаштування. Нижче див. Інший можливий метод використання кабелю Ethernet до ПК.

Налаштування бездротової програми Raspbian WiFi

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

Що таке моя IP-адреса?

Якщо ви просто хочете знати, що IP Addressваш Pi використовується "Enter" hostname -Iу командному рядку.

SSH

Станом на листопад 2016 року в Raspbian за замовчуванням відключений сервер SSH. Це потрібно буде ввімкнути вручну.

Увійдіть sudo raspi-configу термінал, спочатку виберіть advanced options, потім перейдіть до ssh, натисніть Enterта виберіть Увімкнути або вимкнути ssh-сервер.

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

Мережеві файли

Якщо ви працюєте з недавньою програмою Raspbian, /etc/network/interfacesслід, як показано нижче. Якщо ви змінили його, ВИДАЙТЕ НАЗАД. (Або Stretchпросто видаліть - це ефективно НІЧОГО.)

# інтерфейси (5) файл, який використовується ifup (8) та ifdown (8)

# Зверніть увагу, що цей файл написаний для використання з dhcpcd
# Для статичного IP-адреси зверніться /etc/dhcpcd.conf та "man dhcpcd.conf"

# Включити файли з /etc/network/interfaces.d:
source-directory /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.

Примітки щодо застарілих операційних систем

Джессі не включає 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-адресу

    # визначити статичний профіль
    профіль static_eth0
    статичний ip_address = ⋯
    статичні маршрутизатори = ⋯
    static domain_name_servers = ⋯

    # повернення до статичного профілю на eth0
    інтерфейс eth0
    резервний static_eth0

Не допускати dhcpcdналаштування інтерфейсу

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

Додайте denyinterfaces wlan0до кінця файлу (але вище будь-яких інших доданих рядків інтерфейсу).

Забороніть dhcpcdналаштовувати шлюз на інтерфейсі

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

    нігтейвей

Конфігурація хоста

dhcpcdможе налаштувати інтерфейси залежно від приймаючої мережі. Для використання протоколу Resolution Address (ARP) для зондування хостів на основі MAC або IP-адреси, перш ніж намагатися вирішити DHCP.

    інтерфейс bge0
    arping 192.168.0.1

    # Моя конкретна мережа 192.168.0.1
    профіль dd: ee: aa: dd: bb: ee
    статичний ip_address = 192.168.0.10 / 24

    # Загальна мережа 192.168.0.1
    профіль 192.168.0.1
    статична ip_address = 192.168.0.98 / 24

Ви можете пришвидшити DHCP, відключивши зондування ARP, якщо ви не використовуєте ці функції та маєте просту мережу.

    ноарп

Використовуйте різні файли wpa_supplicant

Можна налаштувати dhcpcd для використання різних файлів wpa_supplicant.conf для конкретного бездротового інтерфейсу.

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

/etc/wpa_supplicant/wpa_supplicant.conf буде використовуватися для будь-яких інших бездротових інтерфейсів.


Підключення комп’ютера до Pi

Останні версії Raspbian (які використовують dhcpcd) дозволяють sshпрацювати над link-localадресою і avahi(що є нульовою реалізацією) дозволяє програмам виявляти хостів, що працюють в локальній мережі.

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

Ви можете легко підключитися з Linux та OS X за допомогою ssh pi@hostname.local(ім'я хоста за замовчуванням raspberrypi). Це повинно працювати з популярними sshпрограмами GUI . Іноді це проблематично для деяких версій 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сервери, Tunneling, VPN, точка доступу).
  • Використання ipv6(хоча якщо у вас є ipv6мережа, це має працювати).
  • Чергові налаштування мереж. (Існує багато різних способів налаштування мереж.)

2
Мене збентежило "це НЕ те, що ти введеш у файл". Якщо я не помиляюся, то, що тут означає Milliways, це те, що ви не замінили б цілий файл цим шматочком тексту. Однак цілком чудово додати цей біт наприкінці (звичайно, змінюючи параметри на свій смак). Крім того, рядки routersта domain_name_serversрядки необов’язкові, якщо ви не хочете налаштовувати маршрутизацію через цей інтерфейс.
Марк

4
Отже, для налаштування ip-адреси вам потрібно встановити клієнт DHCP і використовувати його конфігурацію для встановлення статичного ip ?! Це не працює, якщо я хочу DHCP-сервер на моєму Raspbian! DHCP-клієнт запускається після запуску сервера DHCP, тому ip ще не встановлений, тому сервер DHCP (isc-dhcpd) скаржиться.
Люк Степнєвський

16
Де це офіційно задокументовано?
Аластер Маккормак

6
Де це документально зафіксовано? Я маю на увазі, WTF. Я дотримувався цих інструкцій, як і багатьох інших, і не можу зв’язатися. Я можу із задоволенням бачити та сканувати мережі, але це ніколи не з'єднується і не зв’язується. Я настільки зграбний з цього приводу.
AaronJAnderson


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 в мережі, а частина після косої риски - розмір мережі. Велика ймовірність, що ваш буде a / 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 in /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

1
Які плюси і мінуси цих двох методів ви згадуєте?
Елліотт Б

@ElliottB прочитав Застереження вище.
Міллівейс

1
Я читав це, мені просто цікаво про два методи dhcpcd vs networking. Я хочу побачити, чи дозволяє статична IP-адреса завантажуватися швидше, тому що я бачу затримку на 15 s для dhcpcd в systemd-analyze.
Елліотт Б

Я також не використовую - це лише тому, що так багато людей намагаються (з будь-якої причини - що ухиляється від мене), АЛЕ помиляються, оскільки вони не розуміють мереж. Немає простої відповіді, оскільки це залежить від того, що ти ще робиш. Примітка настройки статичного IP навряд чи буде мати НІЯКЕ вплив на час завантаження, якщо у вас є дуже повільний сервер DHCP. Якщо у вас є запитання, вам слід задати питання - це не дискусійний форум.
Міллівейс

Я додав 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
Якщо ви збираєтесь скопіювати частини відповіді, принаймні, ви повинні її правильно зрозуміти.
Міллівейс

2
Це, мабуть, спрацювало у вашому випадку, але не в цілому, тому що зробили dhcpcdвисновок про маску мережі, яку вона не може використовувати для інших діапазонів адрес. Прочитайте manсторінки.
Міллівейс

1
Ви стверджуєте, що / etc / network / інтерфейси слід залишити в спокої, але ви не кажете чому. Насправді це зовсім навпаки. Дивіться мою відповідь нижче.
JayEye

2
Якщо ви хочете перезапустити мережеві послуги без перезавантаження, переконайтеся, що у вашому файлі є рядок auto eth0вище . Перезапустити мережу за допомогою командиiface eth0 inet manual/etc/network/interfacesudo service networking restart
Barmaley

3
Це може бути скопійована відповідь, але є все необхідне для встановлення статичного ip на малину, прийнята відповідь зайво довга.
Педро Лобіто

11

Короткий і нерозумний метод, як це зробити:

Raspbian Jessie & Stretch

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

Після цього лікування Raspberry PI мав два IP-адреси: один із вказаного вами фіксованого IP-адреси та один від dhcp-клієнта, який працює на Raspberry Pi.

ifconfigпокаже вам фіксований IP. Тоді як синя стрілка-значок у верхньому правому куті показує dhcpd-IP.


1
Будь ласка, НЕ пропонуйте відключати IPv6. В цьому немає потреби.
Андерс

Навіщо мені потрібно 2 IP-адреси?
SiXandSeven8ths

@ SiXandSeven8ths Не потрібно 2 IP-адреси. Я спостерігав за поведінкою і описую її тут, щоб мінімізувати сюрпризи. Я б вдосконалив свою відповідь, але не встиг цього зробити.
MadMike

@MadMike Я також це зауважив, і це накрутило мені речі, врешті я розібрався, але це заплутано.
SiXandSeven8ths

1
@ SiXandSeven8ths Мені шкода, що це чую. Це добре працювало для мене. Також це був єдиний спосіб обійтися без приєднання жодного монітора та клавіатури до малинового пі. тому я подумав, що це може бути корисним комусь іншому.
MadMike

4

Перше, що вам потрібно зробити, це зробити IP вашого Raspberry pi статичним. Таким чином, щоразу, коли ви вмикаєте Raspberry pi, він повинен підключатися до точки доступу (Точка доступу).

Підключіться до точки доступу. Введіть ifconfig в термінал малинового пі та введіть цю 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 для збереження та перезавантаження. Тепер увімкніть ваш малиновий пі, і він автоматично підключиться до точки доступу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.