Veeam VSA/VIA – Netzwerk Konfiguration mit nmcli

Seit einiger Zeit stehen bei Veeam sowohl die Veeam Software Appliance als auch die Veeam Infrastructure Appliance zur Verfügung und können z. B. als Proxy oder Repository genutzt werden. Sofern man diese als VM betreibt, gibt es hier wenig Herausforderungen, die Netzwerkkonfiguration erfolgt üblicherweise während des Setups direkt im Host-Management-Setup.

Interessant wird es dann, wenn die Infrastructure Appliance z. B. auf Hardware installiert wird und hier komplexere Netzwerk-Settings nötig sind. In der Praxis z. B. Folgendes:

  • VLAN Tagging auf physikalischem Port
  • Bonding (mit LACP oder ohne) ggf. sogar noch mit zusätzlichem VLAN Tagging
  • Zwei separate Netzwerk Ports in zwei Netzen mit Tags
  • etc.

Die Appliances bieten hierfür selbst eine „Advanced“-Konfigurationsmethode an, im Endeffekt ist das nmtui, also eine Art textbasierte Netzwerkkonfiguration. Dagegen spricht auch überhaupt nichts, in der Praxis hat es sich für mich aber bewährt, dass ich meine Konfiguration sehr penibel und textbasiert vorbereite und umsetze.

Das Problem dabei ist, dass man im anfänglichen Stadium noch keinen Netzwerkzugriff auf die Shell hat, somit bleibt nur die KVM-Konsole des Servers. Wie das Ganze noch etwas bequemer per SSH klappt, verrate ich am Ende des Artikels.

Per KVM-Konsole muss man sich zunächst im Veeam Host Management einloggen. Je nachdem, ob MFA bzw. der Security Officer aktiv sind, sind hier noch weitere Bestätigungen nötig. Anschließend öffnet sich eine Root-Shell.

Bevor wir mit der eigentlichen Konfiguration beginnen, sollten wir uns erst einmal die bestehenden Verbindungen anschauen. In meinem Beispiel sind es die beiden Verbindungen „Wired connection 1“ und „Wired connection 2“.


1. aktuelle Verbindungen und Devices anzeigen lassen

[root@vprx-f9fc7618 /]# nmcli connection show
NAME                UUID                                  TYPE      DEVICE
ens33               155df223-b78c-4288-8241-9b3d87f7e553  ethernet  ens33
Wired connection 1  cda1a65f-1f18-3051-b701-0e534c5ec816  ethernet  ens35
Wired connection 2  40a08e60-eac2-3b88-809a-cd036b374c03  ethernet  ens36
lo                  3b349c9a-5813-4b73-9ecf-0f3aec37f15b  loopback  lo

[root@vprx-f9fc7618 /]# nmcli device status
DEVICE  TYPE      STATE                   CONNECTION
ens33   ethernet  connected               ens33
bond0   bond      connected               bond0
lo      loopback  connected (externally)  lo
ens35   ethernet  disconnected            --
ens36   ethernet  disconnected            --

2. Anschließend löschen wir die beiden Connection-Profile „Wired connection 1“ und „Wired connection 2“ – das ist Best Practice, wenn man auf diesen Adaptern später einen Bond aufbauen möchte.

[root@vprx-f9fc7618 /]# nmcli connection delete "Wired connection 1"
Connection 'Wired connection 1' (cda1a65f-1f18-3051-b701-0e534c5ec816) successfully deleted.
[root@vprx-f9fc7618 /]# nmcli connection delete "Wired connection 2"
Connection 'Wired connection 2' (40a08e60-eac2-3b88-809a-cd036b374c03) successfully deleted.

3. Wir erstellen einen Bond, in meinem Fall einen LACP-Channel. Die Optionen sind selbstverständlich nicht in Stein gemeißelt und können bei Bedarf angepasst werden.

[root@vprx-f9fc7618 /]# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=802.3ad,miimon=100,lacp_rate=slow,xmit_hash_policy=layer3+4" ipv4.method disabled ipv6.method disabled connection.autoconnect-ports true
Connection 'bond0' (bd293b3a-4697-4b84-9a59-901338adb367) successfully added.

#### Für den Fall, dass kein LACP genutzt wird könnte der Befehl so aussehen.
nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=balance-tlb,miimon=100" ipv4.method disabled ipv6.method disabled connection.autoconnect-ports true

4. Anschließend ordnen wir dem bond0 noch die beiden physischen Netzwerkadapter zu.

[root@vprx-f9fc7618 /]# nmcli connection add type ethernet slave-type bond con-name bond0-ens35 ifname ens35 master bond0
Connection 'bond0-ens35' (cc6a8919-c563-458f-a805-a6fa745bb62b) successfully added.

[root@vprx-f9fc7618 /]# nmcli connection add type ethernet slave-type bond con-name bond0-ens36 ifname ens36 master bond0
Connection 'bond0-ens36' (2f1244be-5ec0-4fde-8739-0cddde25b33a) successfully added.

