====== 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