Jail: ifconfig (lo | epair0b)-> Permission denied

denny

Member
hi,

was fehlt im Jail Host (FreeBSD 9 RC2), wenn der Jail Client kein ifconfig verwenden darf (für lo/epair0b? Ich habe es per Hand hinbekommen, aber welche Schraube ich gedreht haben könnte, sehe ich nicht mehr:


Aus einer Anleitung im Netz:

# jail zeugs
#ezjail_enable="YES"
jail_sysvipc_allow="YES"
#natd_enable="YES"
#natd_interface="bge0"
#natd_flags=""
gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"


#
# Jails configuration
#
jail_enable="YES"
jail_v2_enable="YES"
jail_list="web"

jail_web_name="web"
jail_web_hostname="web.domain.foo"
jail_web_devfs_enable="YES"
jail_web_devfs_ruleset="devfsrules_jail"
jail_web_rootdir="/jails/www"
jail_web_vnet_enable="YES"
jail_web_exec_prestart0="ifconfig epair0 create"
jail_web_exec_prestart1="ifconfig bridge0 addm epair0a"
jail_web_exec_prestart2="ifconfig epair0a up"
jail_web_exec_earlypoststart0="ifconfig epair0b vnet web"
jail_web_exec_afterstart0="ifconfig lo0 127.0.0.1"
jail_web_exec_afterstart1="ifconfig epair0b 192.168.1.3 netmask 255.255.255.0 up"
jail_web_exec_afterstart2="route add default 130.83.160.62"
jail_web_exec_afterstart3="/bin/sh /etc/rc"
jail_web_exec_poststop0="ifconfig bridge0 deletem epair0a"
jail_web_exec_poststop1="ifconfig epair0a destroy"

But:

/etc/rc.d/jail start web

Configuring jails:.
Starting jails:epair0a
ifconfig: up: permission denied
route: writing to routing socket: Operation not permitted
/etc/rc: WARNING: $hostname is not set -- see rc.conf(5).
Creating and/or trimming log files.
Starting syslogd.
syslogd: child pid 6510 exited with return code 1
/etc/rc: WARNING: failed to start syslogd
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib
Clearing /tmp.
Updating motd:.
Starting sshd.
554 5.3.0 host "localhost" unknown: Protocol not supported
Starting cron.

Mon Nov 28 09:24:30 UTC 2011
web.domain.foo.


Kann da jemand aushelfen?

cu denny
 
Versuch mal zu dokumentieren woher du das jail_v2 script hast, welche Kernelconfig du verwendest etc. Mit diesen Daten können Leser nur raten.
 
Versuch mal zu dokumentieren woher du das jail_v2 script hast, welche Kernelconfig du verwendest etc. Mit diesen Daten können Leser nur raten.

Hmm, ok. Alles aus FreeBSD9 incl. Kernel Config, mit maginaler Anpassung auf einer SPARC:

Code:
#  virt

device          pf
device          pflog
device          epair
device          if_bridge
options VIMAGE
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT
 
# The nullFS to mount local directory
options         NULLFS

Ich habe keine Scripte / Programme von extern, sondern alles mit Boardmitteln, daher gibt es keine großen "Quellen" die man angeben kann:

1. http://wiki.polymorf.fr/index.php/Howto:FreeBSD_jail_vnet
2. http://0xfeedface.org/blog/2011-11-21/lattera/freebsd-vnet-jail-admin-project

Eventuell fehlt in diesen Anleitungen, wonach ich suche ...

cu denny
 
Hmm... sieht irgendwie komisch aus... Du gibts deiner Jail gar keine IP, spielst dann aber massiv mit ifconfig rum...

Hast du im Host ein Alias deiner Jail-IP auf das entsprechende Netzwerkgerät gesetzt? Welche IP soll die Jail bekommen, und warum setzt du sie dann nicht einfach per jail_xx_ip? Ich würde mich beinahe wundern wenn du aus der Jail heraus einfach so IPs auf die Netzwerkkarte setzen kannst.

edit: jail_v2 sagt mir mal gar nix

edit2: Ahh... du patchest dir das jail_v2 da rein.... Was soll das eigentlich geben wenn es fertig ist?
 
@Rakor

Also bewusst patche ich da nichts hinein. Ich verwende schlicht und ergreifend das VirtNet von FreeBSD, was keine Aliases mehr benötigt. Die Jail verfügt dann über einen komplett eigenen Netzwerkstack, mit eigener Routine Tabelle und was es sonst noch so gibt. Das Ganze hat auch schon funktioniert, wenn man jeden Befehl von Hand eingibt. Ich hatte am Ende ein "gebridges" Netzwerk.

Und was es am Ende geben soll: Virtuelles Hosts die nahe an Xen/Zones herankommen und ich nicht sämtliche Dienste dediziert an IPs binden muss, nur damit sie sich nicht gegenseitig in die Quere kommen. Das sorgt nämlich - aus meiner Sicht - für mehr Schwierigkeiten.

VNet gibt es seit FreeBSD 8.2 und die Planung seit 4.x
 
Der Patch ist von 2010 und ist bereits im aktuellen 8.2 und auch 9 enthalten. Die Befehle werden ja auch ausgeführt, aber scheinbar habe ich irgendeine Zeile übersehen ...

Edit: Ok, od. eventuell auch nicht ... Teile davon sind enthalten, aber nicht alles ...

Edit2: Ich glaube, Dreh- und Angelpunkt scheint dieser Befehl zu sein:

Code:
jail -c vnet name=web host.hostname=web path=/jails/www persist

Genau wenn dieser Befehl ausgeführt wurde, funktionieren die Ifconfig Befehle. epair0b taucht dann nämlich nicht mehr in dem Jail Host auf, sondern nur in der Jail selbst.
 
Zuletzt bearbeitet:
Hi,

Du hast:
ifconfig epair0b 192.168.1.3 netmask 255.255.255.0 up
route add default 130.83.160.62

Wenn ich mich bärig recht entsinne wars abär so:
ifconfig epair0b XX.YY.ZZ.2 netmask 255.255.255.0 up
route add default XX.YY.ZZ.1

Gruß Bummibär
 
Zurück
Oben