5. In meinem Fall wollte ich auf Basis des Bonds nun noch zwei logische Adapter in zwei unterschiedlichen VLANs anlegen. Möchte man das nicht, weil man z. B. einen Access-Port hat und die IP direkt auf bond0 liegen soll, muss die IP-Konfiguration bereits in Schritt 3 erfolgen.

In meinem Beispiel habe ich zwei VLANs. VLAN 10 ist mein „Server-/Backup-Netz“, hierüber finden die normale Kommunikation, DNS, die Anbindung an Veeam etc. statt, deshalb bekommt diese Verbindung auch das Default-Gateway.

Die zweite Verbindung, VLAN 20, ist bei mir für den Storage-Zugriff vorgesehen, z. B. für iSCSI oder NFS beim Einsatz als Proxy oder für externen Storage per iSCSI beim Einsatz als Hardened Repository.

Die zweite Verbindung, VLAN 20 ist bei mir für Storage Access z.B. für iSCSI oder NFS beim Einsatz als Proxy oder für external Storage mit iSCSI als Hardened Repository.

[root@vprx-f9fc7618 /]# nmcli connection add type vlan con-name bond0.10 dev bond0 id 10 ipv4.addresses "10.0.10.100/24" ipv4.gateway "10.0.10.1" ipv4.dns "1.1.1.1,2.2.2.2" ipv4.method manual ipv4.dns-search "deine.domain" ipv6.method disabled
Connection 'bond0.10' (76e6a5ea-f99c-4111-ad12-03d4020a8879) successfully added.

[root@vprx-f9fc7618 /]# nmcli connection add type vlan con-name bond0.20 dev bond0 id 20 ipv4.addresses "10.0.20.100/24" ipv4.never-default yes ipv4.method manual ipv6.method disabled
Connection 'bond0.20' (18543460-04f9-4e69-a775-0349d0092e37) successfully added.

6. Nun nehmen wir alle Verbindungen online – auch wenn Autoconnect hier ggf. bereits funktioniert hat, doppelt hält besser.

[root@vprx-f9fc7618 /]# nmcli connection up bond0
Connection successfully activated (controller waiting for ports) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/38)
[root@vprx-f9fc7618 /]# nmcli connection up bond0-ens35
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/41)
[root@vprx-f9fc7618 /]# nmcli connection up bond0-ens36
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/42)
[root@vprx-f9fc7618 /]# nmcli connection up bond0.10
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/43)
[root@vprx-f9fc7618 /]# nmcli connection up bond0.20
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/44)

7. Fertig – jetzt nur noch kurz überprüfen, ob alles geklappt hat. Hier ein paar nützliche Befehle:

ip -br addr show                    # IPs auf bond0.10 / bond0.20 sichtbar?
ping -c 3 10.0.10.1                 # Gateway erreichbar
ping -c 3 <NFS/iSCSI-Server-IP>     # NFS/iSCSI-Netz erreichbar
cat /proc/net/bonding/bond0         # LACP:"Partner Mac Address" darf nicht 00:00:00:00:00:00 sein

So, und nun das versprochene Schmankerl zum Schluss. Standardmäßig kommt man per SSH gar nicht auf die Veeam Appliances. Es besteht zwar die Möglichkeit, den SSH-Server im Host Management zu aktivieren, jedoch hat man dort keine Root-Rechte. Um die Netzwerkkonfiguration anzupassen, werden aber Root-Rechte benötigt.

Mit einem kleinen Trick kommt man trotzdem per SSH an Root-Rechte:

  • Im Host Management der Appliance einloggen
  • Remote Access → SSH Server aktivieren
  • Falls der Security Officer aktiviert ist, muss diese Aktion bestätigt werden
  • Anschließend per SSH auf der Linux-Appliance einloggen und die normalen Credentials des veeamadmin verwenden
  • Dort folgenden Befehl ausführen: /opt/veeam/hostmanager/veeamhostmanagertui

Das führt dazu, dass sich eine textbasierte UI des Veeam Host Managements öffnet.

  • In dieser TUI erneut mit dem veeamadmin einloggen
  • Unter Remote Access Configuration → Shell Access starten
  • Falls der Security Officer aktiviert ist, muss diese Aktion bestätigt werden
  • Anschließend kann man die Shell öffnen und hat Root-Rechte

Diese Verbindung kann man jetzt dazu nutzen, das Netzwerk bequem per Copy & Paste zu konfigurieren. Fairerweise benötigt man natürlich irgendeine Netzwerkverbindung, sonst kann SSH nicht funktionieren. Oft findet sich hierfür aber ein einfacher RJ45-Management-Port, der nach der Konfiguration stillgelegt werden kann.

Von Matthias Beller

Senior System Engineer und Produktspezialist für Veeam bei der Advanced UniByte GmbH in Metzingen. Mein Schwerpunkt liegt auf Netapp-Storage-Lösungen sowie Backup- und Recovery-Konzepten. Teilnehmer der #BeatTheGostev Challenge 2021. VMCE, VMCA, Netapp NCSE, NCIE-DP, NCIE-SAN. Seit 2023 Mitglied des Veeam Vanguard Programms.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert