Brauche Hilfe mit ezjail

cabriofahrer

Well-Known Member
Bitte schlagt mich nicht, weil ich im Thema jails so unerfahren bin. Ich möchte mich eben an dieses Thema herantasten und habe mich entschieden, das mittels ezjail zu tun.

Ich habe dazu wie auf dieser Seite (http://erdgeist.org/arts/software/ezjail/) beschrieben folgende Schritte ausgeführt und meiner Maschine entsprechend für die Netzwerkkarte nfe0 eingesetzt:

pkg install ezjail

ezjail_enable=YES in die /etc/rc.conf.

ezjail-admin install
ezjail-admin create example.com 'nfe0|10.0.0.2'
ezjail-admin start example.com

ezjail-admin console example.com

Das Basissystem wird ziemlich schnell heruntergeladen und installiert. Ich bekomme dabei folgende Meldungen:

Code:
Warning: Some services already seem to be listening on all IP, (including 10.0.0.2)
  This may cause some confusion, here they are:
root     sshd       1079  3  tcp6   *:22                  *:*
root     sshd       1079  4  tcp4   *:22                  *:*
root     ntpd       825   20 udp6   *:123                 *:*
root     ntpd       825   21 udp4   *:123                 *:*
root     syslogd    625   6  udp6   *:514                 *:*
root     syslogd    625   7  udp4   *:514                 *:*
#


# ezjail-admin start example.com
Starting jails: example.com.
/etc/rc.d/jail: WARNING: Per-jail configuration via jail_* variables  is obsolete.  Please consider migrating to /etc/jail.conf.
#

# ezjail-admin console example.com
FreeBSD 11.1-RELEASE-p4 (GENERIC) #0: Tue Nov 14 06:12:40 UTC 2017

Welcome to FreeBSD!

Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories:   https://www.FreeBSD.org/security/
FreeBSD Handbook:      https://www.FreeBSD.org/handbook/
FreeBSD FAQ:           https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums:        https://forums.FreeBSD.org/

Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with:  pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.

Show the version of FreeBSD installed:  freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages:  man man
FreeBSD directory layout:      man hier

Edit /etc/motd to change this login announcement.
root@example:~ # uname -a
FreeBSD example.com 11.1-RELEASE-p4 FreeBSD 11.1-RELEASE-p4 #0: Tue Nov 14 06:12:40 UTC 2017     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64
root@example:~ # pwd
/root
root@example:~ # pkg info
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:11:amd64/quarterly, please wait...
pkg: Error fetching http://pkg.FreeBSD.org/FreeBSD:11:amd64/quarterly/Latest/pkg.txz: No address record
A pre-built version of pkg could not be found for your system.
Consider changing PACKAGESITE or installing it from ports: 'ports-mgmt/pkg'.

Offensichtlich scheint die IP 10.0.0.2 aus der Anleitung nicht optimal zu sein.

Weiterhin misslingt wie man sieht die Installation von pkg, wobei ich nicht weiß, ob das mit Problem 1 zusammenhängt.

Ich bin wie gesagt absolut unerfahren in dem Thema und habe lediglich die Anleitung von ezjail befolgt.
 
Spontan würd ich sagen du musst im Jail einen Nameserver in der /etc/resolv.conf eintragen.
 
Sieht danach aus. In der Anleitung steht folgendes:

Code:
and you're done. Get a shell in your new jail with the:

ezjail-admin console example.com

command. As with any vanilla FreeBSD installation, you might probably need to touch /etc/ and maybe copy your host's /etc/resolv.conf.

Ein ls von /etc im Jail ergibt folgendes:

Code:
root@example:/etc # ls
X11            libalias.conf        profile
aliases            libmap.conf        protocols
amd.map            locate.rc        pwd.db
apmd.conf        login.access        rc
auto_master        login.conf        rc.bsdextended
autofs            login.conf.db        rc.conf.d
blacklistd.conf        mac.conf        rc.d
bluetooth        mail            rc.firewall
casper            mail.rc            rc.initdiskless
cron.d            make.conf        rc.resume
crontab            master.passwd        rc.sendmail
csh.cshrc        motd            rc.shutdown
csh.login        mtree            rc.subr
csh.logout        netconfig        rc.suspend
ddb.conf        netstart        regdomain.xml
defaults        network.subr        remote
devd            networks        rmt
devd.conf        newsyslog.conf        rpc
devfs.conf        newsyslog.conf.d    security
dhclient.conf        nscd.conf        services
disktab            nsmb.conf        shells
dma            nsswitch.conf        skel
dumpdates        ntp            snmpd.config
fbtab            ntp.conf        spwd.db
freebsd-update.conf    opieaccess        ssh
ftpusers        pam.d            ssl
gettytab        passwd            sysctl.conf
group            pccard_ether        syslog.conf
gss            periodic        syslog.d
host.conf        pf.os            termcap
hosts            phones            termcap.small
hosts.allow        pkg            ttys
hosts.equiv        portsnap.conf        unbound
hosts.lpd        ppp            zfs
inetd.conf        printcap
root@example:/etc #

Es existieren also weder resolv.conf noch rc.conf. Mittlerweile war ich auch auf die Idee gekommen, ein "bsdinstall netconfig" zu probieren. Zwar wird es aufgerufen, es bewirkt aber nichts. Die Netzwerkkarte lässt sich so nicht konfigurieren. Wahrscheinlich muss auch eine rc.conf komplett manuell erstellt werden?

Und noch eine bescheidene Frage: Wie kopiere ich denn z.B. die resolv.conf von meinem Hostsystem in das Jail? Wie ist da der Pfad?
 
Wenn du nichts verändert hast cp /etc/resolv.conf /usr/jails/<JAILNAME>/etc/
Oder du schreibst die resolv.conf im jail selbst z.b. echo "nameserver 9.9.9.9" > /etc/resolv.conf

Je nach Usecase brauchst du keine rc.conf, ansonsten selbst erstellen mitdem was du brauchst. Eine Kopie vom Host hilft dir da nichts.
 
OK, ich habe die resolv.conf in das Jail kopiert. Die Fehlermeldung beim Versuch pkg zu installieren ist zwar weg, doch nun hängt es einfach und nichts passiert:

Code:
root@example:~ # pkg info
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:11:amd64/quarterly, please wait...

^C
root@example:~ # more /etc/resolv.conf
# Generated by resolvconf
search home
nameserver 62.81.16.164
nameserver 62.81.16.213

root@example:~ #

Hier noch die Ausgabe von ifconfig innerhalb der Jail, falls es hilft:

Code:
root@example:~ # ifconfig
nfe0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=82008<VLAN_MTU,WOL_MAGIC,LINKSTATE>
    ether 00:15:58:98:75:5a
    hwaddr 00:15:58:98:75:5a
    inet 10.0.0.2 netmask 0xffffffff broadcast 10.0.0.2
    media: Ethernet autoselect (100baseTX <full-duplex>)
    status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
    options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
    groups: lo
root@example:~ #
 
Hast du am Host ebenfalls eine 10.0.0.0/24 er IP oder machst du NAT? Oder hast du statische Routes am Host eingetragen?
 
Hast du am Host ebenfalls eine 10.0.0.0/24 er IP oder machst du NAT? Oder hast du statische Routes am Host eingetragen?

Ich sehe schon, das Thema ist komplizierter, als ich dachte. Ich bin mittlerweile auf Kap. 14.6. "Managing Jails with ezjail" gestoßen. Dort wird erstmal die Schaffung eines weiteren Loppback Interfaces (lo1) vorgeschlagen. Später wird dann gesagt:


Code:
Procedure 14.1. Create and Start a New Jail

    Create the jail, specifying a name and the loopback and network interfaces to use, along with their IP addresses. In this example, the jail is named dnsjail.

    # ezjail-admin create dnsjail 'lo1|127.0.1.1,em0|192.168.1.50'


em0 hatte ich dann durch nfe0 ersetzt. Doch zufälligerweise ist 192.168.1.50 die IP-Adresse von meinem Host, siehe hier:

Code:
# ifconfig
nfe0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=82008<VLAN_MTU,WOL_MAGIC,LINKSTATE>
    ether 00:15:58:98:75:5a
    hwaddr 00:15:58:98:75:5a
    inet 192.168.1.50 netmask 0xffffff00 broadcast 192.168.1.255
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet autoselect (100baseTX <full-duplex>)
    status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
    options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
    inet 127.0.0.1 netmask 0xff000000
    nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
    groups: lo
#

Nach einem Neustart hatte ich in meinem Host plötzlich kein Internet mehr. Scheint irgendwie logisch, denn 192.168.1.50 ist ja die IP, die mein Router automatisch (DHCP) meinem Host-PC zuweist.

Ich nehme mal an, dass die IP vom Host (nfe0) nicht mit der in der Jail übereinstimmen darf? Die Karte heißt im Jail aber natürlich auch nfe0. Und soll diese denn im Jail überhaupt eine Klasse C IP wie im Host zugewiesen bekommen? Wird das Jail nicht automatisch über das in der Anleitung vorgeschlagene Loopback Device (lo1) und 127.0.1.1 an den Host verbunden, der ja in meinem Fall die IP 192.168.1.50 hat? Oder müsste das Jail auch per DHCP vom Router eine eigene IP zugewiesen bekommen, als sei es ein separater Rechner?
 
Hallo, nein im Jail hast du nur eine zweite IP auf dem Hostinterface. In deinem Fall müsstest du also das Jail mit einer freien 192.168.1.* IP erstellen. Danach sollte das Netzwerk grundlegen funktionieren (mit deiner kopierten resolv.conf). Was wie warum Sinnvoll ist kann ich nicht beantworten ohne zu wissen, was du genau vorhast ;)
 
