Supportnet / Forum / Linux
IPTABLES
Frage
Hallo,
ich habe mir eine rechner mit suse 80 installiert. möchte diesen als firewall nutzen. habe hinter dem linuxrechner einen xp rechner. läuft auch alles soweit gut. habe den linux als gateway eingerchtet. möchte aber nun z.b. einen ftp-server auf meinem xp rechner laufen lassen. geht nicht, kann keiner drauf zu greifen weil der linux nicht weiß wohin mit der anfrage. wie muß ich das richig einstellen. und wo.. bin linux anfänger. habe an firewall noch nichts gemacht, also nichts mit IPtables. der linuxrechner dient zur zeit nur als router... helft mir bitte... thx
Antwort 1 von Chonhulio
Sollte in etwa so aussehen:
iptables -A FORWARD -i $INET_IF -o $LAN_IF -p tcp --dport 21 -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A PREROUTING -t nat -p tcp -d $INET_IP --dport 21 -j DNAT --to <IP des Win-Rechners>:21
Die erste Regel erlaubt das Routing für diesen Port von außen, die zweite führt das eigentliche Forwarding durch.
$INET_IF ist der Names des Interface ins Internet, z.B. ppp0
$LAN_IF das Interface ins lokale Netz, z.B. eth0
$INET_IP ist deine aktuelle, vom Provider zugewiesene IP. Diese kannst du in deinem Firewallskript so ermitteln:
INET_IP=`ifconfig ppp0 | awk '/inet/ {sub(/addr:/,"",$2); print $2}'`
Evtl. mußt du "addr:" durch "Adresse:" ersetzen. Schau dir einfach die Ausgabe von ifconfig an. Das hängt von der Spracheinstellung ab.
mfg
iptables -A FORWARD -i $INET_IF -o $LAN_IF -p tcp --dport 21 -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A PREROUTING -t nat -p tcp -d $INET_IP --dport 21 -j DNAT --to <IP des Win-Rechners>:21
Die erste Regel erlaubt das Routing für diesen Port von außen, die zweite führt das eigentliche Forwarding durch.
$INET_IF ist der Names des Interface ins Internet, z.B. ppp0
$LAN_IF das Interface ins lokale Netz, z.B. eth0
$INET_IP ist deine aktuelle, vom Provider zugewiesene IP. Diese kannst du in deinem Firewallskript so ermitteln:
INET_IP=`ifconfig ppp0 | awk '/inet/ {sub(/addr:/,"",$2); print $2}'`
Evtl. mußt du "addr:" durch "Adresse:" ersetzen. Schau dir einfach die Ausgabe von ifconfig an. Das hängt von der Spracheinstellung ab.
mfg
Antwort 2 von MC
Danke für Deine schnelle antwort. leider bin ich ein echter newbee in sachen linux... wo und wie muß ich das ganze eingeben so das es für immer gespeichert ist.
Antwort 3 von Chonhulio
Ein möglicher Ort währe /etc/ppp/ip-up.local. Das Skript wird bei jeder Einwahl ausgeführt.(Stand Suse 7.0)
Falls die Datei nicht existiert einfach erstellen, und mit chmod +x ausführbar machen.
Inhalt:
#!/bin/bash
INET_IF=ppp0 (oder entsprechend)
LAN_IF=eth0 (...)
INET_IP=`ifconfig $INET_IF | awk '/inet/ {sub(/addr:/,"",$2); print $2}'`
iptables -A FORWARD -i $INET_IF -o $LAN_IF -p tcp --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A PREROUTING -t nat -p tcp -d $INET_IP --dport 21 -j DNAT --to <IP des Win-Rechners>:21
Natürlich mußt du evtl. einige Werte anpassen, und vorher natürlich manuell an der Konsole testen.
Da ich Suse seit 7.0 nicht mehr verwende, kann es sein, das ein bereits bestehendes Firewallskript bei jeder Einwahl nach ip-up.local ausgeführt wird, und die Einstellungen überschreibt. In diesem Fall mußt du ip-up anpassen bzw. im Suse-Handbuch nachsehen, wo Platz für eigene Regeln ist.
mfg
Falls die Datei nicht existiert einfach erstellen, und mit chmod +x ausführbar machen.
Inhalt:
#!/bin/bash
INET_IF=ppp0 (oder entsprechend)
LAN_IF=eth0 (...)
INET_IP=`ifconfig $INET_IF | awk '/inet/ {sub(/addr:/,"",$2); print $2}'`
iptables -A FORWARD -i $INET_IF -o $LAN_IF -p tcp --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A PREROUTING -t nat -p tcp -d $INET_IP --dport 21 -j DNAT --to <IP des Win-Rechners>:21
Natürlich mußt du evtl. einige Werte anpassen, und vorher natürlich manuell an der Konsole testen.
Da ich Suse seit 7.0 nicht mehr verwende, kann es sein, das ein bereits bestehendes Firewallskript bei jeder Einwahl nach ip-up.local ausgeführt wird, und die Einstellungen überschreibt. In diesem Fall mußt du ip-up anpassen bzw. im Suse-Handbuch nachsehen, wo Platz für eigene Regeln ist.
mfg

