Ubuntu - servidor dhcp 'não configurado para escutar em qualquer interface'

4

Estou no meu juízo final neste; Eu tentei por horas fazer isso funcionar, mas estou perplexo. Espero que um de vocês possa ajudar. : -)

Estou tentando fazer com que o dhcp3-server funcione no Ubuntu. Ele está instalado e configurado corretamente para rodar em runlevels rc2,3,4,5.d. Na inicialização, seu script init.d é executado e, no syslog, eu recebo o seguinte:

Oct 18 20:40:37 jez-ubuntu dhcpd: Internet Systems Consortium DHCP Server V3.1.1
Oct 18 20:40:37 jez-ubuntu dhcpd: Copyright 2004-2008 Internet Systems Consortium.
Oct 18 20:40:37 jez-ubuntu dhcpd: All rights reserved.
Oct 18 20:40:37 jez-ubuntu dhcpd: For info, please visit http://www.isc.org/sw/dhcp/
Oct 18 20:40:37 jez-ubuntu dhcpd: Wrote 2 leases to leases file.
Oct 18 20:40:37 jez-ubuntu dhcpd:
Oct 18 20:40:37 jez-ubuntu dhcpd: No subnet declaration for eth1 (0.0.0.0).
Oct 18 20:40:37 jez-ubuntu dhcpd: ** Ignoring requests on eth1.  If this is not what
Oct 18 20:40:37 jez-ubuntu dhcpd:    you want, please write a subnet declaration
Oct 18 20:40:37 jez-ubuntu dhcpd:    in your dhcpd.conf file for the network segment
Oct 18 20:40:37 jez-ubuntu dhcpd:    to which interface eth1 is attached. **
Oct 18 20:40:37 jez-ubuntu dhcpd:
Oct 18 20:40:37 jez-ubuntu dhcpd:
Oct 18 20:40:37 jez-ubuntu dhcpd: Not configured to listen on any interfaces!
Oct 18 20:40:39 jez-ubuntu NetworkManager: <info>  (eth0): device state change: 1 -> 2
Oct 18 20:40:39 jez-ubuntu NetworkManager: <info>  (eth0): bringing up device.
Oct 18 20:40:39 jez-ubuntu NetworkManager: <info>  (eth0): preparing device.
[...]

Como você pode ver, o dhcpd parece estar rodando antes do NetworkManager, que é o que configura minhas interfaces eth0 (internet) e eth1 (rede doméstica). Você acha que isso tem algo a ver com os nomes dos links simbólicos rcX.d, e que o dhcpd foi nomeado para iniciar antes do NetworkManager. Não tão. Meus links simbólicos dhcp3-server são chamados de 'S99dhcp3-server' e os links simbólicos do Network Manager são nomeados 'S50NetworkManager', portanto, ele deve ser iniciado antes do servidor dhcp. Além disso, se eu realmente executar (como root) a partir da linha de comando '/etc/init.d/dhcp3-server' ... o servidor executa OK! Só falha na inicialização!

Por que ele diz que não está configurado para escutar em nenhuma interface? O gerente de rede não está trazendo as interfaces eth0 e eth1 até que depois de todos os meus scripts de inicialização tenham sido executados? Se este for o caso, que uso é esse? Certamente outros scripts precisariam que essas interfaces estivessem disponíveis no momento da inicialização? Aqui está o meu arquivo /etc/dhcp3/dhcpd.conf:

subnet 192.168.0.0 netmask 255.255.255.0 {
        option routers 192.168.0.1;
        option subnet-mask 255.255.255.0;
        option domain-name-servers 87.194.0.51;
        option ip-forwarding off;
        range dynamic-bootp 192.168.0.100 192.168.0.254;
        default-lease-time 21600;
        max-lease-time 43200;
}

e meu arquivo / etc / default / dhcp3-server:

# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/dhcp3-server by the maintainer scripts

#
# This is a POSIX shell fragment
#

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1"

Tanto quanto eu posso dizer, estes estão todos corretos. Alguma idéia?

    
por Jez 18.10.2009 / 22:05

