Hetzner - Proxmox - Multiple Public IPs - Gateway?

dima1002

Member
May 23, 2021
45
0
11
52
Hallo,

ich habe bei Hetzner ein Server mit mehreren öffentlichen IPs. Habe es im Routed Modus konfiguriert.
Soweit läuft alles, aber wie sage ich nun der einzelnen VM, geh bitte mit dieser Public IP Adresse Online? also den Gatway?

Code:
auto lo
iface lo inet loopback

auto enp7s0
iface enp7s0 inet static
        address 88.188.61.127/27
        gateway 88.188.61.161
        post-up sysctl -w net.ipv4.ip_forward=1
        post-up iptables -t nat -A PREROUTING -i enp7s0 -p tcp -m multiport ! --dport 45735 -j DNAT --to 10.10.10.1
        post-up iptables -t nat -A PREROUTING -i enp7s0 -p udp -j DNAT --to 10.10.10.1

auto vmbr0
iface vmbr0 inet static
        address 88.188.61.127/27
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        up ip route add 89.178.66.171/27 dev vmbr0


auto vmbr1
iface vmbr1 inet static
        address 10.10.10.0/31
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        post-up iptables -t nat -A POSTROUTING -s '10.10.10.1/31' -o enp7s0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '10.10.10.1/31' -o enp7s0 -j MASQUERADE
#Mikrotik WAN Proxmox LAN

auto vmbr2
iface vmbr2 inet static
        bridge-ports none
        bridge-stp off
        bridge-fd 0
#DMZ

auto vmbr3
iface vmbr3 inet static
        bridge-ports none
        bridge-stp off
        bridge-fd 0
#VM-Intern


