Відмінності між /etc/dhcpcd.conf та / etc / network / інтерфейсами?


63

Я маю цю конфігурацію в / etc / network / interfaces :

auto lo
iface lo inet loopback

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

allow-hotplug wlan0
#iface wlan0 inet dhcp
        iface wlan0 inet static
        address 192.168.0.110
        netmask 255.255.255.0
        network 192.168.0.1
        gateway 192.168.0.1
        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp


iface eth0 inet static
    address 192.168.0.115
    netmask 255.255.255.0
    network 192.168.0.1
    gateway 192.168.0.1

Бездротовий статичний IP працював, але eth0 не став.

Тому я спробував зробити конфігурацію в /etc/dhcpcd.conf :

interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

І це спрацювало. Я розгублений і ось кілька питань:

  1. Коли використовувати який файл?

  2. Чому Wi-Fi працював з / etc / network / інтерфейсами, але eth0 не став?

  3. Чи має dhcpcd якось пріоритет над / etc / network / interface ?

  4. Як перевірити, яка служба має пріоритет чи щось? І яка служба використовує / і т.д. / мережа / інтерфейс ?


4
Чудове запитання і щось, про що я збирався задати питання #raspbian. Як багаторічний адміністратор Un * x, я вважаю, що ця фундаментальна зміна ускладнюється абсолютною недостатністю документації. У мене трапилося це питання, витративши годину на проби та помилки. Я хотів би, щоб я знайшов raspberrypi.stackexchange.com/questions/37920/… раніше
Аластер Маккормак

Я думаю, що це питання слід було б задати в коментарях, що як саме eth0 провалився? Що таке ip addrвихід і systemctl status networkingвихід? Оскільки, якщо ОП намагався зробити це через ssh і використовуючи eth0 ip для ssh в, то модифікований eth0 ip буде призначений як вторинний ip до eth0, щоб постійно тримати сеанс ssh безперервно, я намагався змінити eth0 ip як OP Згаданий, але sshing через wlan0, і він працює і віддає перевагу dhcp, в моєму випадку це було dhclient на Stretch, але sshing через eth0, попередній згаданий випадок має місце.
Павло Саекат

І так, dhcpcd також перевірений, жоден не приймає перевагу перед /etc/network/interfacesналаштуваннями.
Павло Саекат

Відповіді:


65

У всіх відповідях на це питання є хороші моменти, але я думаю, що є певна сфера для прямого вирішення ваших конкретних питань.

  1. Коли використовувати який файл?

Я зроблю припущення, що ви страждаєте від загального ступеня плутанини, що виникає в даний момент (у ширшому співтоваристві Raspberry Pi) із введенням Debian « Джессі » замість Debian «Wheezy». Ця зміна зробила велику кількість навчальних посібників у гіршому випадку застарілими і в кращому випадку заплутаними.

Відповідь на запитання полягає в тому, що при використанні Wheezy нормально було вносити зміни до /etc/network/interfacesфайлу з метою налаштування мережевих інтерфейсів (перейти до рисунка). Під час використання Джессі потрібно буде внести зміни до '/etc/dhcpcd.conf'. Однак, якщо вносити зміни до бездротового з'єднання ( wlan0), вам також потрібно буде внести зміни /etc/wpa_supplicant/wpa_supplicant.conf, де ви додасте мережевий ssid та пароль.

  1. Чому Wi-Fi працював з / etc / network / інтерфейсами, але eth0 не став?

Я не впевнений, як би могло працювати з'єднання Wi-Fi, оскільки у ваших файлах відсутня якась інформація (принаймні ssid). Як зазначає janos, пріоритет деталей про ето, що надходять після деталей wlan0, ймовірно, зробив їх функціонуючим (оскільки вони були б помічені останніми під час читання файлу).

  1. Чи має dhcpcd якось пріоритет над / etc / network / interface?

Ні, вони різні і розроблені так, щоб відповідати різним цілям Джессі. Для використання Джессі досить простим способом ви можете майже ігнорувати interfacesфайл і працювати з dhcpcd.confі wpa_supplicant.conf.

  1. Як перевірити, яка служба має пріоритет чи щось? І яка служба використовує / etc / network / interface?

Знову я зроблю припущення, що питання більше " Який файл я використовую і чи потрібно використовувати той, який має пріоритет? 'питання. Відповідь полягає в тому, що зі зміною від Wheezy на Джессі (і в більш широкому сенсі з прийняттям systemd ) конфігурація `dhcpcd.conf 'і' wpa_supplicant.conf 'буде нормою, а файл' інтерфейсів 'буде залишений до власних пристроїв.

Що це означає для вас?

Добре (знову ж таки) зробивши припущення, що ви намагаєтесь налаштувати жорсткі провідні (eth0) та бездротові (wlan0) з'єднання зі статичними IP-адресами, ви хочете, щоб ваш interfacesфайл був за замовчуванням, як він був встановлений спочатку;

