Das machste per Nat mit iptables im Hostystem. Dazu ne Frage bekommt der Kunde dann nur einen Port weitergeleitet so das sich mehrere VMs eine externe ip teilen. Oder willst im Host dann jeweils eine externe ip auf eine interne zur VM durchreichen?
Hier ein Beispiel wie man 1 externe IP komplett an eine interne durchreicht.
Wenns nur ein Port sein soll muss der jeweils noch in der Regel hinzugefügt werden. (vmbr0 kann natürlich auch ethX o.ä. sein... je nachdem wie deine Netzwerkconfig ausschaut)
Code:
#!/bin/sh
IPTABLES="/sbin/iptables"
#loesche alle Regeln
$IPTABLES -t nat --flush
# Routing fuer die virtuellen Maschinen
#
#####################################################################################################################
#####################################################################################################################
#
# 10.0.1.1 <-> 123.456.789.012
#
# VM1
#
# damit der VServer nach aussen kommunizieren kann:
$IPTABLES -t nat -A POSTROUTING -s 10.0.1.1 -o vmbr0 -j SNAT --to 123.456.789.012
#
# und der Rückweg
$IPTABLES -t nat -A PREROUTING -d 123.456.789.012 -i vmbr0 -j DNAT --to-destination 10.0.1.1
Das hier muss natürlich auch noch in die sysctl.conf
Code:
#net.ipv4.conf.default.forwarding=1
net.ipv4.conf.all.forwarding=1
Mir genügt, wenn der Kunde seine VM über vmx.domain.tdl erreichen kann.
Wenn es sich nur um eine IP im Host handelt sind alle VMs über obige Domain erreichbar, wenn wie in meinem vorgenannten Beispiel jede VM ne IP durchgereicht bekommt so ist die Domain nicht zwingend nötig, da dann die VM auch extern per definierter IP erreichbar ist.
Was
nicht geht ist .... port 22 Vm1ssh, port 23 VM2ssh mal als Beispiel... unter selber externe ip mit unterschiedlicher Domain .... bzw Port 22 unter einer IP doppelt nutzen und nur per Domain splitten wollen geht auch nicht.
Gruß Sven