iptables + xen + Verbindung interne IP -> extern wirkendes Portforwarding
Hallo Debianer !
Ich habe folgendes Setup
* Root Server bei Hetzner
* Xen Hypervisor 3.2 auf einem Debian System.
* 4 IP-Adressen (öffentliche)
* Dom0 besitzt eine IP-Addresse
* 5 DomU´s (4x Xen-Kernel (alles Debian Lenny), 1x HVM Windows 2003
Server)
Nun ist die Konfiguration des Netzwerks die folgende:
3 der DomU´s gehen per eigene IP und routing über die Dom0 direkt ins
Netz und können auch direkt vom Internet aus angesprochen werden. Das
ist OK so !
Eine DomU (Debian-xen Kernel) ist über eine interne Bridge
(xeninternbr0) nur mit der Dom0 verbunden. auf der Dom0 wird diese dann
per Masqeruade ins Netz gelassen. Desweiteren werden die Ports für
bestimmte Dienste von der IP der Dom0 auf diese DomU geleitet (pop3,
smtp, www usw usw). Das funktioniert auch sehr gut so solange ich diese
Dienste dann von aussen aus anspreche. Und nun kommt das Problem.
Unter anderem läuft auch ein apache auf dieser DomU. Auf diesem apache
liegen verschiedene Vhosts. Nehmen wir an das wäre mal die Domain
www.xyz.de www.xyz.de hat bei regfish folgenden A eintrag:
211.211.211.211 (ausgedacht Augenzwinkern ). Diesen host kann ich aus
der besagten DomU anpingen und werde auf die IP der Dom0 geleitet. Will
ich jedoch ein wget von der DomU selbst machen läuft das irgendwie quer.
Ich nehme an das Paket des wget macht folgenden Verlauf:
DomU mit www server -> Dom0 (hat ja die passende IP Addresse) und dort
greift dann irgendwie die Portweiterleitung nicht. Ich hab jetzt mehrere
Möglichkeiten.
1. Dns einträge machen, die auf die internen ip´s verweisen (ist
nicht so schön weil ich das für jeden vhost machen müsste)
2. hosts file anpassen (selbiges problem ich müsste das für jeden
vhost machen
3. per snat die ziel addresse aller pakete die von internen netz auf
meine externe ip gehen umschreiben lassen auf die interne ip
4. Irgendwie mit gescheiten iptables regeln das sauber zum laufen
bekommen das es richtig über die externe ip addresse geht.
Die letzte Lösung ist dabei die transparenteste und schönste Lösung aus
Sicht der DomU. Allerdings weiss ich nicht so recht wie ich das umsetzen
sollLösung 3. bekomme ich leider auch nicht auf die schnelle hin,
vielleicht kann einer etwas mehr Kontrast in mein grau rein bringen.
Hier meine iptables regeln, die bisher am wirken sind:
#!/bin/sh
iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING
# NAT
iptables -t nat -P POSTROUTING ACCEPT
#iptables -t nat -I POSTROUTING -j SNAT -s 10.0.0.0/24 -d 0/0
--to-source 211.211.211.211
#iptables -t nat -I POSTROUTING -o xen1-vif-br -p tcp --dport 80 -j SNAT
--to-source 211.211.211.211
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
### Port Forwarding ###
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 993 -j DNAT --to
10.0.0.3:993
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 995 -j DNAT --to
10.0.0.3:995
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 110 -j DNAT --to
10.0.0.3:110
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 143 -j DNAT --to
10.0.0.3:143
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 21 -j DNAT --to
10.0.0.3:21
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 25 -j DNAT --to
10.0.0.3:25
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to
10.0.0.3:80
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 443 -j DNAT --to
10.0.0.3:443
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 2223 -j DNAT --to
10.0.0.3:22
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 8080 -j DNAT --to
10.0.0.3:8080
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 3389 -j DNAT --to
10.0.0.2:3389
Vielen Dank schon einmal im vorraus für etwaige Antworten !
Mit freundlichen Grüßen
Robert Bude
Reply to: