LXC Venet Konfiguration bei Proxmox 4

Einen Zwischenbericht muss es noch geben. Stundenlang war ich auf der Suche wie man im Proxmox 4 einen LXC Venet Container einrichten kann so wie es im Proxmox 3 möglich war.

Da Proxmox 4 generell nur Bridged Networking unterstützt und daher alles über die Bridge gehen muss, war das gar nicht so einfach. Ich hab es mit einer virtuellen Alias Schnittstelle probiert und die Bridge einfach gelassen, ging nicht. Die virtuelle Schnittstelle wurde einfach zuspät geladen und somit musste auf dem LXC Container jeder Dienst neu gestartet werden um auf der Public IP zu lauschen. Dann habe ich alles mögliche probiert bis ich letztendlich bei einem NAT gelandet bin. Das war bis DATO die einzige Möglichkeit eine zusätzliche Public IP OHNE weitere MAC Adresse zum Laufen zu bringen. Zusätzliche MAC Adressen werden nämlich von meinem (und auch den meisten anderen) Anbieter blockiert. Dann kam mir allerdings tatsächlich die Lösung ohne NAT um LXC Venet mit weiterer Public IP zum Laufen zu bekommen.

Da es im Netz wirklich absolut keine brauchbare Anleitung oder jeglichen Hinweis auf diese Möglichkeit gibt, schreibe ich diese hier einfach nieder und hoffe euch damit auch helfen zu können und ein paar Stunden suche ersparen zu können 😉 

 

Ich gehe hier davon aus, dass bereits Proxmox 4 installiert ist und ein LXC Container erstellt wurde. Falls nicht solltet Ihr an genau dieser Stelle beginnen und erst das tun. Hier ist die Anleitung

Da alle Schritte aus der Anleitung bereits durchgeführt wurden, passen wir nun einfach noch die Konfiguration an damit unser Container nur eine Public IP benutzt und nicht per Firewall genatet werden muss.

In diesem Beispiel ist meine Public IP 5.5.5.5 (Muss gegen eine zusätzliche Public IP von eurem Hoster ausgetauscht werden), eine private IP 192.168.0.100 und die IP der Bridge weiterhin 192.168.0.1. Dieses wird auch als Gateway dienen um den Traffic hinter der MAC Adresse der Netzwerkkarte des Hosts zu verstecken.

Für die Konfiguration der Netzwerkkarte gibt es 2 Möglichkeiten wobei nur eine zu 100% funktioniert und ich daher nur diese eine Möglichkeit zeigen werde. Die zweite erkläre ich in einem Satz am Ende.

Alle Änderungen werden direkt auf dem Hostserver gemacht, nicht im LXC Venet Container!!

Also zuerst stoppt Ihr den Container der die Public IP bekommen soll, falls er läuft. Dann geht Ihr in den Ordner /etc/pve/lxc , wo alle Konfigurationsdateien der bereits bestehenden Container, liegen.

Öffnet die Datei des Containers, der eine Public IP bekommen soll. Die ID bekommt Ihr aus dem Proxmox Webpanel.

Dort findet Ihr eine Zeile die so aussieht

net0: bridge=vmbr0,firewall=1,gw=192.168.0.1,hwaddr=32:30:61:65:30:36,ip=192.168.0.100/24,name=eth0,type=veth

tauscht hier einfach den rot markierten Teil aus und ersetzt Ihn mit der Public IP

net0: bridge=vmbr0,firewall=1,gw=192.168.0.1,hwaddr=32:30:61:65:30:36,ip=5.5.5.5/24,name=eth0,type=veth

Dann speichert Ihr die Datei.

Als nächstes bearbeiten wir die Datei /etc/network/interfaces

Dort gibt es eine Schnittstelle Namens eth0 mit der Haupt IP eures Servers.

Dieser sollte in etwa so aussehen (rot markiert)

auto lo eth0 vmbr0 
iface lo inet loopback
iface eth0 inet static
 address 5.5.5.4
 netmask 255.255.255.0
 gateway 5.5.5.1
 pointopoint 5.5.5.1
 post-up iptables-restore < /etc/iptables.up.rules

iface vmbr0 inet static
 address 192.168.0.1
 netmask 255.255.255.0
 bridge_ports none
 bridge_stp off
 bridge_fd 0

Fügt nach der post-up Zeile noch diese Route hinzu (rot markiert)

