Grundlegende iptables NAT-Portweiterleitung

8

Ich habe drei Computer: einen lokalen PC (öffentliche IP 1.2.3.4), eine Ubuntu 10 Server-Box in einem Rechenzentrum (eth0 auf 5.6.7.8 öffentliche IP) und einen Server eines Drittanbieters, der eine Website außerhalb meines Netzwerks hostet (sagen wir) Slashdot am 216.34.181.45).

  • Wie greife ich mit iptables von meinem lokalen Computer aus mit 5.6.7.8:8080 auf Slashdot zu?
  • Würde sich dieser Prozess unterscheiden, wenn sich Slashdot im selben LAN wie meine Ubuntu-Box befindet?
  • Kann dies nur mit NAT PREROUTING / POSTROUTING gemacht werden, oder brauche ich MASQUERADE?
Jet-Junge
quelle

Antworten:

21
   PC ----- Ubuntu 10 Server ----- Slashdot 
(1.2.3.4)      (5.6.7.8)        (216.34.181.45)
  1. Aktivieren Sie die IP-Weiterleitung unter Ubuntu:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    

    und fügen Sie die folgenden Regeln hinzu:

    iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 8080 -j DNAT \
                                           --to-destination 216.34.181.45:80 
    iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 5.6.7.8
    
  2. Nein.

  3. Sie sollten MASQUERADE verwenden, wenn Ubuntu eine dynamische IP hat:

    iptables -t nat -A POSTROUTING -j MASQUERADE
    

Sie können in diesem Fall auch die lokale SSH-Portweiterleitung verwenden, indem Sie den folgenden Befehl auf Ubuntu ausführen:

$ ssh -L 5.6.7.8:8080:216.34.181.45:80 -N [email protected]

Es gibt noch einen anderen (oder mehr) Weg, dies zu tun. Schauen Sie sich das Rinetd an :

Name       : rinetd
Arch       : i386
Version    : 0.62
Release    : 6.el5.art
Size       : 41 k
Repo       : installed
Summary    : TCP redirection server
URL        : http://www.boutell.com/rinetd
License    : GPL
Description: rinetd is a daemon which redirects TCP connections from one IP address
           : and port to another IP address and port. This daemon is often used to
           : access services behind a firewall.

Die Konfiguration ist sehr einfach. Fügen Sie die folgende Zeile hinzu in /etc/rinetd.conf:

5.6.7.8 8080 216.34.181.45 80

und Start:

# /etc/init.d/rinetd start
Starting rinetd:                                           [  OK  ]

Es wird alles für Sie tun.

Quanten
quelle
Fantastisch. Die iptables-Version funktioniert wie ein Zauber. Mir fehlte die POSTROUTING-Regel und ich kam nicht weiter. Wenn jemand versucht, dies mit einer gespeicherten .conf-Datei zu tun, ist dies das, wonach Sie *nat -A PREROUTING -p tcp -m tcp -i eth0 --dport 8080 -j DNAT --to-destination 216.34.181.45:80 -A POSTROUTING -o eth0 -j SNAT --to-source 5.6.7.8 COMMIT
suchen
Folgefrage
Jetboy
Perfekt! Nur eine kurze Frage. Wenn das Antwortpaket mit einer Zieladresse von 5.6.7.8 zum Ubuntu-Server zurückkehrt, welches Modul ist dafür verantwortlich, das Paket zu ändern und es auf 1.2.3.4 zurückzusenden? Ist es das Modul "Verbindungsverfolgung"?
Keeto