[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: