Чи є спосіб відключити клієнт DHCP в Raspbian Linux на Rasperry Pi?


15

У мене є сервер Linux (Rasperry Pi, що використовує Raspbian як ОС), який повинен використовувати лише статичний IP.

Однак я помітив, що він також отримав IP від ​​сервера DHCP (IP, виданий DHCP 192.168.111.2). Відповідно до мережевих налаштувань, сервер повинен використовувати лише статичний IP ( 192.168.111.100).

Вміст /etc/network/interfaces:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.111.100
netmask 255.255.255.0
gateway 192.168.111.1
dns-nameservers ip1 ip2

Незважаючи на використання статичної конфігурації, я можу SSH на пристрій також використовувати IP, заданий DHCP. Також виявляється, що ntpdвикористовується неправильний IP, а також правильний.

Вихід Netstat:

udp        0      0 192.168.111.2:123       0.0.0.0:*                           2774/ntpd
udp        0      0 192.168.111.100:123     0.0.0.0:*                           2774/ntpd

Відповідно до ifconfigIP 192.168.111.2не використовується:

eth0      Link encap:Ethernet  HWaddr b8:27:eb:be:18:1c
          inet addr:192.168.111.100  Bcast:192.168.111.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:138099 errors:0 dropped:0 overruns:0 frame:0
          TX packets:81146 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:95954711 (91.5 MiB)  TX bytes:27076870 (25.8 MiB)

ps -ef | grep dhcp показує, що у мене працює демон DHCP:

root      2000     1  0 Oct07 ?        00:00:06 /sbin/dhcpcd

Як мені відключити DHCPзапуск демона і переконатися, що мій сервер використовує лише статичну?


Яку команду ви маєте на увазі?
Мадок Комадрін

Я спробував ці команди, але не зміг знайти нічого, щоб допомогти мені в цьому.
Мадок Комадрін

@barlop У цьому немає нічого поганого, ifconfigі він використовується регулярно. Одного разу він буде замінений, ipале, чесно кажучи, це не має наслідків для того, щоб поспішати у когось, хто є "кращим", оскільки це не жалюгідний конкурс. ifconfigнадає більш ніж достатньо деталей для налагодження таких речей.
JakeGould

Відповіді:


11

Цей сценарій звучить насправді дивно, тому що ваша установка повинна працювати так, як ви описуєте, і сподівайтеся, що вона спрацює - якщо є статичний IP-адрес /etc/network/interfaces. Враховуючи це , ця дискусія на офіційному сайті Raspberry Pi зосереджена на проблемі з користувачем "rpdom", заявивши про це у публікації від "Чт 28 травня 2015 6:21 ранку":

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

Більш глибоко в потоці користувач "KLL" пропонує наступний інший пост у своїй відповіді від "Пн 10 серпня 2015 12:59 вечора". Відповідно до "knute":

Десь по дорозі оновлення змінило мій /etc/network/interfacesфайл зі словом "manual" замість dhcp або static, і я отримав дві IP-адреси, мою статичну та dhcp-адресу. Нарешті я встиг пограти з ним і з’ясував, що dhcpcd5працює інакше, ніж те, що було в ньому раніше. Щоб отримати лише вашу статичну адресу, не змінюйте /etc/network/interfaces. Поверніть слово "керівництво", якщо ви змінили його, а замість цього змініть, /etc/dhcpcd.confяк показано в прикладі, з документів.

Тож ідея полягає в тому dhcpcd5, що поведінка змінилася в одному з оновлень. І пропозиція вирішити проблему полягає в тому, щоб видалити будь-які зміни /etc/network/interfacesі замість цього налаштувати параметри, /etc/dhcpcd.confщоб отримати статичну IP-адресу; Приклад конфігурації нижче:

static <value>
             Configures a static <value>.  If you set ip_address then dhcpcd
             will not attempt to obtain a lease and just use the value for the
             address with an infinite lease time.

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

Більше інформації про вміст dhcpcd.confможна знайти на офіційній сторінці чоловіка .

