proxmox auf Hetzner Host

haschi

Registered User
Hallo zusammen,

ich versuche krampfhaft proxmox im KVM/Routed einzurichten. Grundsätzlich funktioniert das Setup denke ich. Ich kann vom Host in alle Welt pingen, per IPv4 und IPv6.

Ich vermute, mein Problem liegt an der Konfiguration meiner Firewall, dich einsetzen möchte, Sophos UTM9.

Folgende IP-Adressen, fiktiv:
Haupt-IP: 5.x.x.137
1. Zusatz-IP: 5.x.x.206

Die Netzwerkkonfiguration vom Host sieht so aus:
Code:
auto eth0
iface eth0 inet static
        address 5.x.x.137
        netmask 255.255.255.255
        pointopoint 5.x.x.129
        gateway 5.x.x.129

iface eth0 inet6 static
       address   2a01:xxx:xxx:xxx::1
       netmask   64
       gateway   fe80::1
       up sysctl -p

auto vmbr0
iface vmbr0 inet static
        address  5.x.x.137
        netmask  255.255.255.255
        bridge_ports none
        bridge_stp off
        bridge_fd 0
        up ip route add 5.x.x.206/32 dev vmbr0

iface vmbr0 inet6 static
        address 2a01:xxx:xxx:xxx::1
        netmask 64

Wie gesagt, so konfiguriert kann ich wunderbar vom Host aus pingen.
Wenn ich jetzt allerdings von der UTM9 außerhalb dieser ein Ziel anpingen möchte kann es nicht gefunden werden, der Host auf 5.x.x.137 ist erreichbar. Die Konfiguration von der WAN-Schnittstelle ist wie folgt hinterlegt:

Typ: ethernet
IP: 5.x.x.206/32
GW: 5.x.x.137

Habe auch schon statische Routen eingerichtet, um hier weiterzukommen, hat aber nicht funktioniert:
1. Schnittstellenroute:
-- 5.x.x.206 → Schnittstelle WAN
-- 5.x.x.137 → Schnittstelle WAN

2. Gatewayroute:
-- 5.x.x.206 → Gateway 5.x.x.137[5.x.x.137]

Was mache ich falsch? Ich steh echt vor einem großen Rätsel und freue mich sehr auf eure Antworten und Hilfen. :-)

Viele Grüße
Marco
 
Last edited by a moderator:
Hallo,

ja, zu genüge.. Irgendwo muss ich einen Fehler haben oder ein Verständnisproblem.

Die NIC von der UTM ist Bridged auf vmbr0. Das sollte doch korrekt sein oder?
 
Last edited by a moderator:
Kommst du grundsätzlich auf die Verwaltungsoberfläche der UTM? Bei der Firewall, Intrusion Prevention und co. gibt es die Funktionen "Livelog". Eventuell blockt ja die UTM selbst hier den Netzwerktraffic. Du musst in jeden Fall NAT Rules definieren um eine Kommunikation für bestimmte Netzwerke zum Internet freizugeben.

Hast du daher in der UTM schon entsprechendes Konfiguriert oder ist das noch eine "Blanko" Installation und du versucht das irgendwie auf der Shell zu konfigurieren?
 
Danke für deine Antwort.

Ich habe, um Zugriff auch auf die Weboberfläche der UTM zu bekommen, eine Windowsmaschine als VM installiert, über die Shell ist es bei der UTM recht mühsam... Ich greife darüber über einen privaten Netzbereich zu. Ich kann sogar, wie ich grad festgestellt habe, von der Windowsmaschine auf die Weboberfläche vom VM-Host zugreifen. Also scheint grundsätzlich irgendwas zu funktionieren. Zwischen Firewall und VM-Host kann ich kommunizieren.

Im Livelog konnte ich nichts erkennen, dass irgendein Netzwerkverkehr geblockt wird. Daher sehe ich das schonmal als gut an.

Die UTM ist im Grunde bereits konfiguriert, das was bis jetzt nötig war. Der Server ist auch schon in Betrieb, allerdings im Bridged-Mode, da es alles innerhalb weniger Stunden stehen und der Server online sein musste.. Ein wenig blöd, dass ich nun im mehr oder weniger Live-Betrieb daran rumwerkeln muss/will/möchte.

Die Firewall bekommt eine öffentliche IP (1. Zusatz-IP) auf der WAN-Seite. Im weiteren muss noch ein Subnet eingerichtet sein. Wie gesagt, aktuell läuft es bereits, allerdigns ist die Netzwerkkonfiguration im Host Bridged. Ich brauche unbedingt IPv6 auf den VM's.

Welche NAT Rules müssen da eingerichtet werden? Es muss doch eigentlich nur eine Route eingerichtet werden?!
 
Ich bin leider gerade nur mobil unterwegs, daher bitte ich die autokorrektur des Handys zu entschuldigen.

Das Problem ist, wenn du Änderungen am Linux direkt vornimmst, dass es sein kann, dass bei einem firmware update diese Einstellungen verloren gehen können. Daher ist es wichtig, dass du die Änderungen dokumentiert und weitestgehend direkt in der UTM oberflächlich konfigurierst. Auch statische Routen kannst du dort bei den Netzwerk Schnittstellen hinterlegen.

Du brauchst in jeden Fall unter Firewall eine nat Regel von Network internal > wan um den Netzen die Kommunikation in das Internet zu ermöglichen. Die UTM legt die Regel beim setup automatisch für das interne Netz an. Das müsste die Regeln internal > all > external sein die schon angelegt ist. Wenn du ein Netz nutzt das bei der Installation nicht angelegt wurde musst du dafür eine weitere Regel definieren.

Was genau geht aktuell noch nicht? Dann kann ich für dich Morgen früh in den config unsere UTMS schauen, was du ggf. Noch ergänzen musst.
 
Wow, was ein Einsatz. Vielen Dank :-)

Wenn ich auf Routed-Modus umstelle, dann kann ich von UTM an VM-Host pingen und andersherum. Von der Firewall kann ich allerdings nicht nach ausserhalb pingen, also alles was ausserhalb meiner Netzwerke ist.

Aktuell ist nur unter Maskierung der Eintrag Internal -> WAN hinterlegt, sonst nichts..

Ich danke dir schonmal im vorraus. :-)
 
So, die Thematik lässt mich natürlich auch nicht ruhen.

Unter Firewall -> ICMP
Hast du dort die Ping Settings schon eingestellt? Dort kann man einige Einstellungen hinsichtlich ICMP und Ping setzen u.a. ob die UTM Pingbar ist und Ping forwarded.

Unter Firewall -> NAT
Masquering regelt den Verkehr Internes Netzwerk -> externes Netzwerk
Dort wird eingestellt über welche externe IP die Internen IPs in das Internet kommunizieren. Default ist wie schon gesagt Internal Network -> external Network durch die Firewall vorgegen.

NAT regelt den Verkehr externes Netzwerk -> internes Netzwerk
Dort kannst du generell alles durchreichen auf eine bestimmte IP oder eben nur bestimmte Ports.


Bei Interfaces Routing -> Interfaces kannst du bei den neuen Netzwerkkarten oder bestehenden als Typ Ethernet oder div. andere Optionen einstellen. Die einzige Funktion die dort für dich vermutlich funktionieren wird ist Ethernet. Die Funktion Ethernet-Bridge könnte auch klappen, dazu musst du aber folgendes wissen. Wenn die Firewall ein Netzwerk Bridged, dann funktioniert das so: Die Firewall schiebt alles an Traffic 1 zu 1 über die Bridged Ports. Ein Port ist LAN, ein Port ist WAN. Die IP Konfiguration spielt dabei für die UTM keine Rolle. Du definierst daher die Externe IP direkt auf dem Port des Servers. Gedacht ist das eigentlich nicht für das Virtualisierungsumfeld. In der Praxis setzen wir dieses Setup so ein, dass du praktisch eine kleine UTM hast, in den LAN Port der UTM der Server angeschlossen wird und im WAN Port der UTM der normale Netzwerklink. Die UTM bridged dann praktisch Physikalisch alles von WAN über die Filterregeln auf LAN, kennt aber die IP des Servers dahinter nicht. So ein Setup wird benötigt, wenn man das Externe IP -> Interne IP konfiguriere umgehen will. Manche Anwendungen laufen auch nicht auf internen IPs was so ein Setup zwingend erfordert.