Genau vor habe ich eigentlich nur ein weiteres FreeBSD zu Testzwecken für irgendwelche Packages (z.B. wine-devel) oder speziell kompilierte Ports. Grundlegend ist natürlich, dass man überhaupt etwas installieren kann und das geht nur mit einer Internetverbindung.

In deinem Fall müsstest du also das Jail mit einer freien 192.168.1.* IP erstellen.

Theoretisch könnten viele 192.168.1.* IP's frei sein, aber der Router wird wohl keine zuteilen, wenn es kein Gerät gibt, dass nach einer verlangt, nehme ich an. Müsste das Jail nicht also eine rc.conf haben, das DHCP vorsieht? In der von meinem Host steht z.B. 'ifconfig_nfe0="DHCP"'.

Interessant ist auch folgendes: In einem Ubuntu-Guest in Virtualbox zeigt die Ausgabe von ifconfig die im Bild angegebene Adresse an und ich bekomme eine Verbindung ins Internet. Warum 10.0.2.15 und 127.0.0.1 als Loopback?
 

Anhänge

  • ubuntu.png
    ubuntu.png
    109,6 KB · Aufrufe: 204
Hi, die VirtualBox macht NAT, für deine BSD Jail müsstest du NAT extra mit deiner Firewall einrichten. Das ist keine Hexerei, da ich aber annehme das du mit solch Dingen weniger bewandert bist (korregiere mich gerne wenn ich irre :) ), können wir das auch getrost weglassen, vorallem wenn das Jail nur zu Testzwecken, bzw. der "Spielerei" dient. Zudem hat deine VirtualBox für den Gaste in eigenes Interface parat, bei einer Jail ist das nicht so.

