DNAT

Alles rund um Netzwerktechnik und Protokolle
cyrus
Posts: 18
Joined: 2002-07-02 21:59

DNAT

Post by cyrus »

Hallo,

ich habe ein kleines Problem mit DNAT.

Auf meinem Server mit einer einzigen öffentlichen IP-Adresse laufen mehrere virtuelle KVM-Instanzen mit privaten IP-Adressen. Auf dem Hostsystem habe ich DNAT eingerichtet, um die Dienste der virtuellen Maschinen auf der öffentlichen IP-Adresse anzubieten. Zusätzlich läuft noch IP-Masquerading, damit die VMs ins Internet kommen. Hier die entsprechenden Regeln beispielhaft für nur eine VM (172.16.1.1), auf der ein SMTP-Daemon läuft.:

Code: Select all

# iptables -L -v -n -t nat
Chain PREROUTING (policy ACCEPT 2386 packets, 144K bytes)
 pkts bytes target     prot opt in     out     source           destination         
    0     0 DNAT       tcp  --  eth0   *       0.0.0.0/0        <public-ip>  tcp dpt:25 to:172.16.1.1:25 

Chain POSTROUTING (policy ACCEPT 2979 packets, 208K bytes)
 pkts bytes target     prot opt in     out     source           destination         
    0     0 MASQUERADE  all  --  *      *       172.16.1.0/24   !172.16.1.0/24       

Chain OUTPUT (policy ACCEPT 2779 packets, 197K bytes)
 pkts bytes target     prot opt in     out     source           destination
Damit nun der Mailserver auch vom Hostsystem aus unter <public-ip>:25 erreichbar ist, gibt es noch eine weitere Regel:

Code: Select all

Chain OUTPUT (policy ACCEPT 2779 packets, 197K bytes)
 pkts bytes target     prot opt in     out     source           destination         
    0     0 DNAT       tcp  --  *      lo      <public-ip>      <public-ip>      tcp dpt:25 to:172.16.1.101:25
Jetzt bleibt nur noch ein Problem, und da komme ich nicht weiter: Von der Mailserver Instanz aus (172.16.1.1) würde ich auch gerne auch <public-ip>:25 connecten können. Ich habe schon folgendes probiert aber das klappt nicht:

Code: Select all

Chain OUTPUT (policy ACCEPT 2779 packets, 197K bytes)
 pkts bytes target     prot opt in     out     source           destination         
    0     0 DNAT       tcp  --  *      *       172.16.1.101     <public-ip>      tcp dpt:25 to:172.16.1.101:25
Kann mir jemand sagen wo der Fehler liegt?