BIND und DHCPD in einer Jail (/dev)

MHLInk

Well-Known Member
Moin,

ich habe auf meinem FreeBSD 6.0 Server eine Jail am laufen, auf der ich versucht habe DHCPD und BIND zum laufen zu bekommen. Leider wollte mir beides nicht gelingen und ich vermute, das das an dem gleichen Fehler liegt.

Wenn ich BIND starte, dann passiert das:
Code:
Winnetou# /etc/rc.d/named start
mount_devfs: Operation not permitted
/etc/rc.d/named: WARNING: devfs_domount(): Unable to mount devfs on /var/named/dev
devfs rule: ioctl DEVFSIO_RAPPLY: Inappropriate ioctl for device
devfs rule: ioctl DEVFSIO_RAPPLY: Inappropriate ioctl for device
Starting named.
Named läuft dann aber nicht.

Mit ISC-DHCPD sieht es ähnlich aus:
Code:
Winnetou# /usr/local/etc/rc.d/isc-dhcpd.sh start
mount_devfs: Operation not permitted
/usr/local/etc/rc.d/isc-dhcpd.sh: ERROR: unable to mount /var/db/dhcpd/dev

Makedev klappt auch nicht.

Mir scheint, das ich da irgenwo einen Fehler gemacht habe, da auf http://grunix-mirror.bummi-net.de/freebsd/jails-html/node75.html
steht, das BIND laufen kann.
Auch wenn ich versuche mount_devfs von hand ausführe bekomme ich:
Code:
Winnetou# mount_devfs devfs /var/named/dev
mount_devfs: Operation not permitted

An den devfs.rules habe ich nicht gedreht.

Ich hoffe, das ihr mir ein wenig weiterhelfen könnt.

Mit freundlichem Grüßen

MHLInk
 
Moin,

hast Du mount_devfs im Hostsystem ausgeführt? also:
mount_devfs devfs /jail/mein_jail/dev

(so steht es aber meine ich auch in asg's Jail-PDF)

Gruß
paefchen
 
jo habe ich. Im Ordner /dev in der Jail sind auch die Devices aus der /etc/defaults/devfs.rules.

Gruß MHLInk
 
Da ich beide Dienste selber nicht im Jails laufen habe, kann ich nicht wirklich viel dazu sagen.
Ich hab aber mal nen Blick in die rc.d Skripts von den beiden Diensten geworfen und ich vermute mal es liegt daran, das beide in einem chroot laufen und dort hin gewisse devs mounten was in nem Jail nicht erlaubt ist.
Dem isc-dhcpd kann man das wohl abgewöhnen per:

dhcpd_chroot_enable="NO"
oder
dhcpd_jail_enable="YES"

beim letzen steht nen Kommentar "untested" dazu.

Beim Bind weis ich auch gerade nicht was man da macht, ich persönlich würde wohl den rc.d Skript umschreiben, aber ob das so das wahre ist?!

(Bei beidem gehe ich hier bei mir von FreeBSD 5 aus).
Vielleicht liege ich aber auch falsch und jemand anderes hat ne viel einfacherer Lösung.

Prinzipiell finde ich nen chroot in nem Jail für Doppelgemoppelt.
 
Zuletzt bearbeitet von einem Moderator:
Nach meinen Erfahrungen sieht es so aus, dass

a) named sehr gut in einer Jail läuft

b) DHCP auch mit der Option dhcpd_jail_enable="YES" bei mir einfach nicht laufen wollte

Für named ist es wichtig, dass in der named.conf ein der Eintrag
Code:
listen on {
JAIL_IP
}
steht, damit sich named auf die IP der Jail bindet.

Gruß,

Ice
 
ISC_DHCPD habe ich zum laufen bekommen.
Dazu habe in der /etc/rc.conf folgendes für DHCPD eingetragen:
Code:
Winnetou# cat /etc/rc.conf | grep dhcp
dhcpd_enable="YES"
dhcpd_flags="-q"
dhcpd_conf="/usr/local/etc/dhcpd.conf"
dhcpd_ifaces=""
dhcpd_umask="022"
dhcpd_chuser_enable="YES"
dhcpd_devfs_enable="YES"
dhcpd_makedev_enable="NO"
dhcpd_withuser="dhcpd"
dhcpd_withgroup="dhcpd"
[B]dhcpd_chroot_enable="NO"
dhcpd_jail_enable="NO"[/B]
dhcpd_rootdir="/var/db/dhcpd"
dhcpd_hostname="Winnetou.Fraterna.kthn"
dhcpd_ipaddress="192.168.0.56"


