Debian dhcpd "Keine Subnetzdeklaration für eth0"


9


Ich versuche, einen pxe-Boot-Server auf einem Debian 6.0.3 Squeeze-Computer einzurichten, der Images von PLoP Linux liefert. Ich habe dieses Tutorial verfolgt.
Wenn ich versuche, dhcpd (vom Paket dhcp3-server) zu starten, erhalte ich Folgendes:

No subnet declaration for eth0 (10.0.0.0).
**Ignoring requests on eth0. If this is not what
  you want, please write a subnet delclaration
  in your dhcpd.conf file for the network segment 
  to which interface eth0 is attached. **



Not configured to listen on any interfaces!

Mein /etc/dhcpd.confist identisch mit dem im Tutorial, abgesehen von ein paar Änderungen:

host testpc {
        hardware ethernet 00:0C:6E:A6:1A:E6;
        fixed-address 10.0.0.250;
}

ist stattdessen

host tablet {
        hardware ethernet 00:02:3F:FB:E2:6F;
        fixed-address 10.0.0.249;
}

Mein /etc/network/interfacesist:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 10.0.0.0
        netmask 255.255.255.0

Und das ist mein /etc/default/isc-dhcp-server:

# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/isc-dhcp-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="eth0"

was ich auch kopiert habe /etc/default/dhcp3-server, unsicher, welche es überprüfen würde.

Ich habe auch versucht, die IP /etc/network/interfacesals 10.0.0.1 und 10.0.0.2 einzustellen, aber es ergab das gleiche Ergebnis.

Antworten:


8

Da dhcpd IP-Adressen an Clients weitergeben muss, muss es den Adressbereich kennen, für den es verantwortlich ist. Die Subnetzdeklaration gibt dhcpd diese Informationen und mehr. Angenommen, Sie verwenden 10.0.0 / 24, sollten Sie mit dem Folgenden beginnen und die Fehlermeldung hinter sich lassen, aber Sie müssen wirklich in die Dokumentation einsteigen, um weiter zu gehen. Fügen Sie dies Ihrer dhcpd.conf hinzu:

subnet 10.0.0.0 netmask 255.255.255.0 { 
   authoritative; 
   range 10.0.0.1 10.0.0.254; 
   default-lease-time 3600; 
   max-lease-time 3600; 
   option subnet-mask 255.255.255.0; 
   option broadcast-address 10.0.0.255; 
   option routers 10.0.0.0; 
   option domain-name-servers 8.8.8.8; 
   option domain-name "example.com"; 
} 

Die IP-Adressen, die ich oben eingegeben habe, sind Vermutungen. Sie müssen diese für Ihr Setup richtig einstellen.


2

Das Problem ist, dass 10.0.0.0es sich nicht um eine gültige IPv4-Adresse handelt. Die erste Adresse im Subnetz (die Adresse mit allen Nullen für den Host-Teil) ist die Subnetz-ID und daher keine gültige Host-Adresse. Versuchen Sie es 10.0.0.1. Sie sollten auch die letzte Adresse in einem Subnetz vermeiden, da dies die IP-Broadcast-Adresse ist.

Decimal: 
  Address:     10   .0  .0  .0
  Subnet Mask: 255.255.255.255
Hex:     
  Address:     0A 00 00 00 
  Subnet Mask: FF FF FF 00
  Network:     ^^ ^^ ^^
  Host:                 ^^
  Smallest Addr:        01 (.1)
  Largest Addr:         FE (.254)
  Broadcast:            FF (.255)

1

Am Ende habe ich nur den dhcp3-Server gelöscht und stattdessen dnsmasq verwendet. Ich habe die Konfigurationsdatei dafür durchgesehen und konnte anhand der kommentierten Beispiele meinen Server so konfigurieren, wie ich es brauchte. dnsmasq hat auch einen eingebauten TFTP-Server, den ich für den PXE-Boot verwendet habe.


Ich habe das gleiche Problem wie Sie hier. Ich habe mich gefragt, ob Sie etwas Licht darauf werfen oder Ihre dnsmasq.conf teilen können, bitte ... Danke!
user1680784

@ user1680784 Ich habe nicht mehr das System, das dafür eingerichtet wurde, sodass ich meine Konfigurationsdatei nicht freigeben kann. Ich weiß zwar nicht, was Sie konkret erreichen möchten, aber wenn Sie Probleme haben, dhcpd oder dnsmasq manuell zu konfigurieren, möchten Sie möglicherweise DRBL verwenden, um Linux-Boot-Images auszugeben.
Suchipi

0

Überprüfen Sie mit

ifconfig eth0

Wenn Ihre Schnittstelle eth0 die richtige IPv4 hat

(anscheinend hast du es so eingestellt, dass es address 10.0.0.0sowieso ungültig wäre)

Wenn es eine IP im falschen Bereich hat, geben Sie ihm eine neue Adresse, zum Beispiel mit:

ifconfig eth0 10.0.0.1

Versuchen Sie dann, Ihren DHCP-Server neu zu starten


0

Das Entfernen von dnsmasq hat mein Problem gelöst

sudo apt-get -y remove dnsmasq

0

Stellen Sie unter systembasierten Betriebssystemen sicher, dass NetworkManager-wait-online.service ausgeführt wird.

Ich hatte ein ähnliches Problem mit Fedora 26, und da ich keine Referenz finden konnte, werde ich meine Lösung hier veröffentlichen, falls jemand sie benötigt:

No subnet declaration for enp2s0 (no IPv4 addresses).  
** Ignoring requests on enp2s0.  If this is not what
   you want, please write a subnet declaration
   in your dhcpd.conf file for the network segment
   to which interface enp2s0 is attached. **

Fedora 26 ist ein systemd-basiertes Betriebssystem, bei dem herkömmliche Init-Skripte (/etc/rc.d/init.d) durch native systemd-Dienstedateien ersetzt wurden.

Meine dhcpd.service-Datei:

[Unit]
Description=DHCPv4 Server Daemon
Documentation=man:dhcpd(8) man:dhcpd.conf(5)
Wants=network-online.target
After=network-online.target
After=time-sync.target

[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/dhcpd
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid $DHCPDARGS
StandardError=null

[Install]
WantedBy=multi-user.target

Diese Zeilen:

Wants=network-online.target
After=network-online.target

Stellen Sie sicher, dass der Dienst gestartet wird, nachdem das Netzwerk online ist, aber auch der richtige "Warte" -Dienst aktiviert sein muss 1 : NetworkManager-wait-online.service

Meins war nicht.

Referenz: https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.