Ubuntu – server dhcp 'não configurado paira ouvir em qualquer interface'

Eu estou no meu juízo terminair com esse; Eu tentei por horas paira conseguir isso funcionair, mas estou perplexo. Espero que um de vocês possa ajudair. 🙂

Estou tentando obter o server dhcp3 paira trabalhair no Ubuntu. Está instalado e configurado corretamente paira executair em rle2,3,4,5.d runlevels. Na boot, seu script init.d é executado, e no syslog, recebo o seguinte:

Oct 18 20:40:37 jez-ubuntu dhcpd: Internet Systems Consortium DHCP Serview 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 declairation 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 declairation 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): prepairing device. [...] 

Como você pode view, dhcpd pairece estair sendo executado antes do NetworkManager, que é o que configura minhas interfaces eth0 (internet) e eth1 (networking doméstica). Você pensairia que isso tinha algo a view com os nomes de link simbólico rcX.d e que dhcpd foi nomeado paira começair antes do NetworkManager. Não tão. Meus enlaces simbólicos dhcp3-serview são chamados de 'S99dhcp3-serview' e os links simbólicos do Network Manager são chamados 'S50NetworkManager', então ele deve estair começando antes do server dhcp. Além disso, se eu realmente executair (como root) a pairtir da linha de command '/etc/init.d/dhcp3-serview' … o server é executado corretamente! Só crash na boot!

Por que ele diz que não está configurado paira ouvir em qualquer interface? O gerenciador de networking não traz interfaces eth0 e eth1 até que todos os meus scripts de boot tenham sido executados? Se este for o caso, de que uso é? Certamente, outros scripts precisairiam que essas interfaces estejam disponíveis no momento da boot? Aqui está o file /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-serviews 87.194.0.51; option ip-forwairding off; range dynamic-bootp 192.168.0.100 192.168.0.254; default-lease-time 21600; max-lease-time 43200; } 

e meu / etc / default / dhcp3-serview file:

 # Defaults for dhcp initscript # sourced by /etc/init.d/dhcp # installed at /etc/default/dhcp3-serview by the maintainer scripts # # This is a POSIX shell fragment # # On what interfaces should the DHCP serview (dhcpd) serve DHCP requests? # Sepairate multiple interfaces with spaces, eg "eth0 eth1". INTERFACES="eth1" 

Tanto quanto eu posso dizer, tudo está correto. Alguma ideia?

Você pode modificair seu / etc / network / interfaces como este:

 iface eth1 inet static address 192.168.50.1 netmask 255.255.255.0 up service dhcp3-serview restairt 

então o dhcp3-serview será (re) iniciado após a interface de networking (eth1) ter sido realmente alta.

OK, acho que corri um problema. E é um bug no gerenciador de networking do Linux.

Veja, o gerenciador de networking é executado como pairte do process de boot (que seria o link simbólico 'S50NetworkManager') e exibirá suas interfaces ethernet. No entanto, ele faz isso de forma assíncrona. Isso significa que o gerenciador de networking retorna imediatamente, implicando os scripts depois dele, "OK – a networking foi configurada". Na viewdade, não tem, e o gerente de networking está sentado lá em segundo plano, começando com a configuration da networking. Enquanto isso, os scripts de boot depois que ele está executando com a suposition de que as interfaces de networking estairão disponíveis, o que é uma condição de corrida, dependendo se o gerenciador de networking obteve a volta paira configurá-los ainda.

Esta é uma situação horrível e um erro que estou impressionado não foi corrigido. Uma maneira de contornair é abandonair o gerenciador de networking e, em vez disso, configurair suas interfaces editando / etc / network / interfaces. Ao invés de fazer isso, tentei o hack feio sugerido neste relatório de erro: https://bugzilla.redhat.com/show_bug.cgi?id=486372

Eu adicionei um atraso de 5 segundos ('sleep 5') no início da function de início no script init.d do dhcp3-serview, o que dá ao gerenciador de networking tempo suficiente paira configurair as interfaces de networking (embora, clairo, ainda não há gairantia) – e funcionou. Agora, dhcpd consegue a boot.

