====== BSD Jails ======
Jails bieten die Möglichkeit einer leichtgewichtigen Virtualisierung. Es ist möglich den Netzwerkverkehr von Jails per VLAN zu taggen und über einen Trunk-Port auf einem Switch an die entsprechenden Router zu leiten.
Nach mehreren Versuchen wurde ein erfolgreiches Setup mit FreeNAS 9.3.1 realisiert.
===== iocage=====
:!: **Problem:** Das Setup funktioniert derzeit nur für Unicast. Multicast-Verkehr wird in der Standard-Kernel-Konfiguration nicht an die Jails weitergeleitet. In neueren FreeBSD-Releases ist die Netzwerkvirtualisierung VIMAGE/VNET aktiv. Eventuell noch einmal damit ausprobieren!
* [[https://blog.grem.de/pages/ayvn.html|Arranging Your Virtual Network on FreeBSD]]
==== VLANs ====
Auf dem Jail Host werden die VLANs in ''rc.conf'' konfiguriert. Die MTU des Parent-Inferfaces sollte erhöht werden, um Platz für den VLAN-Tag zu schaffen [[https://forums.pcbsd.org/thread-16528.html|PCBSD-Forum]] :
vlans_em0="10 20 30"
ifconfig_em0="mtu 1530"
ifconfig_em0_10="inet 10.0.10.2 netmask 255.255.255.0"
ifconfig_em0_20="inet 10.0.20.2 netmask 255.255.255.0"
ifconfig_em0_30="inet 10.0.30.2 netmask 255.255.255.0"
Anschließend wird das Netzwerk mit dem folgenden Befehl neu gestartet:
$ /etc/rc.d/netif restart
Eventuell muss noch der VLAN Support im Kernel aktiviert werden (''/boot/loader.conf'') [[https://www.freebsd.org/cgi/man.cgi?query=vlan&apropos=0&sektion=0&manpath=FreeBSD+8.3-RELEASE&arch=default&format=html|Link1]], [[http://blog.hostileadmin.com/2012/08/14/freebsd-vlan-tagging/|Link 2]] (bin mir aber nicht sicher, ob es nicht trotzdem geht):
if_vlan_load="YES"
==== Jails verwalten mit ''iocage'' ====
Die Anleitung folgt lose den hier beschriebenen Schritten [[https://dan.langille.org/2015/03/07/getting-started-with-iocage-for-jails-on-freebsd/|Externer Link]]
Herunterladen des BSD-Images des neuen Jails:
# iocage fetch
Erzeugen des neuen Jails ''vlan10'':
# iocage create tag=vlan10
Hostname des Jails festlegen:
# iocage set hostname=vlan10 vlan10
Festlegen der IPv4-Adresse:
# iocage set ip4_addr="em0.10|10.0.10.2/24" vlan10
Festlegen des Default Gateway(funktioniert leider nur für VIMAGE, ist also nutzlos):
# iocage set defaultrouter="10.0.10.1" vlan10
# iocage set allow_raw_sockets=1 vlan10
==== Jails benutzen ====
Verfügbare Jails anzeigen:
# iocage list
Mit chroot in das Datei-Verzeichnis des Jails wechseln, ohne das Jail zu
starten:
# iocage chroot UUID | TAG
Jails werden nicht automatisch gestartete (muss in rc.d konfiguriert werden).\\
Jail manuell starten:
# iocage start UUID | TAG
Auf ein laufendes Jail zugreifen:
# iocage console UUID | TAG
Jail stoppen:
# iocage stop UUID | TAG
Jail zerstören:
# iocage destroy UUID | TAG
iocage Dokumentation: [[http://iocage.readthedocs.org/en/latest/networking.html|Externer Link]]
==== Firewall konfigurieren ====
Die Firewall wird benötigt um die Pakete des Jail-Hosts in das richtige VLAN zu forwarden, da diese sonst teilweise
im falschen VLAN landen, bzw. direkt über das Loopback-Interface zugestellt werden.
===== FreeNAS 9.3.1 =====
http://gentoovps.net/install-freenas-configuration-setup/
==== Installation ====
:!: Achtung: bei der Installation von FreeNAS ist zu beachten, dass mind. 8GB RAM vorhanden sein sollten. Des weiteren ist zwingend eine zweite Festplatte nötig (Betriebssystem + Speicher). Die Installation auf einem 8GB USB-Flash-Stick hat nicht funktioniert (weder als BS, noch als Speicher). Eine USB-Festplatte als Speicher-Volume hat dann aber funktioniert.
=== Jails & VLANs ===
Die VLANs und Jails wurden über die Weboberfläche erzeugt (standardmäßig als VIMAGE). Die VIMAGEs besitzen einen kompletten eigenen Netzwerkstack, so dass separate Einstellungen (Default-Gateway, etc.) per Jail möglich werden.
Insbesondere wird auch Multicast (senden und empfangen) unterstützt.
Die Jails werden auf dem Storage-Laufwerk des NAS angelegt\\ (gemounted unter: ''/mnt/StorageName/JailName'')
=== Interfaces ===
Die ''epairXa'' Interfaces der Jails werden erst einmal automatisch zur Bridge0 hinzugefügt (passiert auch beim aus/einschalten eines Jails). Derzeit scheint es keine Möglichkeit der Konfiguration der Bridges über das Web-Interface zu geben. Man muss sich für die weitere Konfiguration auf die Kommandozeile begeben (bisher nicht getestet, ob das ein Reboot überlebt).
==== CLI-Konfiguration ====
Nachfolgend sind die Befehle auf der Kommandozeile dargestellt um die gewünschte Netzkonfiguration herzustellen.
Das Setup benutzt 4 VLANS mit den IDs (10,20,30,40) und vier Jails VLAN_X0. Die Interfaces der Jails sollen mit den jeweiligen VLANs zusammengeschaltet werden:
Jail VLAN_10 Interface ''epair0a - vlan10''\\
Jail VLAN_20 Interface ''epair1a - vlan20''\\
Jail VLAN_30 Interface ''epair2a - vlan30''\\
Jail VLAN_40 Interface ''epair3a - vlan40''
- Zuerst müssen die ''epaiXa''-Interfaces von Bridge 0 entfernt werden:
ifconfig bridge0 deletem epair0a deletem epair1a deletem epair2a deletem epair3a
- Als nächstes erhöhe ich mal vorsorglich die MTU auf dem echten Ethernet Interface (wg. der VLAN-TAGs)
ifconfig re0 mtu 1530
(ifconfig re0 up)
- Für jedes VLAN erzeugen wir jetzt eine eigene Bridge und hängen das jeweilige ''epairXa'' und VLAN-Interface dort ein (zum Beispiel für das erste Jail):
ifconfig bridge1 create
ifconfig bridge1 addm epair0a addm vlan10
ifconfig bridge1 up
ifconfig vlan10 up
==== Nützliche Befehle: ====
''jls'' - listet die derzeitigen Jails\\
''jexec 4 /bin/tcsh'' - startet eine Shell in Jail mit ID 4