Vielleicht haben dir diese Informationen schonmal weitergeholfen. Ich müsste mir die Konfiguration einmal ansehen, wenn du das Problem nicht finden solltest. Gerne kannst du mich dazu einmal in Skype Adden - MichaelSchinzel.
 
Hallo Michael,

danke für deine Antwort.

Unter ICMP ist alles aktiviert. Wenn ich das Setup als Bridged laufen habe (aktuell) kann ich auch fröhlich überall pingen.

Unter Masquering ist nur eine Regel hinterlegt, Internal > External. Das sollte auch ausreichen. Unter NAT ist nur eine Regel definiert, welche extern von Port x auf eine VM im LAN gelenkt wird. Hätte jetzt auch keine Idee, was für eine NAT Regel ich definieren müsste!?

Genau, das WAN Interface ist als Ethernet konfiguriert, etwas anderes sollte ich auch nicht in betracht ziehen, schreibst du ja auch :)

Habe nun noch einmal alles durchgespielt, ich fasse noch einmal komplett zusammen.

Diese Konfiguration hinterlege ich für ein Routed-Setup auf dem VM-Host (proxmox).
Dazu nutze ich folgende fikvie IP-Adressen:

Haupt-IP: 5.x.x.137
1. Zusatz-IP: 5.x.x.206

5.x.x.137 -> VMHost
5.x.x.206 - > UTM

Code:
auto eth0
iface eth0 inet static
        address 5.x.x.137
        netmask 255.255.255.255
        pointopoint 5.x.x.129
        gateway 5.x.x.129

iface eth0 inet6 static
       address   2a01:xxx:xxx:xxx::1
       netmask   64
       gateway   fe80::1
       up sysctl -p

auto vmbr0
iface vmbr0 inet static
        address  1.1.1.137
        netmask  255.255.255.255
        bridge_ports none
        bridge_stp off
        bridge_fd 0
        up ip route add 5.x.x.206/32 dev vmbr0

iface vmbr0 inet6 static
        address 2a01:xxx:xxx:xxx::1
        netmask 64

In diesem Setup kann gepingt von
- 5.x.x.206 auf 5.x.x.137
- 5.x.x.137 auf 5.x.x.206
- 5.x.x.137 auf alles
- 5.x.x.206 auf Intern

Folgende statische Routen habe ich probiert:
1. Schnittstellenroute:
-- 5.x.x.206 → Schnittstelle WAN
-- 5.x.x.137 → Schnittstelle WAN

2. Gatewayroute:
-- 5.x.x.206 → Gateway 5.x.x.137

Was habe ich noch probiert:
- Aus der o.g. Konfiguration die statische Route auf 5.x.x.206/32 auskommentiert = Kein Erfolg
- In der Firewall eine Regel any -> any -> any an erster Postion erstellt = Kein Erfolg


Vielen Dank schonmal :)

Nachtrag:
Habe nun auch mal in der UTM das Gateway aus dem Netzwerk von 5.x.x.206 eingetragen. Auch hier konnte ich nicht pingen und es wurden auch keine Einträge im Log (zumindest mir ersichtlich) hinterlegt.
 
Last edited by a moderator:
mmmh, also das ist die Netzwerkkonfiguration von deinem Proxmox Host korrekt?

Zum Verständnis auf meiner Seite.

Das Netz 2.2.2.206 ist die WAN IP der Firewall? Das Netz 1.1.1.0/24 ist das LAN Netz der Firewall korrekt? Und der Proxmox Host soll quasi hinter der Firewall über die LAN IP 1.1.1.137 erreichbar sein.
 
Nein, die 5.x.x.137 ist die öffentlich IP vom proxmox Host, die 5.x.x.206 die öffentliche von der Firewall. Über die Firewall ist dann noch ein weiteres Subnetz (öffentlich) von außen erreichbar.

Um es vollständig zu machen.
Ich besitze 2 Einzel IP-Adressen:
Haupt-IP: 5.x.x.137
1. Zusatz-IP: 5.x.x.206

Zusätzlich noch ein Subnetz:
Subnetz: 136.x.x.16/29

Das Subnetz wird auf die 5.x.x.206 geroutet, liegt hinter der Firewall.
Das LAN ist im privaten Bereich 10.1.0.0/24 und ist ebenfalls hinter der Firewall.

Nachtrag:
Ein Ping zwischen Host und UTM (VM) funktioniert nur, wenn ich diese statische Route hinterlege: 5.x.x.137 → Schnittstelle WAN
Auf dem VM-Host ist auch keine Firewall aktiv.

Die WAN NIC ist in proxmox auf vmbr0 gelegt. Es ist eine Intel E1000. Es ist die MAC-Adresse hinterlegt welche Hetzner zu Verfügung stellt.

Ich weiß nicht mehr wo ich suchen soll... Das muss doch möglich sein.
 
Last edited by a moderator:
Hallo nochmal,

ich bin jetzt einen kleinen Schritt weiter. Damit ich Routed-Setup die UTM (5.x.x.206) erreichen kann, muss ich über den Robot die MAC-Bindung lösen. Ist das erledigt, kann ich die 5.x.x.206 erreichen. Lt. Support wird auch die Zuordnung vom Subnetz automatisch auf die neue MAC (vom Host) aktualisiert.

Jetzt kommt aber noch das Subnetz, welches hinter der UTM liegt. Dieses kann ich nicht erreichen. Auf der UTM ist das Standardgateway die IP vom Host, das Subnetz ist auf einer NIC eingerichtet.

An welcher Stelle könnte jetzt noch der Wurm drin sein? Anbei mal ein Trace auf die das Subnetz und die UTM.

Code:
tracert 136.x.x.19

Routenverfolgung zu 136.x.x.19 [136.x.x.19] über maximal 30 Abschnitte:
.....
 10    10 ms    10 ms    10 ms  core11.hetzner.de [213.239.203.137]
 11    22 ms    13 ms    12 ms  core21.hetzner.de [213.239.245.222]
 12    12 ms    12 ms    12 ms  juniper3.rz16.hetzner.de [213.239.245.106]
 13    23 ms    23 ms    23 ms  hos-tr1.ex3k22.rz16.hetzner.de [213.239.230.10]
 14    20 ms    20 ms    19 ms  5.x.x.137 [5.x.x.137]
 15     *        *        *     Zeitüberschreitung der Anforderung.
 16     *        *        *     Zeitüberschreitung der Anforderung.
 17     *        *        *     Zeitüberschreitung der Anforderung.
 18     *        *        *     Zeitüberschreitung der Anforderung.
 19     *        *        *     Zeitüberschreitung der Anforderung.
u.s.w. ........
 
tracert 5.x.x.206

Routenverfolgung zu 5.x.x.206 [5.x.x.206] über maximal 30 Abschnitte:

.....
 10    10 ms    10 ms    10 ms  core11.hetzner.de [213.239.203.137]
 11    18 ms    18 ms    18 ms  core22.hetzner.de [213.239.245.226]
 12    15 ms    68 ms    13 ms  juniper4.rz16.hetzner.de [213.239.245.146]
 13    14 ms    13 ms    16 ms  hos-tr4.ex3k22.rz16.hetzner.de [213.239.233.106]
 14    20 ms    20 ms    20 ms  5.x.x.137 [5.x.x.137]
 15    13 ms    13 ms    13 ms  5.x.x.206 [5.x.x.206]

Ablaufverfolgung beendet.
 
Last edited by a moderator:
Guten Tag,

ist das Subnetz das Interne IP Subnetz auf das du die Anfragen per NAT durchreichts oder handelt es sich um ein externes IP Subnetz?
 
Na klar doch :-)

Danke!
 

Attachments

  • Screen Shot 2015-06-20 at 17.25.08.png
    Screen Shot 2015-06-20 at 17.25.08.png
    46.2 KB · Views: 202
