Existe uma maneira de desabilitar o cliente DHCP no Raspbian Linux em um Rasperry Pi?

13

Eu tenho um servidor Linux (Rasperry Pi usando o Raspbian como SO) que deve estar usando apenas IP estático.

No entanto, notei que também tem IP do servidor DHCP (o IP fornecido pelo DHCP é 192.168.111.2 ). De acordo com as configurações de rede, o servidor deve estar usando somente IP estático ( 192.168.111.100 ).

O conteúdo de /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

Apesar de usar a configuração estática, posso enviar o SSH para o dispositivo usando também o IP fornecido pelo DHCP. Também parece que ntpd está usando o IP incorreto, assim como o correto.

Saída do 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

De acordo com ifconfig , o IP 192.168.111.2 não é usado:

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 mostra que eu tenho um daemon DHCP em execução:

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

Como faço para desativar o daemon DHCP e garantir que meu servidor use apenas o estático?

    
por Madoc Comadrin 11.10.2015 / 13:37

6 respostas

11

Este cenário parece muito estranho porque sua configuração deve estar funcionando conforme você descreve - e esperar que funcione - se houver um IP estático definido em /etc/network/interfaces . Dito isso, esta discussão no site oficial do Raspberry Pi enfoca a questão com o usuário "rpdom" declarando isso no post datado “Thu May 28, 2015 6:21 am”:

This happens in the latest updates. It is caused by the new dhcp client ignoring what the interfaces files does and doing its own thing in addition... seems crazy to me. I'd look at how to reconfigure the dhcp client (can't rememeber which it is or how to do it, I'm still on the old one which works for me), disabling it, or removing it (if possible).

Mais profundo no usuário do segmento "KLL" sugere o seguinte outro post em sua resposta datada “seg 10 de agosto de 2015 12:59.” De acordo com “knute”:

Somewhere along the way an upgrade modified my /etc/network/interfaces file with the 'manual' word instead of dhcp or static and I ended up with two IP addresses, my static one and a dhcp address. I finally had time to play with it and found out that dhcpcd5 works differently than whatever was in it before. To get just your static address, do not modify /etc/network/interfaces. Put back the 'manual' word if you changed it and instead modify /etc/dhcpcd.conf as shown in the example from the docs.

Então, a ideia é que o comportamento de dhcpcd5 mudou em uma das atualizações. E a sugestão para resolver o problema é remover quaisquer alterações de /etc/network/interfaces e, em vez disso, ajustar as configurações em /etc/dhcpcd.conf para obter um endereço IP estático; Exemplo de configuração abaixo:

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

Mais informações sobre o conteúdo de dhcpcd.conf podem ser encontradas na página oficial do manual para isso .

Dito isso, outra idéia é manter as configurações que você tem em /etc/network/interfaces , mas edite /etc/dhcpcd.conf para adicionar a linha denyinterfaces eth0 para dizer ao daemon do DHCP para ignorar completamente eth0 . Qualquer solução deve funcionar, mas uma solução pode ser uma solução mais preferível, dependendo de suas necessidades / requisitos gerais de rede.

    
por 12.10.2015 / 19:29
6

o que funcionou para mim é usar um / etc / network / interfaces como na pergunta original e simplesmente remover o cliente dhcp:

apt-get remove dhcpcd5 isc-dhcp-client isc-dhcp-common
    
por 21.09.2016 / 23:45
1

Devo dizer que infelizmente nenhuma das soluções aqui propostas funcionou para mim. Mas depois de uma longa batalha com o DHCP, finalmente consegui resolver o problema:

vi /etc/systemd/network/eth0.network

mudança:

[Match]
Name=eth0

[Network]
DHCP=yes

para:

[Network]
DHCP=no

espero que isso ajude.

    
por 23.06.2016 / 17:17
0

A maneira preferível de desabilitar qualquer serviço, como o dhcpcd, é usar as funções de gerenciamento do sistema. Você precisará reinicializar para que isso entre em vigor - a menos que você pare o serviço também.

Para Jessie (que usa systemd management):

sudo systemctl disable dhcpcd.service

E para o Wheezy mais antigo ( System-V management):

sudo update-rc.d dhcpcd disable

Mas se você desativá-lo, então você precisa ter certeza de que você tem uma configuração de IP estático em /etc/network/interfaces caso contrário suas interfaces não receberão um endereço IP.

    
por 25.01.2017 / 21:36
0

Aqui está um resumo do que eu precisava fazer para Raspbian Jessie 2017-01-11:

Edite / etc / network / interfaces e adicione a sub-rotina de endereço estático, remova outras referências à interface estática (eth0 neste caso). A linha automática é importante, caso contrário, a interface não será iniciada na inicialização:

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

Em seguida, desative o dhcpcd e ative a rede padrão:

  • Desativar o dhcpcd: systemctl disable dhcpcd.service
  • Ativar a rede: systemctl enable networking
  • reinicializar

Jessie Raspbian a partir da versão 2017-01-11 não parece usar a rede do systemd

    
por 25.02.2017 / 14:12
0

Tentei algumas coisas e descobri que

 apt list --installed | grep dhcp

encontrado:

dhcpcd5 
isc-dhcp-client
isc-dhcp-common

Acabei de desativar dhcpcd5 e corrigi-lo usando:

 sudo apt-get remove dhcpcd5

fez um reboot e tudo foi dandy

    
por 08.06.2017 / 19:16