Aktualisiert: VMware Anpassungen für LogoDIDACT als Gastsystem mit dritter Netzwerkschnittstelle
Auf den Promiscuous Mode innerhalb der vSwitch-Einstellung unter VMware ESXi kann verzichtet werden, sofern man einige Anpassungen am Netzwerk-Design für den LD2.0 Server durchführt.
Im Folgenden werden die Schritte beschrieben, um die Netzwerk-Interfaces für den ldhost sowie den logosrv-Container entsprechend anzupassen.
- 1. [VMware Gasteinstellungen] Netzwerk-Interfaces für die LD2.0 VM im vSphere-Client definieren
- 2. [Ubuntu 16.04 LTS] systemd-Regel im ldhost für aktuelle Installationen
- 3. Konfigurationsänderungen im Puppeteer mittels YAML-Dateien
- 4. Shorewall Interface-Namen anpassen
- 5. Puppet-Run auf dem ldhost ausführen und danach die LD2.0 VM zur Aktivierung der Einstellungen neustarten
1. [VMware Gasteinstellungen] Netzwerk-Interfaces für die LD2.0 VM im vSphere-Client definieren
Zunächst fügt man der LD2.0 VM eine weitere virtuelle Netzwerkschnittstelle im Netzwerkbereich „intern“ hinzu.
Insgesamt sollten es also 3 Schnittstellen für die LogoDIDACT VM sein:
- 1. p_extern: für Internetzugang des ldhost
- 2. intern_ldhost: für lokalen Zugriff auf den ldhost vom Schulnetz aus
- 3. intern: physikalisch durchgereicht an den logosrv LXC-Container (derselbe Netzbereich wie intern_ldhost, d.h. lokales Schulnetz)
2. [Ubuntu 16.04 LTS] systemd-Regel im ldhost für aktuelle Installationen
Ab Ubuntu 16.04 LTS ist es einfacher (auch im Hinblick auf die zukünftige Entwicklung seitens Ubuntu), für die ganze Netzwerkkonfiguration systemd-networkd zu verwenden. Nachfolgend die jeweiligen Konfigurationsdateien, die erstellt werden müssen. Gleichzeitig sollte auch die Datei /etc/udev/rules.d/70-persistent-net.rules gelöscht werden, damit nur noch eine Stelle existiert, an der konfiguriert wird.
/etc/systemd/network/80-intern.link
[Match]
MACAddress=XX:XX:XX:XX:XX:XX
[Link]
Name=intern
/etc/systemd/network/80-intern_ldhost.link
[Match]
MACAddress=YY:YY:YY:YY:YY:YY
[Link]
Name=intern_ldhost
/etc/systemd/network/80-p_extern.link
[Match]
MACAddress=ZZ:ZZ:ZZ:ZZ:ZZ:ZZ
[Link]
Name=p_extern
Nach Erstellung bzw. Bearbeitung der oben beschriebenen Dateien ist noch folgender Befehl wichtig, um die Änderungen in die Initramfs zu übernehmen (wichtig für den Bootvorgang, damit die Interfaces umbenannt werden):
update-initramfs -u -k all
3. Konfigurationsänderungen im Puppeteer mittels YAML-Dateien
Nachfolgend werden zwei Anpassungen beschrieben, um die OVS-Schnittstelle v_intern auf dem ldhost zu deaktivieren sowie die Schnittstelle intern als "physical device" (d.h. das ESXi-Interface direkt) zum logosrv-Container durchzureichen.
/var/lib/ld-puppet/hiera.d/custom.d/ldhost.yaml
profile::network:
interface:
intern:
ovs_type: none
/var/lib/ld-puppet/hiera.d/custom.yaml
global::network:
overwrites:
ldhost:
intern:
name: intern_ldhost
type: phys
logosrv:
intern:
type: phys
Zusätzlich kann in der vorhandenen Konfigurationsdatei nic.conf für den ldhost die nicht länger genutzte Schnittstelle p_intern auskommentiert werden.
/etc/logodidact/hosts/ldhost/nic.conf
[NIC intern]
suffix 1
#[NIC p_intern]
#vlan_mode access
#vlan_untagged ld-intern
#Type manual
#ovs_type OVSPort
Nach Änderung in dieser Datei entweder das Kommando 'map_translate' im Puppeteer ausführen oder den Verzeichnisinhalt von /etc/logodidact/ per 'git commit' abspeichern, um die Änderung zu aktivieren.
4. Shorewall Interface-Namen anpassen
Die Bezeichnung der internen Schnittstelle auf dem ldhost hat sich von v_intern auf intern_ldhost geändert. Diese neue Bezeichnung sollte im Shorewall Firewall-Dienst eingetragen werden.
Hierzu folgende beiden Befehle im ldhost eingeben.
rpl "v_intern" "intern_ldhost" /etc/shorewall/interfaces
shorewall restart
5. Puppet-Run auf dem ldhost ausführen und danach die LD2.0 VM zur Aktivierung der Einstellungen neustarten
Um die getätigten Änderung zu übernehmen, muss ein "prun" auf dem ldhost ausgeführt werden. Dieser ändert die Konfigurationsdateien gemäß den Vorgaben, unter anderem die wichtigen Dateien /etc/network/interfaces.d/ovs sowie /var/lib/lxc/logosrv/network.json. Nach dem Puppet-Run dann noch die komplette LD2.0 VM neustarten.
prun
/sbin/reboot
Während des nächsten Bootvorgangs erhält dann auch der LXC logosrv seine interne Schnittstelle direkt an den Container durchgereicht. Dies kann man übrigens daran erkennen, dass die MAC-Adresse der Schnittstelle "intern" der MAC-Adresse entspricht, die der VMware Host für die virtuelle Maschine generiert hat.