ich versuche mich an einer scheinbar ungewöhnlichen Netzwerkkonfiguration, jedenfalls finde ich dazu bisher keine Hinweise oder ich bin mal wieder komplett auf dem Holzweg und es geht eigentlich viel leichter.
Zur Situation:
Ich habe einen Server im Netz von OVH mit mehreren IP Adressen auf einer einzigen physischen Schnittstelle.
Darauf läuft ein Debian9 mit Proxmox, auf dem ich folgende Netzwerkkonfiguration habe:

eno1 ist die physische Schnittstelle auf die Proxmox standardmäßig die Bridge vmbr0 aufschaltet, wenn ich das richtig verstanden habe
vmbr99 habe ich neu angelegt um ein privates Netz anzulegen, dass ohne weiteres Zutun von außen erstmal nicht erreichbar ist
Das resultiert in folgender Konfiguration in /etc/network/interfaces:
Code: Alles auswählen
root@pve2:~# cat /etc/network/interfaces
# network interface settings; autogenerated
# Please do NOT modify this file directly, unless you know what
# you're doing.
#
# If you want to manage part of the network configuration manually,
# please utilize the 'source' or 'source-directory' directives to do
# so.
# PVE will preserve these directives, but will NOT its network
# configuration from sourced files, so do not attempt to move any of
# the PVE managed interfaces into external files!
auto lo
iface lo inet loopback
iface eno1 inet manual
iface eno2 inet manual
auto vmbr0
iface vmbr0 inet static
address 37.187.92.191
netmask 255.255.255.0
gateway 37.187.92.254
bridge_ports eno1
bridge_stp off
bridge_fd 0
auto vmbr99
iface vmbr99 inet manual
bridge_ports none
bridge_stp off
bridge_fd 0
#Privates Netzwerk (LAN) als Kompatibilitaetsschicht zum Proxmox Server Zuhause
Die Konfiguration der virtuellen Maschine sieht so aus:

eth0 ist die Verbindung in das private Netzwerk an vmbr99
eth1 bis eth4 (ggf. später weitere) sind Verbindungen in das Netz von OVH über vmbr0, die IPs sind also global erreichbar.
Ich habe mir dies in meiner Ahnungslosigkeit so angelegt, vllt gibt es ja auch einen leichteren Weg.
Letztendliches möchte ich erreichen, dass ich über diesen Router eine Art Mapping der IPs verwalten kann, z.B.:
eth1(164.132.217.176) -> 192.168.0.220
eth2(164.132.217.177) -> 192.168.0.230
eth3(164.132.217.178) -> 192.168.0.205
ggf. kommen noch weitere ethX dazu wo kein direktes Mapping auf eine andere IP vorgesehen ist, sondern "normales" NAT, wo för eine externe IP verschiedene Ports auf verschiedene interne IPs verteilt werden
Das erscheint im ersten Moment wahrscheinlich Schwachsinnig, da ich die virtuellen Maschinen ja auch direkt mit den öffentlichen IPs ausstatten und ans Netz hängen könnte, hat aber den Grund, dass ich den Router als Kompatibilitätsschicht zu einem anderen Server brauche, auf dem mir nur eine einzige öffentliche IP zur Verfügung steht. Ich möchte die Maschinen daher unverändert zwischen den Servern austauschen können und nur über den jeweiligen Router (am besten anhand der MAC-Adressen?) das Mapping festlegen.
Das resultiert in folgender Konfiguration in /etc/network/interfaces:
Code: Alles auswählen
root@router1:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.0.0
auto eth1
iface eth1 inet static
address 164.132.217.176
netmask 255.255.255.255
# --- BEGIN PVE ---
post-up ip route add 37.187.92.254 dev eth1
post-up ip route add default via 37.187.92.254 dev eth1
pre-down ip route del default via 37.187.92.254 dev eth1
pre-down ip route del 37.187.92.254 dev eth1
# --- END PVE ---
auto eth2
iface eth2 inet static
address 164.132.217.177
netmask 255.255.255.255
auto eth3
iface eth3 inet static
address 164.132.217.178
netmask 255.255.255.255
auto eth4
iface eth4 inet static
address 164.132.217.179
netmask 255.255.255.255

Das resultiert in folgender Konfiguration in /etc/network/interfaces:
Code: Alles auswählen
root@teamspeak1:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.220
netmask 255.255.255.0
gateway 192.168.0.1
1)Ich schaffe es nicht die Schnittstellen eth1 bis eth4 auf eine IP zu mappen, ich weiß noch gar nicht ob dies überhaupt einfach so über normale iptable-rules möglich ist. Bisher habe ich mit normalem NAT bzw. mit Beispielen zu 1:1NAT experimentiert.
2)Alle Schnittstellen nach außen, also eth1 bis eth4 haben das gleiche Gateway (37.187.92.254), dieses wird von Proxmox bzw. von mir über die Proxmox GUI auf eth1 gesetzt, bei den weiteren Schnittstellen kann ich es zumindest über die GUI nicht setzen, da sonst die Fehlermeldung
Code: Alles auswählen
Nov 21 21:34:18 router1 ifup[447]: ifup: failed to bring up eth3
Nov 21 21:34:18 router1 ifup[447]: RTNETLINK answers: File exists
Ich habe dazu den folgenden Artikel gefunden, in dem eine Lösung per iproute2 beschrieben wird. Der Artikel ist aber scheinbar schon recht alt und ggf. veraltet:
https://www.thomas-krenn.com/de/wiki/Zw ... nem_System
Ich habe daher nach iproute2 gesucht und bin über die Wikipedia (https://de.wikipedia.org/wiki/Iproute2) darüber gestolpert, dass diese wohl jetzt das Standardwerkzeug sind (zumindest Konfiguriert man ja spätestens seit Debian9 über den Befehl "ip" das Routing, wenn ich das richtig verstanden habe)
Gibt es dazu irgendeinen relativ unkomplizierten Weg mit den unter Debian vorhanden (ip?) Tools oder gibt es einen ganz anderen Weg, auf den ich noch nicht gekommen bin?
Aus diesem Grund schaffe ich auch keine normale NAT bzw. IPv4 Forwarding Verbindung nach außen über diese Schnittstellen, also es so einzurichten, dass die Maschinen im privaten Netz einen Internetzugang haben.
Ich kann das über die Schnittstelle eth1 machen, da da diese ja ein Gateway hat. Sobald ich es aber mit eth2 versuche, klappt es nicht mehr:
Code: Alles auswählen
root@router1:~# cat /etc/iptables/rules.v4
*nat
# teamspeak haengt an der IP von eth2
-A POSTROUTING -o eth2 -j MASQUERADE
COMMIT
*filter
-A INPUT -i lo -j ACCEPT
# eingehenden Traffic erlauben der zu ausgehenden Verbindungen,
# u.a. fuer Clients aus dem privaten Netzwerk
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# alles andere eingehend verbieten
-A INPUT -i eth2 -j DROP
COMMIT
Ich hoffe ich habe jetzt nicht gleich alle mit diesem Megapost verschreckt.
LG, Frank