linux-l: NAT Experte gesucht...
Karl-Heinz Haag
kh at lux.in-berlin.de
So Mär 4 15:02:30 CET 2001
Quoting Schreiber Frank (Frank.Schreiber at lr-online.de):
>
> Das klappt leider nicht!
> iptables -t nat -A POSTROUTING -s 192.168.1.11/32 -o eth1 \
> -j SNAT --to 1.2.3.4/32
'Klappt nicht' ist so auskunftsreich wie 'mein Auto fährt nicht'
So aus dem Zusammenhang gerissen ist dazu nicht viel zu sagen.
Deshalb zunächst ein paar basics.
1. Ein script übernehmen *ohne* zu verstehen -->bullshit
(das gilt auch fuer evtl. 'mitgelieferte' Suse-scripts)
Also: selbst schreiben siegt.
2. Wenn Du ein produktives Netz administrierst, ist immer angesagt, das
firewall-script in einer Testumgebung auf Herz und Nieren zu checken.
Es sei denn, Du wärest bereits vorher _der_ firewall-Fachmann.
3. Voraussetzung für NAT (+FORWARDing) ist
a) ein forwarding- und nat-fähiger Kernel
b) wenn iptables-*Module* im Spiel sind, sollte *vor* der Aktivierung
von Regeln Sorge getragen werden, daß die erforderlichen Module auch
geladen werden. (per Hand oder script)
Hier kann man sich nicht auf autoloading von Kernel-Modulen verlassen!
c) folgende Anweisung an den laufenden Kernel hat vorher ausgeführt
worden zu sein:
echo "1" >/proc/sys/net/ipv4/ip_forward
Am einfachsten machst Du das wieder in dem von Dir zu schreibenden
script.
4. Das letzte basic hier:
"iptables -t nat -A POSTROUTING ...." kann nur dann gehen und setzt
voraus, daß Du *davor* eine Regel setzt, die das folgende
POSTROUTING ACCEPT'ed.
(da anzunehmen ist, daß die policy bei Dir 'DROP' heißt)
Wenn diese Voraussetzungen erfüllt sind, und immer es noch 'nicht klappt',
mußt Du Debuggen.
Das macht sich am besten, indem Du jede in Frage kommende Regel mit
einer logging-rule einleitest und /var/log/messages auswertest.
Im gleichen eth-Strang kannst Du zusätzlich tcpdump die interessierenden
Pakete loggen lassen.
Lesen der einschlägigen HOWTO's (hier: Netfilter-HOWTO + NAT-HOWTO) ist
latürnich nicht ganz falsch...
Gruß + Erfolg
Karl-Heinz
Mehr Informationen über die Mailingliste linux-l