8 respostas

2

OK, acho que consertei esse problema. E é um bug no gerenciador de redes do Linux.

Veja, o gerenciador de rede é executado como parte do processo de inicialização (que seria o link simbólico 'S50NetworkManager') e exibe suas interfaces Ethernet. No entanto, faz isso de forma assíncrona. Isso significa que o gerenciador de rede retorna imediatamente, sugerindo aos scripts depois dele, "OK - a rede foi configurada". Na verdade, não, e o gerente da rede está sentado em segundo plano, continuando a configurar a rede. Enquanto isso, os scripts de inicialização são executados com a suposição de que as interfaces de rede estarão disponíveis, o que é uma condição de corrida, dependendo de o gerente de rede ter conseguido configurá-las ainda.

Esta é uma situação horrível e um bug que estou espantado não foi corrigido. Uma maneira de contornar isso é eliminar o gerenciador de rede e, em vez disso, configurar suas interfaces editando / etc / network / interfaces. Em vez de fazer esse trabalho, no entanto, eu tentei o hack feio sugerido neste relatório de bug: link

Eu adicionei um atraso de 5 segundos ('sleep 5') no início da função start no script init.d do dhcp3-server, isso dando ao gerenciador de rede tempo suficiente para configurar as interfaces de rede (embora, é claro, ainda não é garantia) - e funcionou. Agora, o dhcpd é bem-sucedido na inicialização.

Como detalhado nos bugs # 486372 e # 447442 no bugzilla.redhat.com, isso é um bug com o gerenciador de rede (ele deve bloquear até que suas interfaces de rede com fio estejam disponíveis) ou com o dhcpd (ele deve ser atualizado para aguardar para que as interfaces de rede fiquem disponíveis, em vez de simplesmente ficarem fora do ar). É definitivamente um tipo de bug, no entanto.

    
por 18.10.2009 / 23:46
3

você pode modificar suas interfaces / etc / network / assim:

iface eth1 inet static
  address 192.168.50.1
  netmask 255.255.255.0
  up service dhcp3-server restart

então o dhcp3-server será (re) iniciado após a interface de rede (eth1) estar realmente ativa.

    
por 15.07.2010 / 12:12
1

Conheço o erro, como " No subnet declaration for eth1 " e " Not configured to listen on any interfaces! ".

Em seguida, adiciono a declaração eth1 subnet no dhcpd.conf , embora a sub-rede não conceda o endereço. E isso funciona.

subnet 10.32.64.0 netmask 255.255.252.0 {
    option routers 10.32.64.1;
}
    
por 13.06.2018 / 09:28
0

Eu estava tendo esse problema por um motivo diferente, eu acho.

Eu estava tentando usar o DHCP para configurar a interface que o servidor iria escutar. AKA minha LAN estava conectada à porta eth0 do servidor, e eu estava tentando obter DHCP para configurar eth0. Não funciona, aparentemente; As interfaces de escuta DHCP devem ser configuradas estaticamente (/ etc / network / interfaces).

Corrija-me se estiver errado. Eu não acho que alguém deveria ter que configurar estaticamente um dispositivo de escuta DHCP.

    
por 12.07.2010 / 15:38
0

Eu tive um problema semelhante, mas no meu caso, a interface de rede (eth0) nunca estava ativa - não tinha sido inicializada corretamente. Isso estava acontecendo intermitentemente, aproximadamente 20% do tempo. Colocar um atraso ou reiniciar o servidor dhcp, como sugerido em outras respostas, não resolveu meu problema.

No meu caso, a solução foi reiniciar os serviços de rede e, em seguida, o servidor dhcp através de algo como o seguinte script (somente fragmentos, não executável de início a fim) ...

# Check if the networking is running ...
# look for "192.168.0.202" within this command's output
ifconfig

# If the networking is not running, then restart the network interfaces via this command:
sudo service networking restart

# Check if the DHCP service is running ...
# look for "dhcpd" within this command's output
ps -C dhcpd

