Virtuelle Server hinter NAT

Virtuelle Server hinter ein NAT zu setzen ist klasse, plötzlich ist die Zahl der VServer nicht mehr von der Zahl der öffentlichen IP-Adressen abhängig. Für eine kleine Testumgebung brauchte ich nämlich mal eben 6 VServer. Also kurzerhand mit ifconfig ein dummy-Interface erzeugen, und eine Adresse aus dem privaten Bereich (RFC 1918) vergeben:

ifconfig dummy0 192.168.1.1 netmask 255.255.255.0 up

Die VServer kriegen dann in der Konfigurationsdatei ebenfalls eine IP-Adresse aus dem Netz 192.168.1.0/24 zugeordnet und werden an das Interface dummy0 gebunden. Dann setzen wir eine IPTables Regel, welche erstmal sämtlichen ausgehenden Datenverkehr aus dem privaten Netz auf eine öffentliche Adresse übersetzt:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d ! 192.168.1.0/24 \
-j SNAT --to-source <public IP>

Das wars eigentlich schon fast. Nur falls Dienste aus dem privaten Netz von außen erreichbar sein sollen, müssen wir noch für jeden Dienst den Port forwarden. Als Beispiel hier eine Regel die einen Webserver (TCP Port 80) auf dem VServer mit der Adresse 192.168.1.5 von außen (auf der öffentlichen Adresse) erreichbar macht:

iptables -t nat -A PREROUTING -s ! 192.168.26.0/24 -m tcp -p tcp \
-d <public IP> --dport 80 -j DNAT --to-destination 192.168.1.5:80