Однак, інша ідея полягає в тому, щоб зберегти налаштування, які у вас є, /etc/network/interfacesале потім відредагуйте, /etc/dhcpcd.confщоб додати рядок, denyinterfaces eth0щоб повідомити демону DHCP повністю ігнорувати eth0. Будь-яке рішення має працювати, але одне рішення може бути більш кращим рішенням залежно від ваших загальних потреб у мережі.


2
Мій випадок був майже ідентичним описаному тут. Різниця полягала лише в тому, що мій /etc/network/interfacesніколи не змінювався так, manualяк це було у випадку з форумами Raspberry Pi. Пропоновані рішення працювали і для мене.
Мадок Комадрін

1
Те саме, де навіть при "статичному" я отримую dhcp на своєму eth0. Це все ще проблема з установкою jessie-lite. Вирішення проблеми мені ще не допомагає, оскільки в мене є ситуація, коли мені потрібен інтерфейс wlan0, щоб мати менший показник, ніж інтерфейс eth0, і я не можу отримати dhcpcd5, щоб дозволити мені це робити (поки що).
Пітер Хансен

3
Обхідний що зробив роботу для мене, однак, сказати dhcpcd5 не дивитися на eth0. Це було зроблено шляхом додавання "denyinterfaces eth0" у /etc/dhcpcd.conf.
Пітер Хансен

1
@PeterHansen Добре знати! Додав цю інформацію до кінця моєї відповіді.
JakeGould

2
Подальше: у деяких випадках я виявив, що встановлено як dhcpcd5, так і isc-dhcp-клієнт, призначаючи обидва адреси. Крім того, існує ініційована системою dhcpcd.service, яка працює на всіх інтерфейсах (з параметрами -q -b), а також процес dhcpcd5, запущений опцією "dhcp" в мережі / інтерфейсах. Зітхніть ... досить легко вирішити, як тільки ви все це знаєте, я сподіваюся.
Пітер Хансен

8

для мене працювало використання / etc / network / інтерфейсів, як у вихідному питанні та просто видалення dhcp-клієнта:

apt-get remove dhcpcd5 isc-dhcp-client isc-dhcp-common

У сценарії, коли вам не байдуже DHCP (або що-небудь ще може зробити dhcpcd), це найпростіше рішення.
AVee

1

Треба сказати, що, на жаль, жодне із запропонованих тут рішень не спрацювало для мене. Але після довгого бою з DHCP я нарешті зміг вирішити проблему:

vi /etc/systemd/network/eth0.network

зміни:

[Match]
Name=eth0

[Network]
DHCP=yes

до:

[Network]
DHCP=no

сподіваюся, що це допомагає.


1

Кращим способом відключення будь-якої служби, наприклад dhcpcd, є використання функцій управління системою. Вам потрібно буде перезавантажитись, щоб воно набрало чинності - якщо ви також не припините послугу.

Для Джессі (який використовує systemdуправління):

sudo systemctl disable dhcpcd.service

А для старших Wheezy ( System-Vуправління):

sudo update-rc.d dhcpcd disable

Але якщо ви його відключите, вам потрібно переконатися, що у вас статична конфігурація ip, /etc/network/interfacesінакше ваші інтерфейси не отримають IP-адресу.


0

Ось підсумок того, що мені потрібно було зробити для Raspbian Jessie 2017-01-11:

Відредагуйте / etc / network / інтерфейси та додайте строфу статичної адреси, видаліть інші посилання на статичний інтерфейс (у цьому випадку eth0). Важлива автоматична лінія, інакше інтерфейс не запуститься при завантаженні:

    auto eth0
    iface eth0 inet static
      address 192.168.44.17
      netmask 255.255.255.0
      gateway 192.168.44.27

Далі відключіть dhcpcd і ввімкніть стандартні мережі:

  • Вимкнути dhcpcd: systemctl disable dhcpcd.service
  • Увімкнути мережу: systemctl enable networking
  • перезавантажити

Raspbian Jessie на момент випуску 2017-01-11, схоже, не використовує мережу systemd


0

Спробував кілька речей і виявив це

 apt list --installed | grep dhcp

знайдено:

dhcpcd5 
isc-dhcp-client
isc-dhcp-common

Я просто відключив dhcpcd5і це виправив за допомогою:

 sudo apt-get remove dhcpcd5

перезавантажився і все було денді

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