PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : portmapping a range of ports



ThorstenHirsch
13.09.04, 19:29
Servus!

Hab den Titel mal komplett auf Englisch gemacht weil mir kein guter deutscher eingefallen ist. Egal. Also, dieser Tipp dient dazu, eine Vielzahl von Ports (auf einem Router) mit Hilfe von iptables an einen Client weiterzuleiten. Man nennt dies Portmapping und ich hab bei Harry's iptables generator (http://harry.homelinux.org) schon immer eine Funktion vermisst, die mich einen range im Format anfang:ende angeben lässt. Mit Hilfe der Jungs im IRC* hab ich nun folgendes gebastelt und in das firewall-Skript eingebettet:

# PORTMAPPING
HOST="192.168.0.12"
PORTS="6881 51951:51959"
for PT in $PORTS; do
if [ $(echo $PT | grep ":") ]; then
PTEND=${PT#*:}
PT=${PT%:*}
else
PTEND=$PT
fi
while [ $PT -le $PTEND ]; do
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport $PT -j DNAT --to-destination $HOST
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport $PT -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i ppp0 -m state --state NEW -p tcp -d $HOST --dport $PT -j ACCEPT
PT=$(expr $PT + 1)
done
done

Verbesserungsvorschläge sind herzlich willkommen!

Gruß,
Thorsten

*=Danke an sirius und echo!

edited by msi: Zeilenumbruch im Script hinzugefügt.

Jasper
13.09.04, 21:37
warum nicht "-m multiport --dports port1,port1" verwenden?
finde ich einfacher.

-j

ThorstenHirsch
13.09.04, 21:51
Äh...was hat das denn mit nem Port-range zu tun?

multiport
This module matches a set of source or destination ports.
Up to 15 ports can be specified. It can only be used in
conjunction with -p tcp or -p udp.

--destination-ports port[,port[,port...]]
Match if the destination port is one of the given
ports. The flag --dports is a convenient alias for
this option.

Jasper
13.09.04, 23:24
[QUOTE=ThorstenHirsch]Äh...was hat das denn mit nem Port-range zu tun?

--dports 1,2,3,4,5,6

ist das kein port-range von 1-6?

oder meinethalben auch mit --dport 1:6


-j

ThorstenHirsch
14.09.04, 21:20
Hehe, wie uncooooool ;)

Nein, mal ernst: also ich könnte schwören, dass ich das letzte mal noch kein port range bei --dport eingeben konnte. Hab's natürlich eben nochmal ausprobiert und was soll ich sagen? Es klappt jetzt auf einmal. So ein Mist! Und dafür schlag ich mich hier mit so nem Skript rum. :confused:

Naja....danke....so irgendwie.....danke für deine Hilfe und dafür dass du meine Illusion zerstört hast, einen sinnvollen Beitrag geschrieben zu haben. :ugly:

Gruß,
Thorsten