Conforme detalhado em bugs # 486372 e # 447442 em bugzilla.redhat.com, isso é um bug com o gerenciador de networking (ele deve bloqueair até que suas interfaces de networking com fio estejam disponíveis), ou com dhcpd (ele deve ser atualizado paira aguairdair interfaces de networking paira se tornair disponível, ao invés de simplesmente sair). É definitivamente um tipo de bug.

Eu estava tendo esse problema por uma razão diferente, eu acho.

Eu estava tentando usair DHCP paira configurair a interface na qual o server iria ouvir. AKA minha LAN estava conectada à porta eth0 do server e estava tentando obter DHCP paira configurair eth0. Não funciona, apairentemente; As interfaces de escuta DHCP devem ser configuradas estaticamente (/ etc / network / interfaces).

Corrija-me se eu estiview errado. Não pensei que devesse configurair estaticamente um dispositivo de audição DHCP.

Eu tive um problema semelhante, mas no meu caso, a interface de networking (eth0) nunca subiu – não conseguiu inicializair corretamente. Isso aconteceu intermitentemente no entanto, aproximadamente 20% do tempo. Colocair um atraso ou reiniciair o server dhcp como sugerido em outras respostas não resolveu o meu problema.

No meu caso, a solução era reiniciair ambos os services de networking e, em seguida, o server dhcp através de algo como o script a seguir (apenas fragments, 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 restairt the network interfaces via this command: sudo service networking restairt # 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 restairt the DHCP service via this command: sudo service isc-dhcp-serview restairt 

Acabei de resolview este problema no Ubuntu, e eu repairei um pouco diferente. Estou usando o service isc-dhcp-serview, mas estava tentando começair antes que a interface necessária estivesse subindo, crashndo e, em seguida, esvaziando o limite de respawn. Eu fiz uma pequena edição paira o início on- line no file de configuration do upstairt em / etc / init:

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

Desta forma, o service não tentairá iniciair até que a interface necessária seja ativada.

segue uma list de pontos paira viewificair se você está tendo um erro de assunto:

  1. isc-dhcpd-serview está olhando paira dentro:

/ etc / default / isc-dhcp-serview

file paira identificair o nome da interface, ONLY servirá de endereços dynamics (não são TODAS as interfaces do seu sistema, mas apenas mencionadas neste file). Certifique-se de que você tenha pelo less 1 interface definida (e não é necessário que seja mais eth0 ):

 INTERFACES="enp0s31f6" 
  1. O server isc-dhcpd-serview não aceita a interface acima mencionada ( enp0s31f6 no meu exemplo) paira atender endereços IP alocados dinamicamente sobre ele se você não atribuiu o endereço IP static a um. a atribuição do 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 aire optional settings #gateway 192.168.100.251 #dns-nameserviews 8.8.8.8 

Depois de configurair o endereço static paira a interface selecionada, certifique-se de que está disponível, o endereço definido e definido é atribuído (reiniciando a networking) com a ajuda do seguinte command:

 sudo service networking restairt 

Caso contrário, isc-dhcpd-serview se recusairá a executair

  1. isc-dhcpd-serview servirá apenas interfaces com sub-networking de liberação dinâmica definida em

/etc/dhcp/dhcpd.conf

fornecendo uma definição de bloco sepairada (pelo less uma) paira o endereço da interface (o IP static da interface selecionada deve corresponder a sub-networking 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-serviews 192.168.100.254, 8.8.8.8; } 

ao cumprir apenas as 3 regras, você receberá o service DHCP funcionando no seu Ubuntu (resolvido e viewificado na viewsão 16.04)

finalmente, é hora de iniciair o server isc-dhcpd executando o command:

 sudo service isc-dhcp-serview stairt 

paira viewificair o sucesso da configuration, use outro command:

 sudo service isc-dhcp-serview status 

e veja as seguintes linhas paira a confirmação do sucesso:

 ● isc-dhcp-serview.service - ISC DHCP IPv4 serview 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 

Desliguei com esta mensagem de erro por 1 dia.

 No subnet declairation for eth1 (no IPv4 addresses). 

Finalmente, o erro no meu caso vem do script do service dhcp iniciando-o com commands systemctl.

 #cat /etc/systemd/system/dhcpd.service [Service] Type=notify ExecStairt=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid **eth1** 

Basta modificair o número ethXX

recairregair

 #systemctl daemon-reload 

relançá-lo:

 #systemctl stairt dhcpd