PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : dhcpd an bestimmtes interface binden



Cybercchriss
16.03.06, 08:30
Ich habe zum ersten mal einen DHCP Server unter Debian eingerichtet und hänge nun an folgender Problematik:
In meinem Server sind 2 Netzwerkkarten (eth0,eth1), jeder Netzwerkkarte ist ein Netz zugeordnet.
Ich möchte den Server nur an eth1 binden, da der dhcpd nur für dieses Netz zur Verfügung stehen soll.

Hierbei habe ich im im init-Startscript folgenden Eintrag angepasst:
# Defaults
INTERFACES="eth1"

Meine dhcp.conf siehst folgendermassen aus:


option subnet-mask 255.255.0.0;
default-lease-time 60;
max-lease-time 120;

# IP Pool Technik
subnet 150.100.0.0 netmask 255.255.0.0 {
range 150.100.10.1 150.100.10.254;
option broadcast-address 150.100.255.255;
}


Versuche ich den server mit diesen Einstellungen zu starten, bringt er folgende Fehlermeldung:


AV02 dhcpd: No subnet declaration for eth0 (150.102.20.64).
AV02 dhcpd: Please write a subnet declaration in your dhcpd.conf file for the
AV02 dhcpd: network segment to which interface eth0 is attached.
AV02 dhcpd: exiting.


Ich habe mir imo so beholfen, dass ich für eth1 ein Subnet deklariert habe, diesem aber keinen IP-Pool zugewiesen habe.


# IP Pool Entwicklung
subnet 150.102.0.0 netmask 255.255.0.0 {
}


Woran kann es nun liegen, dass der dhcpd einen Eintrag für die Schnittstelle braucht, an die er ja eigentlich nicht gebunden ist?
Eine Bindung an eine Netzwerkkarte bedeutet doch, dass der Server nur auf Anfragen dieser horcht?!?!? In den Logfiles jedoch sehe ich trotz erstgenannter dhcp.conf auch Anfragen auf eth1.

bla!zilla
16.03.06, 08:45
Du hast einen Server mit zwei Netzwerkkarten, eth0 und eth1. Du möchtest das der DHCP nur auf eth1 horcht, und er beschwert sich trotzdem beim Starten des Daemons das er für eth0 keinen Pool hat? Mich irritiert deine Aussage


Ich habe mir imo so beholfen, dass ich für eth1 ein Subnet deklariert habe, diesem aber keinen IP-Pool zugewiesen habe..

Poste mal bitte die Ausgabe von


ps ax | grep [d]hcp

Bei mir sieht das so aus:


/usr/sbin/dhcpd -chroot /var/lib/dhcp/ -lf /db/dhcpd.leases -user dhcpd -group nogroup wlan0

Ich verwende allerdings SUSE 10.0 und habe in der /etc/sysconfig/dhcp den Eintrag DHCPD_INTERFACE auf DHCPD_INTERFACE=wlan0 gesetzt. Ich kenne das Init-Skript nicht, welches du editiert hast, aber da wird wahrscheinlich der Fehler liegen. Wahrscheinlich wird der dhcpd bei dir nicht mit
/usr/sbin/dhcpd $INTERFACES.

Cybercchriss
16.03.06, 09:02
Hmmm wie es ausschaut hat er das Interface wirklich nicht mit übergeben beim start des init-Scripts:



25584 ? Ss 0:00 /usr/sbin/dhcpd -q


Hatte mir mal das init-Script angeschaut, mir ist aber auf den ersten Blick nicht wirklich was aufgefallen :)



#!/bin/sh
#
# $Id: dhcp.init.d,v 1.3.2.2 2002/08/11 22:11:54 peloy Exp $
#

test -x /usr/sbin/dhcpd || exit 0

# Defaults
INTERFACES="eth1"

# Reads config file (will override defaults above)
[ -r /etc/default/dhcp ] && . /etc/default/dhcp

DHCPDPID=/var/run/dhcpd.pid

case "$1" in
start)
echo -n "Starting DHCP server: "
start-stop-daemon --start --quiet --pidfile $DHCPDPID \
--exec /usr/sbin/dhcpd -- -q $INTERFACES
sleep 2

if [ -f "$DHCPDPID" ] && ps h `cat "$DHCPDPID"` >/dev/null; then
echo "dhcpd."
else
echo "dhcpd failed to start - check syslog for diagnostics."
fi
;;
stop)
echo -n "Stopping DHCP server: dhcp"
start-stop-daemon --stop --quiet --pidfile $DHCPDPID
echo "."
;;
restart | force-reload)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: /etc/init.d/dhcp {start|stop|restart|force-reload}"
exit 1
esac

exit 0


Werd den Server mal per Hand starten und schauen wies sich da verhält ...

Cybercchriss
16.03.06, 09:12
So hab die Lösung gefunden:
Unter debian ist unter /etc/default/dhcp noch die Netzwerkschnittstelle einzutragen, auf denen der dhcpd antworten soll.
Dann klappts auch mit o.g. Startscript :)

bla!zilla
16.03.06, 10:26
Alles andere hätte mich auch gewundert. Normalerweise wird nichts direkt in den Init-Skripten geändert.