
|
|
Besucher 727669 Ansichten 2189 Online 0 |
|
 |
iptables / port forwarding / dnat
| |
| Thema |
Verfasser |
Letzte Antwort |
| iptables / port forwarding / dnat |
nicolas79 ( ---.23.55.82) |
21 Dec 2007 14:41 | Hallo,
Ich habe eine Frage zu DNAT.
Ich habe einen Server mit einer einzigen IP auf eth0. Mit folgendem Script moechte ich nun ein Port Forwarding von Port 81 auf eine externe IP und Port 80 machen.
iptables -t nat -F
iptables -t filter -F
iptables -A PREROUTING -t nat -p tcp --dport 81 -j DNAT --to 130.59.138.34:80
iptables -A FORWARD -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
Ich habe nun festgestellt dass diese Regel nur dann funktioniert wenn ich noch zusaetzlich folgende Regel in der POSTROUTING Kette aufsetze.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Im "Linux-Firewalls" Buch habe ich im Kapitel 20.1 (Abschnitt Tipp) aber gelesen dass diese Rueckuebersetzung automatisch durch den Kernel gemacht werden sollte.
Ueber eine Antwort wurde ich mich sehr freuen....
Gruss Nicolas
Server Infos
============
2.6.18-5-amd64 #1 SMP x86_64 GNU/Linux
iptables v1.3.6
Interfaces: eth0 (eine ip) und lo
alle ip's sind oeffentlich (keine privaten ip's)
*****************
> iptables -t nat --list
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:81 to:130.59.138.34:80
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
*****************
> iptables-save
# Generated by iptables-save v1.3.6 on Tue Dec 18 09:53:24 2007
*filter
:INPUT ACCEPT [34924:16179522]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [35722:30366922]
-A FORWARD -j ACCEPT
COMMIT
# Completed on Tue Dec 18 09:53:24 2007
# Generated by iptables-save v1.3.6 on Tue Dec 18 09:53:24 2007
*nat
:PREROUTING ACCEPT [1654:97177]
:POSTROUTING ACCEPT [408:24444]
:OUTPUT ACCEPT [405:24300]
-A PREROUTING -p tcp -m tcp --dport 81 -j DNAT --to-destination 130.59.138.34:80
COMMIT
# Completed on Tue Dec 18 09:53:24 2007 |
| ||
| RE: iptables / port forwarding / dnat | Ralf ( ---.dip.t-dialin.net) | 21 Dec 2007 14:41 |
Hallo,
grundsätzlich hast Du natürlich recht. Aber in diesem speziellen Fall nicht ;-)
Es ist im Grunde ein Routing Problem. Du baust wahrscheinlich von außen eine Verbindung zum Port 81 auf. Diese wird auch korrekt weitergeleitet an 130.59.138.34. Dabei wird aber nur die Zieladresse verändert und nicht die Absenderadresse. Der Rechner 130.59.138.34 routet daher seine Antwort direkt an den Client, da dieser ja auch eine über das Internet erreichbare IP-Adresse besitzt. Der Client weiss aber nichts von der 130.x.x.x sondern glaubt sich ja in Verbindung mit Deiner Firewall. Daher musst Du in diesem Fall sicherstellen, dass die Antworten auch wieder über die Firewall laufen. Dass tun sie hier nämlich nicht. Das macht dann das Masquerading.
Klar?
Gruß,
Ralf
|
[ Zurück ] Um ein neues Thema hinzu zu fügen müssen sie eingeloggt sein.
|
 |

|
|
Welche Distribution verwenden Sie?
|
|
|
 |