# 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

Ви хочете, щоб ваш dhcpcd.confфайл містив дані про з'єднання в кінці файлу для обох інтерфейсів, а додаткові записи, ймовірно, виглядатимуть приблизно так;

# Custom static IP address for eth0.
interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

# Custom static IP address for wlan0.
interface wlan0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Нарешті, ви хочете відредагувати wpa_supplicant.confфайл так, щоб він включав ssid для мережі Wi-Fi та пароль. Напевно, це повинно виглядати трохи так;

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

network={
    ssid="homenetwork"
    psk="h0mepassw0rd"
}

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

Я фактично написав це, і ви можете отримати інформацію у безкоштовній книзі Просто достатньо Raspberry Pi від Leanpub.


1
Не працюй. Якщо ми знайдемо обидва інтерфейси with.eg, ifconfig eth0 up ping назовні та ssh ззовні не працюватимуть. Якщо ми помістимо один з інтерфейсів у dhcp, то вся робота.
giuseppe

Сподіваємось, хтось зможе допомогти з вашим запитанням
d3noob

Не працювали для мене з кількох причин. По-перше, це питання загальне, і якщо відповіді стосуються Джессі, це було дуже давно, і ми переїхали, щоб розтягнутись в основному, і саме цього тижня було більше. У моєму файлі інтерфейсів немає жодної речі, яку ви згадуєте.
Брайан Булковський

6

Пріоритет стосується вашої init або systemd конфігурації. Що стосується dhcp: якщо у вас статично або вручну налаштований інтерфейс, а dhcp після цього почне запитувати адресу, він замінить те, що у вас вже є. У Debian запускається dhcp для інтерфейсів, для яких ви вказуєте dhcp, а не просто магічно. Якщо у вас є несподівана поведінка, у вас може бути інша система, яка працює у фоновому режимі, як NetworkManager.

За бал:

  1. взагалі не використовуйте dhcpcd.conf, залиште його так.
  2. У вас немає лінії, що дозволяє дозволити гарячу підключення eth0.
  3. Якщо dhcpcd запуститься після встановлення мережі та у вас встановлено, щоб перейняти інтерфейс, він буде.
  4. Перевірте порядок запуску цих послуг.

4

Бездротовий статичний IP працював, але eth0 не став.

eth0Інтерфейс був , ймовірно , не виховує при завантаженні системи , тому що його немає в списку на autoлінії. Від man interfaces:

Рядки, що починаються зі слова "auto", використовуються для ідентифікації фізичних інтерфейсів, які підлягають появі при запуску ifup із параметром -a. (Ця опція використовується сценаріями завантаження системи.) Імена фізичного інтерфейсу повинні слідувати за словом "auto" в одному рядку. Тут може бути кілька "авто" строф. ifup виводить названі інтерфейси у вказаному порядку.

Змініть цей рядок:

auto lo

До цього:

auto lo eth0

І тоді це має працювати.

Інші відповіді стосувались ваших інших питань. Я сподіваюся, що це допомагає.


2
ЦЕ відповідь. У ОП є й інші проблеми, але для таких людей, як я, які дотримувались інших довідників, які щойно додавали статичну інформацію /etc/network/interfaces, відсутня частина була просто auto eth0та перезапустити мережу чи перезавантажити!
Адам Каплан

2

Див. Розділ Як налаштувати мережу / WiFi / Статичний IP для отримання детальної інформації про налаштування мереж.

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

Якщо ви дійсно хочете використовувати /etc/network/interfaces (крім замовчування), вам потрібно буде відключити dhcpcd.

Пояснення dhcpcdзанадто складне для цього Форуму, але посилання https://wiki.archlinux.org/index.php/dhcpcd дає хороший підсумок.


2

Спочатку /etc/network/interfacesповерніть файл до його початкової версії ...

# 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

Потім збережіть зміни у /etc/dhcpcd.confфайлі просто та просто для бездротового зв'язку ...

(внизу файлу ...)

nohook lookup-hostname

interface wlan0
    static ip_address=192.168.0.53/24
    static routers=192.168.0.1
    static domain_name_servers=8.8.8.8

/etc/wpa_supplicant/wpa_supplicant.conf:

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

network={
    ssid="The SSID of your Router"
    psk="daPassword"
    scan_ssid=1
    key_mgmt=WPA-PSK
}

0

Майте на увазі, що остання версія програми Raspbian Jessie (30.12.2016) містить недолік у другому рядку файла інтерфейсів. У другому рядку відсутній провідний символ #, щоб позначити рядок як коментар. Ця проблема призводить до того, що файл інтерфейсів не читається системою. Я витратив багато годин, намагаючись змусити свій wifi працювати, перш ніж виявив цю помилку.

Щоб виправити це, просто додайте символ # до початку рядка.

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