In der /etc/namedb/named.conf habe ich die IP-Adresse der Jail stehen, wie es in asg's PDF steht.
Aber jetzt ist schon mal ein Problem weg.

MHLInk
 
na fein dann wahren die beiden ja richtig.

den Bind kann man sein Sandkasten mit:

named_chrootdir=""

abgewöhnen.

Ich vermute aber das Du dann weitere Parameter setzen musst damit er dann noch alles findet:

named_pidfile="/var/run/named/pid"
named_chroot_autoupdate="NO"
named_symlink_enable="NO"


probiere es mal, ich kann es hier gerade nicht testen.

Gruß
paefchen

Edit: mal nen Blick in /etc/defaults/rc.conf werfen...
 
Zuletzt bearbeitet von einem Moderator:
Jo, das klappt prima. Es reicht, wenn man named_chrootdir="" ind die /etc/rc.conf einträgt, der Rest ist in der /etc/default/rc.conf schon richtig gesetzt.

Vielen dank für Eure Hilfe

gruß MHLInk
 
Hey, das ist ja klasse.
Kannst Du mir bitte noch verraten, mit welchen optionen Du ISC-DHCP in der Jail gebaut hast?
Ich krieg den DHCP hier mit Deinen Einstellungen in der rc.conf zwar zum Laufen, aber er funktioniert nicht. Die angeschlossenen Clients finden keinen DHCP-Server. :-(
Ist auch kein Wunder, denn ich bekomme die folgende Meldung, wenn cih den dhcpd ohne die Option -q starte
Code:
unable to create icmp socket: Operation not permitted

Thx,

Ice
 
Zuletzt bearbeitet:
Ich habe das gleiche Problem, dhcpd sieht gestartet aus (nach sockstat -4) aber meine Client finden keinen Server.
Den bpf habe ich im Kernel und security.jail.allow_raw_sockets steht auf 1.
Komischeweise bekomme ich aber keinen Fehler angezeigt, wenn ich dhcp ohne -q starte.

Gruß

MHLInk
 
Ich habe dhcp mit DHCP_PARANOIA, DHCP_JAIL, DHCP_SOCKETS, DHCP_LDAP_SSL, OPENSSL_BASE gebaut.
 
Wenn ich das richtig verstehe läuft der DHCP in der Jail, also der Prozess wird angezeigt? Wie sieht denn die config des DHCP aus?
 
Hier die dhcpd.conf. Die gleiche config läuft auf dem Hostsystem testweise ohne Probleme.

Code:
      1 option domain-name "Fraterna.kthn";
      2 option domain-name-servers 192.168.0.57;
      3 
      4 default-lease-time 600;
      5 max-lease-time 7200;
      6 
      7 authoritative;
      8 
      9 ddns-update-style ad-hoc;
     10 
     11 subnet 192.168.0.0 netmask 255.255.255.0 {
     12     range 192.168.0.10 192.168.0.32;
     13     option routers 192.168.0.5;
     14     option netbios-name-servers 192.168.0.5;
     15     option ntp-servers 192.168.0.5;
     16     option broadcast-address 192.168.0.255;
     17 }
     18 
     19 host ML {
     20 hardware Ethernet 00:0E:A6:33:83:27;
     21 fixed-address 192.168.0.2;
     22 }

192.168.0.5 ist der Router(Host), 192.168.0.57 ist die Jail
 
Und auf dem Hostsystem ist DHCP deaktiviert wenn Du diesen in der Jail startest?
Und was sagt /var/log/messages in der Jail wenn Du in dieser versuchst DHCP zu starten?
 
mal im Hostsystem überprüfen ob irgend was übers interface geht?:
tcpdump -i xyz0 -n broadcast and port 67 and port 68
 
Zuletzt bearbeitet von einem Moderator:
DHCP auf dem Hostsystem ist deaktiviert, wenn ich den auf der Jail starte.
/var/log/messages zeigt mir nur was von DHCPD, wenn was ganz falsch ist (z.B. bei chroot, wenn DHCP versucht devfs zu mounten), ansonsten erscheint DHCPD beim start nicht im log.

über tcp dump kommt was.
abschnitte, die zu der MAC-Addresse meines Rechners passen:

Code:
15:00:04.283976 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0e:a6:33:83:27, length: 300
15:00:20.283829 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0e:a6:33:83:27, length: 300

Und hier was, das müsste der Rechner meines Bruders sein:
Code:
15:03:17.401286 IP 192.168.0.3.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0b:6a:1a:e0:63, length: 300
15:03:25.400796 IP 192.168.0.3.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0b:6a:1a:e0:63, length: 300

Edit: Aber ich sehe bein start etwas Konsole:
Code:
Winnetou# /usr/local/etc/rc.d/isc-dhcpd.sh start
Starting dhcpd.
Internet Systems Consortium DHCP Server V3.0.3
Copyright 2004-2005 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 0 leases to leases file.
Listening on Socket/xl0/192.168.0/24
Sending on   Socket/xl0/192.168.0/24
 
Listening on Socket 192.168.0/24?
Eine Jail kann nur eine IP haben, daher sollte der DHCP auch nur auf eine hören. Evtl. musst Du diesem beim start noch 192.168.0.56/32 mitgeben (also die IP der Jail).

Code:
dhcpd_ipaddress="192.168.0.56/32"
in die /etc/rc.conf der Jail eintragen, evtl. geht das ja und funktioniert.
 
geb dem dhcpd mal das interface mit zB in der rc.conf:

dhcpd_ifaces="xl0"

"Listening on Socket/xl0/192.168.0/24" schaut für mich auch nicht richtig aus.
 
In der /etc/rc.conf habe ich folgende Optionen für DHCPD eigestellt:
Code:
      7 dhcpd_enable="YES"
      8 dhcpd_flags=""
      9 dhcpd_conf="/usr/local/etc/dhcpd.conf"
     10 dhcpd_ifaces="xl0" #192.168.0.57/32 gibt Fehler
     11 dhcpd_umask="022"
     12 dhcpd_chuser_enable="YES"
     13 dhcpd_devfs_enable="YES"
     14 dhcpd_makedev_enable="NO" #
     15 dhcpd_withuser="dhcpd"
     16 dhcpd_withgroup="dhcpd"
     17 dhcpd_chroot_enable="NO"
     18 dhcpd_jail_enable="NO" #Geht nicht, da der chroot haben will, und ich devfs aus der Jail nicht mounten kann
     19 dhcpd_rootdir="/var/db/dhcpd"
     20 dhcpd_hostname="Winnetou.Fraterna.kthn" #?Ohne Jail=yes nicht wirksam?
     21 dhcpd_ipaddress="192.168.0.57/32" #?Ohne Jail=yes nicht wirksam?

die sockstat -4 sagt:
Code:
dhcpd     dhcpd      41231 7  udp4   192.168.0.57:67       *:*
 
Zuletzt bearbeitet:
So langsam wird es komisch. Ich habe jetzt /dev von hostsystem manuell nach /var/db/dhcpd/dev (in der Jail) gemountet, habe Jail und chroot in der rc.conf enabled, damit ist die Meldung mit
Code:
/usr/local/etc/rc.d/isc-dhcpd.sh: ERROR: unable to mount /var/db/dhcpd/dev
wegbekommen, bekomme jetzt aber
Code:
/usr/local/etc/rc.d/isc-dhcpd.sh: ERROR: unable to create directory /var/db/dhcpd/dev/_
ich habe noch nie gesehen, das man etwas in einem devfs erstellen dann. Im Hostsystem wird das Verzeichnis "_" auch nicht versucht anzulegen.

Gruß

MHLInk

EDIT: Ich habe mich geirrt. im isc-dhcpd.sh wird "_" vor dem mounten angelegt, und da er ja nicht ins devfs schreiben kann kommt die Fehlermeldung zuerst.
 
Zuletzt bearbeitet:
Eigentlich würde es reichen, der Jail das mounten zu erlauben. Weiß wer, ob das geht, wenn ja, was muss ich drehen, damit das klappt?
 
Moin

Hat schonmal jemand dhcpd in einer Jail betrieben? Wenn ja könnte der mal beschreiben, wie er das gemacht hat.
ich habe jetzt so einiges ausgetestet incl. Portforwarding mit pf, dhcpd mir den Jailoptionen vom Hostsystem zu starten (habe mir gedacht, das DHCPD das so machen könnte, wie es bei der Jaileinrichtung mit dem ersten passwd gemacht wird)

Und dann habe ich noch eine Verständnisfrage auf dem Herzen: Wie findet der Client den DHCP-Server? Ich habe die pakete beobachtet, und gesehen, dass eine anfrage von 0.0.0.0:68 nach 255.255.255.255:67 geht, aber ich werde irgenwie noch nicht schlau deraus

Gruß

MHLInk
 
Zurück
Oben