Einleitung

Bastille und BHYVE haben beide "leicht" unterschiedliche Anforderungen an die Netzwerkeinstellungen. Hier wird beschrieben, was eingestellt werden muss, damit beide Lösungen gut parallel laufen können. Aber auch wenn jeweils nur Jails oder VMs eingesetzt werden, sind das hier die richtigen Grundlagen.

Ziele

Jails oder VMs können wahlweise per DHCP eine eigene IP-Adresse aus dem gleichen LAN-Netzwerk wie das Hostsystem beziehen oder mit einer IP-Adresse aus einem privaten Adressbereich auf dem Host betrieben werden. Der Zugriff auf den privaten Adressbereich wird dann per pf bzw. NAT erlaubt.

NEU: Für ganz ungeduldige habe ich einen Konsole only Abschnitt. Da gibts nur Befehle, keine Erklärungen.

Letzte Aktualisierung:

  • 01.12.2024: Initiale Version

Grundbedingungen

Eine weitere Möglichkeit wäre natürlich die Nutzung einer dedizierten Schnittstelle nur für Jails und VMs, worauf hier aber nicht weiter eingegangen wird.

Netzwerk

Zu diesem Zweck werden zwei neue Schnittstellen erzeugt:

  • localnet0 = Privates Netzwerk nur auf dem Host. Der Host selber hat die IP Adresse 10.0.0.1 und die Jails, bzw. VMs erhalten dann 10.0.0.10-254
  • publicnet0 = Brücke zum lokalen Netzwerk zusammen mit der Schnittstelle igb0, darüber erhalten die Jails, bzw. VMs eine IP Adresse per DHCP aus dem LAN Netzwerk des Hosts

Dreh und Angelpunkt unter FreeBSD für diese Konfiguration ist die /etc/rc.conf, in der hier die nötigen Einstellungen vorgenommen werden:

sysrc cloned_interfaces="bridge0 lo1"       # Erzeugt neue Schnittstellen mit den Namen bridge0 und lo1
sysrc ifconfig_bridge0_name="publicnet0"    # bridge0 wird in publicnet0 umbenannt
sysrc ifconfig_lo1_name="localnet0"         # lo1 wird in localnet0 umbenannt
sysrc ifconfig_publicnet0="addm igb0 up"    # igb0 wird der Netzwerkbrücke hinzugefügt
sysrc ifconfig_localnet0="inet 10.0.0.1/24" # Gateway Adresse für localnet0
sysrc gateway_enable="YES"                  # Die IP Routing Funktion von FreeBSD wird aktiviert

Mit service netif restart werden die Anpassungen aktiviert und sind per ifconfig dann auch sichtbar:

publicnet0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
    options=0
    ether yy:yy:yy:y:yy:yy
    id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
    maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
    root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
    member: igb0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 1 priority 128 path cost 55
    groups: bridge
    nd6 options=9<PERFORMNUD,IFDISABLED>
localnet0: flags=1008049<UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 16384
    options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
    inet 10.0.0.1 netmask 0xffffff00
    inet6 fe80::1%localnet0 prefixlen 64 scopeid 0x5
    groups: lo
    nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

Damit sind die Vorbereitungen abgeschlossen.

Konsole

Voilá