[lug-ld] Proxmox / Internet IP Settings (Verständnis?)

Wagner, Steffen Tobias Steffen.Tobias.Wagner at sap.com
Di Mär 25 16:49:40 CET 2014


Hallo ihr Lieben,

hier nun eine funktionierende Lösung zum Problem: Proxmox mit 1 NIC,  2 Public IPs (aus unterschiedlichen Subnetzen, wobei nur IP2 für Portforwarding bzw. NAT verwendet werden soll).
Funktioniert einwandfrei mit KVM und OpenVZ Containern (wichtig sei hier nur zu bemerken, dass die VMs nur im Bridged Mode betrieben werden können!)

Ich habe grob die wichtigeren Zeilen kommentiert...

Proxmox Host:

/etc/network/interfaces

# network interface settings
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto vmbr0
iface vmbr0 inet static
        address   217.172.182.X <-- 1. Public IP
        netmask   255.255.255.0
        gateway   217.172.182.1
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0

auto vmbr1
iface vmbr1 inet static
        address  85.25.253.Y <-- 2. Public IP aus anderem Subnetz
        netmask  255.255.255.255
        bridge_ports none
        bridge_stp off
        bridge_fd 0
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE <- erstellen: Traffic aus 192.168.0.0/24 zu vmbr0 routen/maskieren
        post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE <-löschen

        # IP TABLES NAT
        ################
        # VM 101 PLESK #
        ################
        # accoring to http://kb.parallels.com/de/391
        # ssh (tcp) #
        post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 10122 -j DNAT --to 192.168.0.101:22 <- erstellen: 85.25.253.Y:10122 (Bzw. IP auf vmbr1) wird zu 192.168.0.101:22 geroutet
        post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 10122 -j DNAT --to 192.168.0.101:22 <- löschen

auto vmbr2 <-- internes Netz für VMs aufspannen
iface vmbr2 inet static
        address 192.168.0.1 <- fungiert als Gateway für VMs
        netmask 255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o vmbr1 -j MASQUERADE <- erstellen: Traffic aus 192.168.0.0/24 zu vmbr1 routen/maskieren
        post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o vmbr1 -j MASQUERADE <- löschen

VM 101  (egal ob openvz oder kvm: Netzwerk Adapter im Bridged Modus mit vmbr2!!)

/etc/network/interfaces

Auto eth0
iface eth0 inet static
        address 192.168.0.101 <- beliebige IP im Subnetz 192.168.0.0/24
        netmask 255.255.255.0
        gateway 192.168.0.1 <- muss die IP von vmbr2 des Proxmox Hosts sein!


Bezüglich Ekkis Frage, habe ich da auch noch was gefunden (entspricht meinem obigen Setup, lediglich die Bridge mit der 2. Public IP fehlt):
http://serverfault.com/questions/532938/proxmox-single-public-ip-with-multiple-vms-openvz-containers-work-kvms-don

Falls Fragen sind bzw. es Verbesserungsvorschläge gibt, als her damit :-)

Gruß Steffen


-----Original Message-----
From: lug-ld-bounces at lists.lug-ld.de [mailto:lug-ld-bounces at lists.lug-ld.de] On Behalf Of Jean-Jacques Sarton
Sent: Freitag, 21. März 2014 15:25
To: Allgemeine Mailingliste der Linux-User-Group Landau
Subject: Re: [lug-ld] Proxmox / Internet IP Settings (Verständnis?)

Hallo,

ein klein Fehler habe ich behangen, die Mac-Adresse der
in der Bridge angeschlossenen Interfaces werden doch
weitergegeben wenn man von dies absieht sind meine Aussagen
aber korrekt.
Bei NAT bleiben natürlich die Mac Adresse im System.
nachstehend ist ein kleiner Script welcher lediglich eine
Netzwerk Virtualisation vornimmt. 2 Terminals werden
nachdem die bridge angelegt wurde und die virtuelle
Interface erzeugt und in der Bridge eingebunden wurden
aufgerufen. Bei der Virtualisation einen kompletten
Rechner ist es komplizierter aber auf Netzwerk-Ebene
ist es ähnlich.

---------------------------------------------------------------------
#!/bin/sh
# Network virtualisation

# adapt this to your needs. EXTIF and EXTIP
# are the id eg. IP for the network interface attached to
# the WAN (possibly via a NAT router)

EXTIF=wlp12s0
EXTIP=192.168.178.3

# define the
NS='veth0 n1 10.0.0.2
veth2 n2 10.0.0.3'

NET=10.0.0.0
MASK=24
RT_ADDR=10.0.0.1

# Create_bridge
brctl addbr br0
brctl stp br0 off

# Setup veth's
while read veth ns ip
do
        ip netns add $ns
        ip link add $veth type veth peer name veth1
        ip link set veth1 netns $ns
        brctl addif br0 $veth

        # If you have a true VM the following will be done
        # by the VM OS, since we make only network virtalisation
        # we do this here, this will allow us to run a terminal
        # with only tje virtualized network
        ip netns exec $ns ip link set veth1 name eth0
        ip netns exec $ns ip link set up dev lo
        ip netns exec $ns ip link set up dev eth0
        ip netns exec $ns ip a a $ip/$MASK dev eth0
        ip netns exec $ns ip r a default via $RT_ADDR dev eth0
done <<!
$NS
!


# Configure br0
ip link set up dev br0
ip a a $RT_ADDR/$MASK dev br0

# set NAT for our subnet
iptables -t nat -A POSTROUTING -s $NET/$MASK -o $EXTIF  -j SNAT --to
$EXTIP

# Span sh within a new terminal Adapt according to your terminal program
while read veth ns ip
do
        ip netns exec $ns /usr/bin/xfce4-terminal -T $ns -e /bin/sh &
done <<!
$NS
!

# Wait until all terminals are closed
for job in `jobs -p`
do
        wait $job
done

# CLEANUP
# remove NAT rule
iptables -t nat -D POSTROUTING -s $NET/$MASK -o $EXTIF  -j SNAT --to
$EXTIP

#  remove from bridge remove namespace and network devices
while read veth ns ip
do
        ip netns exec ip l set down $veth
        brctl delif br0 $veth
        ip netns delete $ns
done <<!
$NS
!

# remove the bridge
ip l set down dev br0
brctl delbr br0
---------------------------------------------------------------------

Am 21.03.2014 11:23, schrieb Jean-Jacques Sarton:
> Hallo, Aufbau einen Server mit Virtuelle Maschine
>
> Grundsätzlich sind 2 Verfahren vorhanden: 1) Alle Einrichtungen
> teilen einer gemeinsamen Subnetz 2) Die Virtuelle Rechner sind in
> ein anderen Netz eingebunden
>
> In alle Fällen besitzen die Virtuelle Maschinen ein emulierte
> Netzwerk Interface. Dies kann auf Software Ebene auf verschiedene
> Arten realisiert werden. Als Gerät kann ein Tap-Device oder ein
> virtuelle Ethernet Interface (veth) benutzt werden.
>
> Promox basiert auf kvm und Containers. Damit dürfte die Verwendung
> von veth die Regel sein. Beim anlegen von Virtuelle Ethernet
> Interfaces werden immer 2 Gebilde angelegt Eins davon ist im Server
> eingebunden der anderen wird von der Virtuelle Maschine benutzt.
> Das Kommando:
>
> # Name space für die VM vm1 anlegen ip netns add vm1 # veth
> anlegen ip link add  type veth peer name veth1 # veth1 zur Name
> Space vm1 hinzufügen ip link set veth1 netns vm1
>
> erzeugt die Geräte veth0 und veth1 veth0 wird auf der Server-Seite
> verwendet veth1 ist der Anschluss für die Virtuelle Maschine.
>
> das Anlegen der Interface wird von Promox erledigt und kann hier
> vergessen werden Die Technologie die verwendet wird spielt hier
> keiner Rolle. Da die verschiedene VMs in ein gemeinsamer Subnetz
> betrieben werden, wird ein Software Switch verwendet. Unter Promox
> ist trägt dieser Switch den Name vmbr0. Dieser Switch muss vorab
> angelegt werden Bei Debian wird er in der Datei interfaces
> eingetragen, die konfigurierung erfolgt dann automatisch. Promox
> 'steckt' zu ein spätere Zeitpunkt die veth Interface im Switch.
>
> Im Promox Modus Bridged wird in der Bridge als erstes Interface der
> Bridge eth0 gesteckt (Datei interfaces). Damit ist die HW-Adress
> des Switches automatisch die MAC.Adresse von eth0. Die öffentliche
> Adresse ist vmbr0 zuzuweisen, eth0 ist in diesem Fall so zu sagen
> die Schnittstelle zur Außenwelt und erhält keine Adresse
> zugewiesen.
>
> Wenn bridged nicht gewählt wird, ist normalerweise NAT vorgesehen.
>
> In diesem Fall haben wir nachstehende Konfiguration:
>
> eth0 (öffentliche Adresse) | +---------------+ |    Router     |
> +---------------+ | vmbr0 (Lokaler Adresse Z.B. 10.0.0.1) |
> +---------------+ |    Switch     | +---------------+ |   |   |
> | vm1 vm2 vm3 vm4 ...
>
> Im Bridged Modus sieht es in etwa so aus:
>
> vmbr0  +-- Außenwelt |    | |   eth0 |    | +---------------+ |
> Switch     | +---------------+ |   |   |   | vm1 vm2 vm3 vm4 ...
>
> Eth0 hat in diesem Fall eine Sonderstellung, einerseits hat eth0
> die gleiche Funktionalität wie die übrige Anschlüsse andererseits
> ist eth0 die die physikalischen Schnittstelle zur Außenwelt, eine
> Schnittstelle ohne eigene Adresse. Dies kann schlecht in so eine
> Skizze dargestellt werden. Da das auf Mac Adresse basierenden
> Routing einen Austausch der Mac Adresse vorsieht, wird bei
> Verbindungen zur Außenwelt immer die Mac Adresse des direkt
> inkriminierten Interface verwendet und damit die MAC-Adresse von
> eth0.
>
> Im NAT Modus wird NAT durch die Software (iptables) im Router
> vorgenommen. Nating ist unter Verantwortung des Anwenders
> einzurichten (nicht promox). Damit kann auch eine globale Adresse
> den Switch zugeordnet werden (Voraussetzung man hat eine und das
> Routing außerhalb unseren Server ist so eingerichtet, dass die IPs
> der VMs erreichbar sind).
>
> Die Konfigurierung der VM (IP/Route) erfolgt entweder statisch in
> der VMs kann aber auch per DHCP vorgenommen werden, in dieser Fall
> müsste ein DHCP Server auf die reale Maschine konfiguriert werden.
> Statische Adresse dürfte aber leichter handhabbar sein.
>
> Jean-Jacques
>
> Am 21.03.2014 08:32, schrieb Hakon Benner:
>> Hey Steffen,
>>
>> Hab mir auch noch bisserl den kopf zerbrochen. Eine idee ist
>> wahrscheinlich zwei vmbr's zu erstellen (vmbr0 mit der ersten
>> public ip und vmbr1 mit der zweiten pub ip) und die vms dann auf
>> die beiden vmbrs zu verteilen.
>>
>> Gruß Hakke
>>
>> Gesendet von meinem Commodore C64 Am 18.03.2014 13:51 schrieb
>> "Wagner, Steffen Tobias" < Steffen.Tobias.Wagner at sap.com>:
>>
>>> Hi @ all,
>>>
>>>
>>>
>>> ich hab da mal auch so eine Frage, die in Richtung Ekki’s
>>> Frage vor kurzer Zeit bezüglich öffentlichen IP’s […] bei
>>> Proxmox geht. Wäre klasse, wenn mir wer weiterhelfen könnte J
>>>
>>>
>>>
>>> Und los geht’s:
>>>
>>>
>>>
>>> Habe 2 IP Adresse aus verschiedenen Subnetzen (217.172.182.XXX
>>> & 85.25.253.XXX) und damit auch anderen Broadcast und Gateway
>>> Adressen…. Ich möchte nun erreichen, dass eben eine bestimmte
>>> VM (KVM oder OpenVZ) eben komplett meine Zusatz-IP 85.XXXXX
>>> zugewiesen bekommt (nicht wie Ekki nur einzelne Ports,..)
>>> [oder dass diese Zusatz-IP unter verschiedenen VMs verwendet
>>> wird -> prinzipiell wie Ekki das wollte, nur nicht mit Haupt,
>>> sondern Zusatz-IP].
>>>
>>> Leider kann ich die (eigentlich sehr gute Doku) von Hetzner
>>> http://wiki.hetzner.de/index.php/Proxmox_VE nicht so
>>> verwenden, weil dort die IPs immer im gleichen Subnetz liegen…
>>>
>>>
>>>
>>> Es gibt nicht die Möglichkeit ein Subnetz mit mehreren IPs zu
>>> bekommen, sondern die Zusatz-IPs werden zufällig  vergeben..
>>>
>>>
>>>
>>> Ich dachte vielleicht an was in die Richtung wie hier
>>> beschrieben:
>>> http://pve.proxmox.com/wiki/Network_Model#Routed_Configuration
>>>
>>>
>>>
>>> Könnte ich dann einfach eine VM auf’s vmbr0 Interface legen
>>> (wenn im Host eth0 mit der Haupt-IP konfiguriert ist und vmbr0
>>> ein internes Subnetz „aufspannt“) und im Guest die Zusatz IP
>>> konfigurieren, oder klappt dies dann so nur, wenn ich den
>>> Traffic auf die Haupt-IP Masquerade (was mir ja dann so nichts
>>> für mein Setup mit Zusatz-IP bringt..)?
>>>
>>>
>>>
>>> Wer kann mit netterweise ein wenig auf die Sprünge helfen
>>> (statt dumm alles durchzutesten frage ich erst mal hier, weil
>>> ich nicht jedes Mal ins Recovery fahren will, um dort das Zeug
>>> wieder zurückändern J)?
>>>
>>>
>>>
>>> Danke vielmals,
>>>
>>> Steffen
>>>
>>>
>>>
>>> *Steffen Wagner*
>>>
>>> BAzubis Vocational Training Germany Student of Applied
>>> Computer Science International Business Competence 2013 *
>>> Baden-Württemberg Cooperative State University Mannheim* |
>>> Coblitzallee 1-9 | 68163 Mannheim | Germany
>>>
>>>
>>> *SAP AG* | Dietmar-Hopp-Allee 16 | 69190 Walldorf | Germany
>>>
>>> T +49 6227/7- 56737 | F +49 6227/78-59727 | M +49 1523/3544688
>>> | E steffen.tobias.wagner at sap.com www.sap.com
>>>
>>>
>>> *Please consider the impact on the environment before printing
>>> this e-mail.*
>>>
>>>
>>>
>>> _______________________________________________ lug-ld mailing
>>> list lug-ld at lists.lug-ld.de
>>> http://lists.lug-ld.de/mailman/listinfo/lug-ld
>>>
>>>
>>
>>
>>
>> _______________________________________________ lug-ld mailing
>> list lug-ld at lists.lug-ld.de
>> http://lists.lug-ld.de/mailman/listinfo/lug-ld
>>
>
> _______________________________________________ lug-ld mailing
> list lug-ld at lists.lug-ld.de
> http://lists.lug-ld.de/mailman/listinfo/lug-ld
>

_______________________________________________
lug-ld mailing list
lug-ld at lists.lug-ld.de
http://lists.lug-ld.de/mailman/listinfo/lug-ld