13

У меня есть сервер 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

Согласно ifconfig IP 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 демона и убедиться, что мой сервер использует только статический?

6 ответов6

11

Этот сценарий звучит очень странно, потому что ваша установка должна работать так, как вы описываете, и надеяться, что она будет работать, если в /etc/network/interfaces есть статический IP-адрес. Тем не менее, эта дискуссия на официальном сайте Raspberry Pi фокусируется на проблеме с пользователем «rpdom», заявив об этом в посте «Четверг 28 мая 2015 6:21 утра»:

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

Глубже в теме пользователь «KLL» предлагает следующий пост в своем ответе от «Пн Авг 10, 2015 12:59 pm». Согласно «кнуту»:

Где-то по пути обновления модифицировал мой файл /etc/network/interfaces с помощью слова «manual» вместо dhcp или static, и я получил два IP-адреса, мой статический и dhcp-адрес. Наконец-то я успел поиграть с ним и обнаружил, что dhcpcd5 работает не так, как раньше. Чтобы получить только ваш статический адрес, не изменяйте /etc/network/interfaces . Верните слово «manual», если вы его изменили, и вместо этого измените /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 . Любое решение должно работать, но одно решение может быть более предпочтительным в зависимости от ваших общих сетевых потребностей.

6

у меня сработало использование /etc /network /interfaces, как в исходном вопросе, и простое удаление клиента dhcp:

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

Должен сказать, что, к сожалению, ни одно из предложенных здесь решений не помогло мне. Но после долгой битвы с DHCP я наконец смог решить проблему:

vi /etc/systemd/network/eth0.network

менять:

[Match]
Name=eth0

[Network]
DHCP=yes

чтобы:

[Network]
DHCP=no

надеюсь это поможет.

0

Попробовал несколько вещей и обнаружил, что

 apt list --installed | grep dhcp

найденный:

dhcpcd5 
isc-dhcp-client
isc-dhcp-common

Я просто отключил dhcpcd5 и исправил это используя:

 sudo apt-get remove dhcpcd5

сделал перезагрузку и все было денди

0

Предпочтительным способом отключения любой службы, такой как 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 /interfaces и добавьте раздел статического адреса, удалите другие ссылки на статический интерфейс (в данном случае 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, похоже, не использует сетевую систему

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .