Debian dhcpd „Brak deklaracji podsieci dla eth0”

9


Usiłuję skonfigurować serwer rozruchowy pxe na maszynie Squianze Debian 6.0.3, która daje obrazy PLoP Linux. Byłem w następstwie tego samouczka.
Kiedy próbuję uruchomić dhcpd (z pakietu dhcp3-server), otrzymuję:

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!

Mój /etc/dhcpd.confjest identyczny z tym w samouczku, z wyjątkiem kilku zmian:

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

jest zamiast tego

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

Mój /etc/network/interfacesjest:

# 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

A to moje /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"

do którego również skopiowałem /etc/default/dhcp3-server, nie jestem pewien, czy to sprawdzi.

Próbowałem również ustawić ip na /etc/network/interfaces10.0.0.1 i 10.0.0.2, ale dało to ten sam wynik.

Suchipi
źródło

Odpowiedzi:

8

Ponieważ dhcpd musi przekazywać adresy IP klientom, musi znać zakres adresów, za które jest odpowiedzialny. Deklaracja podsieci daje dhcpd te informacje i nie tylko. Zakładając, że używasz wersji 10.0.0 / 24, poniższe instrukcje powinny zacząć i ominąć komunikat o błędzie, ale naprawdę musisz przejść do dokumentacji, aby przejść dalej. Dodaj to do pliku dhcpd.conf:

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"; 
} 

Adresy IP, które podłączyłem powyżej, są przypuszczeniami. Musisz ustawić je poprawnie dla swojej konfiguracji.

Kyle Jones
źródło
2

Problem polega na tym, że 10.0.0.0nie jest to prawidłowy adres IPv4. Pierwszy adres w podsieci (adres ze wszystkimi zerami dla części hosta) jest identyfikatorem podsieci, a zatem nie jest prawidłowym adresem hosta. Spróbować 10.0.0.1. Należy również unikać ostatniego adresu w podsieci, ponieważ jest to adres rozgłoszeniowy IP.

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)
Biodro
źródło
1

Skończyło się na tym, że wyczyściłem serwer dhcp3 i zamiast tego użyłem dnsmasq. Przejrzałem dla niego plik konfiguracyjny i mogłem skorzystać z przykładów, które skomentował, aby skonfigurować mój serwer tak, jak potrzebowałem. dnsmasq ma również wbudowany serwer tftp, którego użyłem do rozruchu PXE.

Suchipi
źródło
Mam ten sam problem, co tutaj. Zastanawiałem się, czy możesz podzielić się z nami trochę światła lub podzielić się swoim plikiem dnsmasq.conf, proszę… Dzięki!
user1680784
@ user1680784 Nie mam już skonfigurowanego systemu, aby to zrobić, więc nie mogę udostępnić mojego pliku konfiguracyjnego. Chociaż nie wiem, co konkretnie próbujesz osiągnąć, jeśli masz problemy z ręcznym skonfigurowaniem dhcpd lub dnsmasq, możesz spróbować użyć DRBL do udostępnienia obrazów rozruchowych systemu Linux.
Suchipi
0

Sprawdź z

ifconfig eth0

Jeśli twój interfejs eth0 ma poprawny ipv4

(wygląda na to, że i tak ustawiłeś opcję, address 10.0.0.0która byłaby nieprawidłowa)

jeśli ma adres IP w niewłaściwym zakresie, podaj mu nowy adres, na przykład:

ifconfig eth0 10.0.0.1

następnie spróbuj zrestartować serwer dhcp

rubo77
źródło
0

Usunięcie dnsmasq rozwiązało mój problem

sudo apt-get -y remove dnsmasq
Fathur Rohim
źródło
0

W systemach operacyjnych opartych na systemie upewnij się, że działa NetworkManager-wait-online.service.

Miałem podobny problem na Fedorze 26, a ponieważ nie mogłem znaleźć żadnego odniesienia, opublikuję tutaj moje rozwiązanie na wypadek, gdyby ktoś go potrzebował:

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 to systemowy system operacyjny, w którym tradycyjne skrypty inicjujące (/etc/rc.d/init.d) zostały zastąpione przez rodzime pliki usług systemowych.

Mój plik dhcpd.service:

[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

Te linie:

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

upewnij się, że usługa uruchamia się, gdy sieć jest w trybie online, ale należy również włączyć odpowiednią usługę „czekaj” 1 : NetworkManager-wait-online.service

Mój nie był.

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

Ovidiu Luca
źródło