source /etc/network/interfaces.d/*
 
Last edited:
Soweit läuft alles, aber wie sage ich nun der einzelnen VM, geh bitte mit dieser Public IP Adresse Online? also den Gatway?
Ich bin mir nicht sicher ob ich die Frage 100%ig verstehe: Wie man der VM mitteilt welchen Gateway sie verwenden soll? Auf welcher Bridge? Soll die lokale oder die public IP verwendet werden dafür?
 
Ich möchte das eine bestimmte VM mit dieser IP 89.178.66.171 online geht?
Extern ist Sie davon erreichbar, aber wenn ich ein curl ident.me mache kommt die 88.188.61.127 IP.
 
Extern ist Sie davon erreichbar, aber wenn ich ein curl ident.me mache kommt die 88.188.61.127 IP.

Wenn ident.me auf die falsche IP resolved, dann liegt das an den DNS-Einträgen oder Einträgen im hosts-file, nicht an der Netzwerkkonfiguration. Da müsste man dann die entsprechende IP eintragen.
 
ich möchte nicht ident.me aufllösen, sondern meine externe IP abfragen wie hier
https://www.adamsdesk.com/posts/get-public-ip-address-identme/

als nameserver steht bei mir 8.8.8.8 drin.
in der hosts datei steht eigentlich nur der server name usw.

ich habe nur eine physische NIC auf dem Proxmox, ich muss doch irgendwo sagen, du VM nimm diesen Gateway und du nimm diesen weg oder versteh ich das falsch?
 
Hi,

wie sieht den die Netzwerk Config der VM aus?
Bei Hetzner bekommst du zur weiteren IP auch eine MAC Adresse dazu. Diese müsstest du in den VM Settings bei der Netzwerkkarte hinterlegen und in der VM dann die richtige öffentliche IP, Netmask und Gateway hinterlegen.

Greetz
 
Wie sehen denn die routen und die IP Konfiguration der VM aus?
 
So sieht es aus:

wobei mir die IP nix sagt: static.129.45.4.46.clients.your-server.de

10.50.50.1 = Opnsense
10.50.52.1 = Mikrotik Router
10.10.10.0 = Proxmox

Code:
root@testserver:~$ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=55 time=5.48 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=55 time=5.67 ms
^C
--- 1.1.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 5.484/5.578/5.673/0.094 ms
root@testserver:~$ ping web.de
PING web.de (82.165.229.138) 56(84) bytes of data.
64 bytes from bs.web.de (82.165.229.138): icmp_seq=1 ttl=246 time=7.42 ms
64 bytes from bs.web.de (82.165.229.138): icmp_seq=2 ttl=246 time=7.47 ms
^C
--- web.de ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 7.419/7.446/7.474/0.027 ms
root@testserver:~$ tracepath 1.1.1.1
 1?: [LOCALHOST]                      pmtu 1500
 1:  10.50.50.1                                            0.106ms
 1:  10.50.50.1                                            0.102ms
 2:  10.50.52.1                                            0.226ms
 3:  10.10.10.0                                            0.233ms
 4:  static.129.45.4.46.clients.your-server.de             0.550ms
 5:  core23.fsn1.hetzner.com                               0.509ms
 6:  core0.fra.hetzner.com                                 5.031ms
 7:  core9.fra.hetzner.com                                 5.391ms
 8:  162.158.84.254                                        9.972ms
 9:  172.71.248.5                                          6.081ms asymm 10
10:  no reply
11:  no reply
12:  no reply
13:  no reply
14:  no reply
15:  no reply
16:  no reply
17:  no reply
18:  no reply
^C
root@testserver:~$ tracepath web.de
 1?: [LOCALHOST]                      pmtu 1500
 1:  10.50.50.1                                            0.130ms
 1:  10.50.50.1                                            0.125ms
 2:  10.50.52.1                                            0.230ms
 3:  10.10.10.0                                            0.276ms
 4:  static.129.45.4.46.clients.your-server.de             0.573ms
 5:  core23.fsn1.hetzner.com                               0.576ms
 6:  core0.fra.hetzner.com                                 5.289ms
 7:  decix.bb-b.fr7.fra.de.net.ionos.com                   6.214ms
 8:  lo-0-0.rc-a.bap.rhr.de.net.ionos.com                 10.844ms
 9:  lo-0-0.rc-a.bap.rhr.de.net.ionos.com                 11.083ms asymm  8
10:  lo-0-0.gw-diste2-a.bap.rhr.de.net.ionos.com          11.312ms asymm  9
11:  no reply
12:  no reply
^C
 
Hallo

Der enp7s0 würde ich nicht die öffentliche IP vergeben. Ich würde zu jeder öffentliche Adresse einen Bridge machen welcher übers Interface enp7s0 sich die Adresse vom Hetzner holt. Die Bridges kannst du danach deiner Firewall zuweisen und dann die als Internet Gateways in der FW konfigurieren. Wenn du möchtest das deine VM über einer bestimmten IP direkt ins Internet geht, dann kannst deiner VM in den Netzwerkeinstellungen die öffentliche Adresse vergeben und die enp7s0 als Interface angeben (aber eben, du hast deiner Interface eine IP vergeben, deswegen finde ich, dass man ausschliesslich mit Bridges arbeiten sollte).

Also, es sind mehrere Informationen deinerseits nötig. Möchtest du, dass deine VM direkt zur öffentlicher Adresse verbunden ist oder hast du noch eine virtuelle Firewall dazwischen oder ....??

Beste Grüsse
 
Die MIkrotik Firewall und die Opnsense Firewall sind beide Virtuell und haben bisher keine Public IP.
MIkrotik 10.10.10.1 bzw. 10.50.52.1
Opnsense: 10.50.52.2 und 10.50.50.1

Ich hab also erst die Mikrotik Firewall und dann dahinter die Opnsense und dann die VMs.
Funktioniert eigentlich auch ganz gut, nur das ich das outbonding oder die externe IP der VM nicht zurodenen kann.
Dachte erst das liegt am falschen Gateway. Aber Laut Hetzner nutzen beide IPs den selben Gateway

Wie würde denn das hier aussehen, wenn enp7s0 keine Public IP hätte:
auto enp7s0
iface enp7s0 inet static
address 88.188.61.127/27
gateway 88.188.61.161
post-up sysctl -w net.ipv4.ip_forward=1
post-up iptables -t nat -A PREROUTING -i enp7s0 -p tcp -m multiport ! --dport 45735 -j DNAT --to 10.10.10.1
post-up iptables -t nat -A PREROUTING -i enp7s0 -p udp -j DNAT --to 10.10.10.1

grüße
 
So hättest du deine öffentliche IP auf dem Bridge und zu jeder weiteren IP kannst neuen Bridge über denselben Interface erstellen.
Danach kannst du die Bridges entsprechend den VMs zuweisen und verwalten...

Code:
auto lo
iface lo inet loopback

iface enp7s0 inet manual

auto vmbr0
#internet access (IPS given IP and subnet)
iface vmbr0 inet static
        address 88.188.61.127/27
        gateway 88.188.61.161
        bridge-ports enp7s0
        bridge-stp off
        bridge-fd 0

        post-up   echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m multiport ! --dport 45735 -j DNAT --to 10.10.10.2
        post-up iptables -t nat -A PREROUTING -i vmbr0 -p udp -j DNAT --to 10.10.10.2

auto vmbr1
#Gateway für den FW
iface vmbr1 inet static
        address  10.10.10.1/30
        bridge-ports none
        bridge-stp off
        bridge-fd 0

        post-up   iptables -t nat -A POSTROUTING -s '10.10.10.0/30' -o vmbr0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/30' -o vmbr0 -j MASQUERADE

auto vmbr2
#internet access (nächste öffentliche IP)
iface vmbr2 inet static
        address 88.188.61.126/27
        gateway 88.188.61.161
        bridge-ports enp7s0
        bridge-stp off
        bridge-fd 0

        post-up   echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up iptables -t nat -A PREROUTING -i vmbr2 -p tcp -j DNAT --to 10.10.20.2
        post-up iptables -t nat -A PREROUTING -i vmbr2 -p udp -j DNAT --to 10.10.20.2

auto vmbr3
#Gateway für den FW, zwite öffentliche IP
iface vmbr1 inet static
        address  10.10.20.1/30
        bridge-ports none
        bridge-stp off
        bridge-fd 0

        post-up   iptables -t nat -A POSTROUTING -s '10.10.20.0/30' -o vmbr2 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '10.10.20.0/30' -o vmbr2 -j MASQUERADE

Danach kannst du die vmbr1 und vmbr3 deiner FW zuweisen.
FW IP-Adresse auf vmbr0 --> 10.10.10.2/30
FW IP-Adresse auf vmbr3 --> 10.10.20.2/30

Alle weitere Einstellungen finden dann in der FW statt.
Wenn du willst, dass eine VM über die 88.188.61.127/27 ins Internet geht, dann musst du so einstellen das die lokale IP der Maschine über Gateway 1 (vmbr0 mit der lokalen IP 10.10.10.2) ins Internet darf oder soll...und so weiter.

Beste Grüsse
 
Last edited:
Mit der Anleitung bekomme ich eine Abuse Message von Hetzner, warum?

wir haben festgestellt, dass Ihr Server andere MAC-Adressen verwendet als die laut Robot erlaubten.

Wir bitten Sie alle nötigen Maßnahmen zu treffen, um dies künftig zu vermeiden und um die Lösung des Problems.
Außerdem bitten wir Sie um die Abgabe einer kurzen Stellungnahme an uns. Diese Stellungnahme soll Angaben enthalten, wie es zu dem Vorfall kommen konnte, bzw. was Sie dagegen unternehmen werden.
 
Mit der Anleitung bekomme ich eine Abuse Message von Hetzner, warum?

wir haben festgestellt, dass Ihr Server andere MAC-Adressen verwendet als die laut Robot erlaubten.

Wir bitten Sie alle nötigen Maßnahmen zu treffen, um dies künftig zu vermeiden und um die Lösung des Problems.
Außerdem bitten wir Sie um die Abgabe einer kurzen Stellungnahme an uns. Diese Stellungnahme soll Angaben enthalten, wie es zu dem Vorfall kommen konnte, bzw. was Sie dagegen unternehmen werden.
Wenn Hetzner nur eine MAC erlaubt, musst du deiner VM genau diese geben. Auf dem Interface darf der Host aber keine IP haben.
 
ok danke habe ich gemacht.
ich erreiche aber per SSH den Server nicht über das:

post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m multiport ! --dport 45735 -j DNAT --to 10.10.10.2

der SSH Dienst läuft aber sicher auf dem Port.

Kann es sein das Prerouting auf einer Bridge nicht funktioniert? oder benötige ich dann noch Iptables?
 
Last edited:
Prerouting sollte schon passen, kommen denn die Pakete auf deinem Host an (mit tcpdump checken)?

Was mich bei der obigen Konfiguration noch stutzig macht: Hier wird sowohl auf vmbr0 / vmbr2 der port 'enp7s0' gebridged, allerdings kann ein IF immer nur auf einer bridge enslaved sein. Kann gut sein, dass dann vmbr0 einfach keinen slave port hat und deshalb die Pakete dort nicht ankommen. Ebenso sind 2 IPs aus dem selben Subnet auf 2 unterschiedlichen Interfaces konfiguriert, das funktioniert auch nicht so ohne weiteres.

Was spricht denn dagegen die IP direkt in den VMs zu konfigurieren? Sollen die IPs von mehreren VMs geteilt werden? Soweit ich das verstanden habe gibt es eine VM und die soll einfach die public IP verwenden. Wenn man da jetzt nicht die IP auf mehrere VMs aufteilen möchte bzw umgekehrt mehrere VMs die public IP verwenden sollen gibt es nicht unbedingt einen Grund hier NAT zu verwenden.

Was sagt ip a bzw ip r? Wie ist der aktuelle status der /etc/network/interfaces ?
 
Last edited:

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!