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.
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.