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

15

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

No entanto, notei que ele também possui IP do servidor DHCP (o IP fornecido pelo DHCP é 192.168.111.2). De acordo com as configurações de rede, o servidor deve usar apenas 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 fazer o SSH no dispositivo também usando o IP fornecido pelo DHCP. Também parece que ntpdestá usando o IP errado e 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 ifconfigo IP 192.168.111.2nã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 desabilito a DHCPinicialização do daemon e verifique se o meu servidor usa apenas a estática?

Madoc Comadrin
fonte
Qual é o comando que você está se referindo?
Madoc Comadrin
Eu tentei esses comandos, mas não consegui encontrar nada para me ajudar nisso.
Madoc Comadrin
@ barlop Não há nada de errado ifconfige é usado regularmente. Um dia será substituído por, ipmas honestamente, não tem importância incomodar alguém sobre o que é “melhor”, já que este não é um concurso de mijar. ifconfigfornece detalhes mais que suficientes para depurar coisas como esta.
JakeGould

Respostas:

11

Esse cenário parece realmente estranho, porque sua configuração deve funcionar como você descreve - e espera que funcione - se houver um IP estático definido /etc/network/interfaces. Dito isto, esta discussão no site oficial do Raspberry Pi se concentra no problema com o usuário “rpdom” afirmando isso no post de “Qui 28 de maio de 2015 às 6:21”:

Isso acontece nas últimas atualizações. É causado pelo novo cliente dhcp, ignorando o que os arquivos de interface fazem e fazendo suas próprias coisas além disso ... parece loucura para mim. Eu olhava como reconfigurar o cliente dhcp (não consigo lembrar o que é ou como fazê-lo, ainda estou no antigo que funciona para mim), desabilitando-o ou removendo-o (se possível).

Mais detalhadamente no usuário do tópico "KLL" sugere a seguinte postagem na resposta de "Seg 10 de agosto de 2015 12:59 pm". De acordo com o "knute":

Em algum lugar ao longo do caminho, uma atualização modificou meu /etc/network/interfacesarquivo com a palavra 'manual' em vez de dhcp ou static e acabei com dois endereços IP, meu estático e um endereço dhcp. Finalmente tive tempo de brincar e descobri que dhcpcd5funciona de maneira diferente do que estava nele antes. Para obter apenas seu endereço estático, não modifique /etc/network/interfaces. Volte a palavra 'manual' se você a alterou e, em vez disso, modifique /etc/dhcpcd.confconforme mostrado no exemplo nos documentos.

Portanto, a idéia é que dhcpcd5o comportamento mudou em uma das atualizações. E a sugestão para resolver o problema é remover quaisquer alterações /etc/network/interfacese, em vez disso, ajustar as configurações /etc/dhcpcd.confpara 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 dhcpcd.confpodem ser encontradas na página oficial do manual .

Dito isso, outra idéia é manter as configurações em que você está, /etc/network/interfacesmas depois editar /etc/dhcpcd.confpara adicionar a linha denyinterfaces eth0e dizer ao daemon DHCP para ignorar completamente eth0. Qualquer uma das soluções deve funcionar, mas uma solução pode ser uma solução mais preferível, dependendo das necessidades / requisitos gerais de rede.

JakeGould
fonte
2
Meu caso foi quase idêntico ao descrito aqui. A única diferença foi que /etc/network/interfacesnunca mudei para manualcomo era no caso dos fóruns do Raspberry Pi. As soluções sugeridas também funcionaram para mim.
Madoc Comadrin
1
Mesmo, onde, mesmo com "estático", estou recebendo o dhcp no meu eth0. Este ainda é um problema com a instalação do jessie-lite. A solução alternativa ainda não está me ajudando, pois tenho uma situação em que preciso que a interface wlan0 tenha uma métrica menor que a interface eth0 e não consigo que o dhcpcd5 me permita fazer isso (até agora).
Peter Hansen
3
A solução que fez o trabalho para mim, no entanto, era dizer dhcpcd5 não olhar para eth0. Isso foi feito adicionando "denyinterfaces eth0" no /etc/dhcpcd.conf.
Peter Hansen
1
@PeterHansen É bom saber! Adicionadas essas informações ao final da minha resposta.
JakeGould #
2
Um acompanhamento: em alguns casos, descobri que eu tinha o dhcpcd5 e o isc-dhcp-client instalados, ambos atribuindo endereços. Além disso, existe um dhcpcd.service iniciado pelo systemd que roda em todas as interfaces (com as opções -q -b) e também no processo dhcpcd5 iniciado pela opção "dhcp" em redes / interfaces. Suspiro ... bastante fácil de resolver, uma vez que você sabe tudo isso, espero.
Peter Peter
8

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
docno
fonte
Em um cenário em que você não se importa com o DHCP (ou qualquer outra coisa que o dhcpcd possa fazer), essa é a solução mais fácil.
AVee
1

Devo dizer que, infelizmente, nenhuma das soluções propostas aqui 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 isto ajude.

lester289
fonte
1

A maneira preferível de desativar qualquer serviço, como o dhcpcd, é usar as funções de gerenciamento do sistema. Você precisará reiniciar para que tenha efeito - a menos que você interrompa o serviço também.

Para Jessie (que usa systemdgerenciamento):

sudo systemctl disable dhcpcd.service

E para o Wheezy mais velho ( System-Vgerência):

sudo update-rc.d dhcpcd disable

Mas se você desabilitá-lo, precisará garantir uma configuração de IP estático, /etc/network/interfacescaso contrário suas interfaces não receberão um endereço IP.

Pierz
fonte
0

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

Edite / etc / network / interfaces e inclua a sub-rotina do 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 iniciará 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:

  • Desative o dhcpcd: systemctl disable dhcpcd.service
  • Ativar rede: systemctl enable networking
  • reiniciar

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

SteveB
fonte
0

Tentei algumas coisas e descobri que

 apt list --installed | grep dhcp

encontrado:

dhcpcd5 
isc-dhcp-client
isc-dhcp-common

Eu apenas desabilitei dhcpcd5e o consertei usando:

 sudo apt-get remove dhcpcd5

fez uma reinicialização e tudo foi dândi

Mick65
fonte