auto lo eth0 vmbr0 
iface lo inet loopback
iface eth0 inet static
 address 5.5.5.4
 netmask 255.255.255.0
 gateway 5.5.5.1
 pointopoint 5.5.5.1
 post-up iptables-restore < /etc/iptables.up.rules
up route add -host 5.5.5.5/32 dev vmbr0
down route delete -host 5.5.5.5/32 dev vmbr0

iface vmbr0 inet static
 address 192.168.0.1
 netmask 255.255.255.0
 bridge_ports none
 bridge_stp off
 bridge_fd 0

Achtet auf die weitere public IP die dort in der Zeile eingetragen werden muss. Solltet Ihr eure Bridge einen anderen Namen gegeben haben, dann muss dieser auch angepasst werden und anstelle des vmbr0 stehen.

Wozu machen wir das? Ganz einfach, damit bleibt die Route bestehen auch wenn der Hostserver rebootet wird.

Als nächstes müssen wir in einem SSH Client, der mit dem Hostserver verbunden ist, noch folgenden Befehl ausführen um die Route sofort aktiv zu schalten.

route add -host 5.5.5.5/32 dev vmbr0

Was sagt der Befehl aus? Er sagt dem System eigentlich nur dass die IP 5.5.5.5.5 nicht auf der eth0 des Hosts sondern auf die Bridge vmbr0 geroutet werden soll, da dort ein Client die Pakete annimmt.

Nun könnt Ihr den LXC Venet Container starten.

Im Container unter /etc/network/ gibt es auch hier eine Datei Namens interfaces.

Der Inhalt dieser Datei sollte in etwa so aussehen

# This configuration file is auto-generated.
#
# WARNING: Do not edit this file, your changes will be lost.
# Please create/edit /etc/network/interfaces.head and
# /etc/network/interfaces.tail instead, their contents will be
# inserted at the beginning and at the end of this file, respectively.
#
# NOTE: it is NOT guaranteed that the contents of /etc/network/interfaces.tail
# will be at the very end of this file.
#
# Auto generated lo interface
auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet static
 address 5.5.5.5
 netmask 255.255.255.0
 post-up ip route add 192.168.0.1 dev eth0
 post-up ip route add default via 192.168.0.1
 pre-down ip route del default via 192.168.0.1
 pre-down ip route del 192.168.0.1 dev eth0
Wichtig!
Auf dem Proxmox Host darf keine Alias Netzwerkkarte angelegt werden! Vergesst also den ganzen kram den viele empfehlen und sagen dass es sein muss. Ihr braucht keine eth0:0 oder sonst was Schnittstelle!

Was sagt uns diese Datei? Richtig! Unsere zweite Public IP wird direkt aus dem Bios heraus übergeben und steht damit allen Diensten bereits seit Start zur Verfügung. Weiterhin wird hier die Default Route und das Gateway festgelegt. Dieses ist nämlich nicht die eth0 vom Host oder das Gateway der Host IP sondern die erstellte Bridge.

Damit ist keinerlei NAT mehr nötig und Ihr habt als Haupt IP direkt die weitere Public IP eures Hosters. Damit ist der LXC Venet Container absolut identisch wie in Proxmox 3 nur mit mehr Aufwand.

Und nun kurz die zweite Variante. Probiert einfach im Proxmox Webinterface die IP mit dem Gateway der Bridge einzutragen. Das hat in meinem Fall leider nicht funktioniert, da Proxmox einige IP’s als ungültig erkennt. Der Grund erschließt sich mir allerdings nicht.

Ausser der LXC Venet Anleitung hier, habe ich noch einige weitere Proxmox Anleitungen

 

Share it!Share on FacebookEmail this to someoneShare on Google+Tweet about this on Twitter

3 Gedanken zu “LXC Venet Konfiguration bei Proxmox 4

  1. Bei mir hat das mit dem Eintragen im Webinterface einwandfrei funktioniert.
    Jedoch gehen alle VMs über die Public IP des Host Systems raus, was nicht immer gut ist 😉
    Hast du dafür vielleicht auch eine Lösung?

    • Maskierst du zufällig den gesamten ausgehenden Verkehr von eth0?
      Um mit der eigenen IP raus zu gehen muss diese natürlich Public sein 🙂

      Wie sehen denn deine IPTables Regeln aus und wie deine /etc/network/interfaces ?

Schreibe einen Kommentar