Jails & Network config

snn

Member
Hallo zusammen,

im Forum habe ich hier schon einige Beiträge gelesen und auch google befragt. Leider halfen mir die Antworten nicht weiter. Hier einmal die kurze Vorgeschichte bzw. das was es werden soll.

Jails verwalte ich mich ezjail v.3.4.x. Im frischen Jail wird keine Route gefunden No route to host.
z.B.
Bash:
$ 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:12:amd64/quarterly, please wait...
pkg: Error fetching http://pkg.FreeBSD.org/FreeBSD:12:amd64/quarterly/Latest/pkg.txz: No route to host
A pre-built version of pkg could not be found for your system.
Consider changing PACKAGESITE or installing it from ports: 'ports-mgmt/pkg'.

Der Host hatte vorher ein IP via DHCP. Manuel zugewiesene funktioniert hier auch. Nur eben im Jail nicht. Hier die, denke ich, nötigen configs.

Host:
...
ifconfig_re0_ipv6="inet6 accept_rtadv"
#ifconfig_re0="DHCP"
ifconfig_re0="192.168.178.10 netmask 255.255.255.0"
defaultrouter="192.168.178.1"
ifconfig_re0_alias0="inet 192.168.178.11 netmask 255.255.255.0 broadcast 192.168.178.255"
...

re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
ether HIDE
inet 192.168.178.10 netmask 0xffffff00 broadcast 192.168.178.255
inet 192.168.178.11 netmask 0xffffff00 broadcast 192.168.178.255
inet6 fe80::HIDE%re0 prefixlen 64 scopeid 0x1
inet6 2001:HIDE prefixlen 64 autoconf
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet 127.0.0.1 netmask 0xff000000
groups: lo
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

# Generated by resolvconf
nameserver fd00::HIDE

...
export jail_JAILNAME_ip="re0|192.168.178.11/24"
...

Routing tables

Internet:
Destination Gateway Flags Netif Expire
127.0.0.1 link#2 UH lo0
192.168.0.0/16 link#1 U re0
192.168.178.10 link#1 UHS lo0
192.168.178.11 link#1 UHS lo0

Internet6:
...

Jail:
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
ether HIDE
inet 192.168.178.11 netmask 0xffffff00 broadcast 192.168.178.255
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
groups: lo

search duckduckgo.com
nameserver 192.168.178.1
nameserver 9.9.9.9
nameserver fd00::HIDE

Routing tables

Internet:
Destination Gateway Flags Netif Expire
192.168.178.11 link#1 UHS lo0

Danke im Voraus für Hinweise und Hilfe.

runBSD :) Grüße
 
Die Netzmaske im Jail ist falsch, der IP-Alias muss die Netzmaske /32 (255.255.255.255) haben.
Desweiteren darfst/solltest du keinen IPv6-Nameserver in der /etc/resolv.conf angeben, wenn das Jail kein IPv6-Zugang hat.

Rob
 
  • Like
Reaktionen: snn
Schnelle Antworten :)

@[B]KobRheTilla[/B] Habe die netmask im Jail auf /32 geändert. Des weiteren die Jail /etc/resolv.conf angepasst - search domain und ipv6 nameserver entfernt. Trotz dessen ... No route to host.

root@JAILNAME:~ # ifconfig
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
ether HIDE
inet 192.168.178.11 netmask 0xffffffff broadcast 192.168.178.11
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
groups: lo
root@JAILNAME:~ # 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:12:amd64/quarterly, please wait...
pkg: Error fetching http://pkg.FreeBSD.org/FreeBSD:12:amd64/quarterly/Latest/pkg.txz: No route to host
...

Mir ist gerade aufgefallen das der broadcast im Jail falsch aussieht. Siehe Spoiler. Den broadcast in der /usr/local/etc/ezjail/JAILNAME mit anzugehen half nicht. Liegt es daran? Wenn ja, wie ändere ich diese von außen?

Gerade noch gefunden: https://www.kirkg.us/posts/how-to-configure-a-freebsd-jail-on-a-digital-ocean-droplet/
Habe bis dato kein pf im Einsatz :rolleyes:.

@mr44er Danke schön für den Hinweis. ezjail ist abgehangen & high level (https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/jails.html) Welche 'basic' jail Dokumentation empfiehlst du?

----

Update:
Okay, es scheint meine config am Host falsch zu sein. Hatte ein ping -c 2 google.com gemacht ebenfalls no route to host. Muss es also hier dran liegen. Ein re0 via DHCP funktioniert tadellos. Wie richtige ich jetzt jedoch am elegantesten die Jails network config ein?
 
Zuletzt bearbeitet:
Die Thread - Fragestellung scheint sich hier gerade etwas zu verlagern :ugly: Hoffe es ist okay es noch hier drin zu lassen.

Die /etc/rc.conf ist aus meiner Sicht straightforward.
Bash:
#ifconfig_re0="DHCP"
... VS ...
#defaultrouter="192.168.178.1"
#ifconfig_re0="192.168.178.10 netmask 255.255.255.0 "

ifconfig_re0_alias0="inet 192.168.178.11 netmask 255.255.255.0"

# Generated by resolvconf
search fritz.box # VIA DHCP / MANUELL HINZUGEFÜGT
nameserver 192.168.178.1 # VIA DHCP / MANUELL HINZUGEFÜGT
nameserver fd00::HIDE

Zum 'neustarten' habe ich /etc/rc.d/netif restart verwendet.
Hätte/Muss ich auch /etc/rc.d/routing restart machen?

Internet:
Destination Gateway Flags Netif Expire
default fritz.box UGS re0
localhost link#2 UH lo0
192.168.178.0/24 link#1 U re0
192.168.178.11 link#1 UHS lo0
<HOSTNAME> link#1 UHS lo0
....

Internet:
Destination Gateway Flags Netif Expire
localhost link#2 UH lo0
192.168.178.0/24 link#1 U re0
192.168.178.10 link#1 UHS lo0
192.168.178.11 link#1 UHS lo0
....
 
Moin!
Primär mal jenes:
https://www.freebsd.org/cgi/man.cgi?query=jail&sektion=&n=1
+
https://www.freebsd.org/cgi/man.cgi...opos=0&manpath=FreeBSD+12.0-RELEASE+and+Ports
+
https://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/jails-build.html

IP-Einstellungen brauchst du innerhalb der jail in der rc.conf nur, wenn es eine vnet-jail sein soll, sofern die Erinnerungslücke gerade nicht zuschlägt.

Grob Gehacktes:
Code:
zfs create -o mountpoint=/jails zroot/jails
zfs create zroot/jails/12rel-fbj

###binary basejail erstellen###
cd /tmp
fetch --no-verify-peer https://download.freebsd.org/ftp/releases/amd64/12.0-RELEASE/base.txz

tar -zxvf base.txz -C /jails/12rel-fbj

/jails/12rel-fbj/bin/freebsd-version #checkt version und patchlevel der basejail. sinnvoll -> name für snapshot
freebsd-update -b /jails/12rel-fbj fetch install # -b sagt an, in welchem verzeichnis upgedatet werden soll, jail muss für update gestoppt werden
freebsd-update -b /jails/12rel-fbj IDS #checkt ob die installierte version intakt ist

zfs snapshot zroot/jails/12rel-fbj@12p5

zfs list -t snapshot

resolv.conf
##############
->
nameserver 8.8.8.8
##############

cp /usr/share/zoneinfo/Europe/Berlin /jails/zieljail/etc/localtime #localtime auf jail festnageln (jail hat eigene timezone)

oder

ln /usr/share/zoneinfo/Europe/Berlin /jails/zieljail/etc/localtime #localtime mit host verknüpfen
 
Die /etc/rc.conf ist aus meiner Sicht straightforward.
Seh ich nicht so.

Du musst die primäre Adresse von re0 setzen, nicht einen Alias.
Desweiteren fehlt der defaultrouter.
Warum hast du das alles auskommentiert?

Ohne dass dein Host Netzzugang hat, wird das mit den jails auch nicht funktionieren.

Rob
 
Seh ich nicht so.

Du musst die primäre Adresse von re0 setzen, nicht einen Alias.
Desweiteren fehlt der defaultrouter.
Warum hast du das alles auskommentiert?

Ohne dass dein Host Netzzugang hat, wird das mit den jails auch nicht funktionieren.

Rob
Sehe ich auch nicht so! Sonst wirst du in der Jail kein Netz bekommen. Hab eine Jail laufen, kann dir am Abend die Konfig posten.
 
In der /etc/rc.conf am Host habe ich folgendes...
Code:
ifconfig_re0="inet 192.168.1.100 netmask 255.255.255.0"     # re0
defaultrouter="192.168.1.1"
cloned_interfaces="bridge0"
ifconfig_bridge0="addm re0"

In der /etc/jail.conf jenes...
Code:
meineJail {
        host.hostname = "asterisk.lokal";
        vnet = "new";
        vnet.interface = "epair0b";

        ###################################################
        exec.prestart =         "ifconfig epair0 create";
        exec.prestart +=        "ifconfig bridge0 addm epair0a";
        exec.prestart +=        "ifconfig epair0a up";
        ####################################################
        exec.start =        "";
        ####################################################
        exec.poststart =        "jexec $name sh /etc/rc";

        exec.stop =             "sh /etc/rc.shutdown";
        exec.poststop =         "ifconfig bridge0 deletem epair0a";
        exec.poststop +=        "ifconfig epair0a destroy";

        ####################################################
        mount.fstab="/etc/fstab.$name";
}

Der allgemeine Teil fehlt hier.

in der Jail /etc/rc.conf

Code:
ifconfig_epair0b="inet 192.168.1.200 netmask 255.255.255.0"
defaultrouter="192.168.1.1"

Der Host ist also mit 192.168.1.100 erreichbar und die Jail mit 192.168.1.200.
 
Zurück
Oben