Das sind jetzt die einzelnen NICs. Für das Subnetz ist eine IP aus diesem Subnetz hinterlegt. Diese ist bei anderen Servern aus dem Subnetz als Gateway hinterlegt.
 
Ah verstehe. Das Problem ist, dass du die IP Subnetze auf unterschiedlichen Netzwerkschnittstellen angelegt hast. Ich gehe mal davon aus, dass du keine Routing Einstellungen vorgenommen hast. Somit weiß die UTM nicht, über welche der beiden LAN Schnittstellen diese bei bestimmten Anfragen ins Internet kommunizieren soll.

Das selbe Problem gibt es auch bei einen normalen Linux mit mehreren Netzwerkkarten. Wenn du z.B. 2 LAN Karten hast und auf jede der LAN Karten eine IP bindest, musst du dem Linux kommunizieren, über welche der beiden LAN Karten bestimmte IP Anfragen kommuniziert werden sollen. Da es schwer ist, das zu erklären ein kurzes Beispiel aus einen unserer Hostsysteme:


# The primary network interface
auto eth2
iface eth2 inet static
address 84.200.xxx.xxx
netmask 255.255.255.0
network 84.200.xxx.0
broadcast 84.200.xxx.255
post-up ip route add default via 84.200.xxx.1 dev eth2 table main
pre-down ip route del default via 84.200.xxx.1 dev eth2 table main

auto eth1
iface eth1 inet static
address 82.200.xxx.xxx
netmask 255.255.255.0
network 82.200.xxx.0
broadcast 82.200.xxx.255
post-up ip route add default via 82.200.xxx.1 dev eth1 table basic
post-up ip rule add from 82.200.xxx.224 table basic
pre-down ip route del default via 82.200.xxx.1 dev eth1 table basic
pre-down ip rule del from 82.200.xxx.224 table basic

Das Linux braucht also quasi eine eigene Routing Tabelle für Schnittstelle 1 und eine Routing Tabelle für Schnittstelle 2, sonst weiß es nicht über welche Schnittstelle und welchen differenzierten Gateway es antworten soll.

Du musst also der UTM beibringen, dass diese bei Anfragen aus dem internen IP Subnetz X die Schnittstelle X nehmen muss und bei Anfragen aus den IP Subnetz Y die Schnittstelle Y bzw. die UTM für die Kommunikation über das andere Subnetz einen anderen Internet Gateway wählen muss.

In der UTM gibt es dafür unter "Interfaces & Routing" den Punkt "Static Routing" wo du statische Routinggruppen erstellen kannst.
Dort auf "New Static Route"

- Routing Type: Gateway route
- Network: Hier solltest du eine neue "Network group" erstellen, wo du alle internen Hosts reinsteckst, die über das andere Subnetz kommunizieren sollen. Ich habe dir dazu einmal einen Screenshot beigefügt wie das final aussieht.
- Gateway: Dort gibst du den Netzwerkgateway ein, der für diese Routing Gruppe verwendet werden soll als Typ "Host".

Zusätzlich musst du unter "Policy Routes" noch eine route für den Gateway definieren.
Dort auf "New Policy Route..."

- Position: egal
- Route Type: Gateway route
- Source Network: dort wieder die Network group definieren, die du bereits bei Standard static definiert hast.
- Service: Any
- Desitnation: Any
- Gateway: Der Selbe Gateway Host den du schon bei bei der vorherigen Route definiert hast.


Theoretisch sollte es danach funktionieren :) Probier es einmal aus.
 

Attachments

  • routing-group.png
    routing-group.png
    107.5 KB · Views: 223
Danke für deine umfangreiche Antwort.

Habe es versucht irgendwie nachzustellen, nur leider ist seit gestern meine Testlizenz ausgelaufen... Warte noch auf die Lizenz. Daher kann ich keine Policy anlegen.

Das Routing habe ich angelegt, so wie du es beschrieben hast. Brachte leider keinen Erfolg :(

Was meinst du mit "Das Problem ist, dass du die IP Subnetze auf unterschiedlichen Netzwerkschnittstellen angelegt hast."? Wie kann ich das anders lösen? Wenn du mir da noch ein paar Wort zu sagen könntest? :-)
 
Back
Top