Ich bin grad nicht sicher wie umständlich es ist über das Jail selbst eine IP per DHCP zu besorgen, über den Host kann man das machen, aber alles nicht nötig. Gib dem Jail einfach eine freie IP in deinem 192.168.1.0/24er Netz und es sollte funktionieren. "Schön" kannst du deinen DHCP so konfigurieren, dass er in bestimmten Bereichen keine IPs vergibt, quick&dirty kannst du mit ping prüfen, ob eine IP frei ist.
 
(korregiere mich gerne wenn ich irre :) )

Da kann ich Dich leider nicht korrigieren, doch ich bin gerade auf dem Networking-Lernpfad, deswegen merke ich gerade durch dieses Jail-Experiment, wie wichtig die ganze Thematik ist.

Ich bin grad nicht sicher wie umständlich es ist über das Jail selbst eine IP per DHCP zu besorgen, über den Host kann man das machen, aber alles nicht nötig. Gib dem Jail einfach eine freie IP in deinem 192.168.1.0/24er Netz und es sollte funktionieren. "Schön" kannst du deinen DHCP so konfigurieren, dass er in bestimmten Bereichen keine IPs vergibt, quick&dirty kannst du mit ping prüfen, ob eine IP frei ist.

Und insbesondere

Gib dem Jail einfach eine freie IP in deinem 192.168.1.0/24er Netz und es sollte funktionieren.

geht nicht, wie ich im Vorfeld schon vermutet hatte:

Ich bin in die Konfiguration des Routers reingegangen und es sind nur drei IP's aufgelistet von eben den drei Geräten, die gerade angeschlossen sind:

192.168.1.50 mein Host-PC, um den es hier geht
192.168.1.49 mein Mobiltelefon über WiFi
192.168.1.93 das Notebook

BTW, gibt es ein Kommando, der mir im Host-PC diese im Netzwerk vorhandenen Adressen anzeigt, ohne dass ich in die Konfiguration des Routers muss?

Ich bin grad nicht sicher wie umständlich es ist über das Jail selbst eine IP per DHCP zu besorgen

Aber genau das scheint hier nötig zu sein. Offensichtlich kann/will das Jail wie ein separates Device behandelt werden, dass direkt eine IP von Router zugewiesen bekommen kann.
 
Zurück
Oben