# If the DHCP service is not running, then restart the DHCP service via this command:
sudo service isc-dhcp-server restart
    
por 08.01.2013 / 08:03
0

Acabei de me deparar com esta questão no Ubuntu e corrigi-a de forma um pouco diferente. Estou usando o serviço isc-dhcp-server, mas ele estava tentando iniciar antes que a interface necessária estivesse ativa, travasse e esgotasse o limite de respawn. Fiz uma pequena edição para a linha start on no arquivo de configuração upstart em / etc / init:

start on runlevel [2345] and net-device-up IFACE=eth0

Desta forma, o serviço não tentará iniciar até que a interface necessária esteja ativa.

    
por 13.08.2014 / 16:07
0

a seguir está uma lista de pontos para verificar se você está com um erro de assunto:

  1. isc-dhcpd-server está olhando para dentro:

/ etc / default / isc-dhcp-server

arquivo para identificar o nome da interface, o SÓ estará servindo endereços dinâmicos (não é mais TODAS as interfaces do seu sistema, mas apenas mencionadas neste arquivo). Certifique-se de ter pelo menos uma interface definida (e não necessário pode ser eth0 ):

INTERFACES="enp0s31f6"
    O
  1. isc-dhcpd-server não aceitará a interface mencionada acima ( enp0s31f6 no meu exemplo) para servir endereços IP alocados dinamicamente sobre ele se você não tiver atribuído um endereço IP estático a esse endereço. a atribuição de endereço é feita em:

/ etc / network / interfaces

fornecendo o seguinte bloco de configurações:

# Define the static address and set it to serve with DHCP.  Link it to the existing interface.
iface enp0s31f6 inet static
address 10.20.0.1
netmask 255.255.255.240
#below are optional settings
#gateway 192.168.100.251
#dns-nameservers 8.8.8.8

depois de configurar o endereço estático para a interface selecionada, certifique-se de que esteja disponível, para cima e o endereço definido seja atribuído (reiniciando a rede) com a ajuda do seguinte comando:

sudo service networking restart

senão o isc-dhcpd-server irá se recusar a executar

  1. O isc-dhcpd-server servirá apenas interfaces com sub-redes de liberação dinâmica definidas em

/etc/dhcp/dhcpd.conf

fornecendo uma definição de bloco separada (pelo menos uma) para o endereço da interface (sua interface IP estática selecionada deve corresponder à sub-rede configurada):

subnet 10.20.0.0 netmask 255.255.255.0 {
    range 10.20.0.10 10.20.0.100;
    option subnet-mask 255.255.255.0;
    option routers 10.20.0.1;
    option broadcast-address 10.20.0.255;
    option domain-name-servers 192.168.100.254, 8.8.8.8;
}

apenas conformando todas as 3 regras você terá serviço DHCP trabalhando no seu Ubuntu (resolvido e verificado na versão 16.04)

finalmente agora é hora de iniciar o isc-dhcpd-server executando o comando:

sudo service isc-dhcp-server start

para verificar o sucesso da configuração, use outro comando:

sudo service isc-dhcp-server status

e analise as seguintes linhas para a confirmação do sucesso:

● isc-dhcp-server.service - ISC DHCP IPv4 server
Active: active (running) since Wed 2017-05-10 15:28:13 CEST; 29min ago
May 10 15:28:13 system-P50 dhcpd[26869]: Listening on LPF/enp0s31f6/0a:3e:47:75:17:a8/10.20.0.0/24
    
por 10.05.2017 / 16:05
0

Eu lutei com essa mensagem de erro por 1 dia.

No subnet declaration for eth1 (no IPv4 addresses).

Finalmente, o erro no meu caso vem do script de serviço dhcp, iniciando-o com comandos systemctl.

#cat /etc/systemd/system/dhcpd.service

[Service]
Type=notify
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid **eth1**

Basta modificar o número da ethXX

Recarregue

#systemctl daemon-reload

reinicie:

#systemctl start dhcpd
    
por 12.07.2017 / 16:32