ich habe ein Problem mit der Portweiterleitung von einem VPS auf einen Dynclient.
Folgendes Szenario:
Ich möchte Anfragen von extern über meinen VPS auf meine Fritzbox weiterleiten.Da ich in den IPTables ja keinen Dynhost eintragen kann habe ich mir ein Script gebaut das die IP des Dyndns Accounts überprüft und falls sie die IP ändert nie neue abspeichert. Wenn ich das Script händisch ausführe dann funktioniert die weiterleitung. Nach IP Änderung durch Zwangstrennung aktualisiert er mir auch die IP aber die Weiterleitung funktioniert nicht mehr. Auch nach einem Neustart funktioniert das ganze nicht mehr. Habe auch einen Cronjob eingerichtet der alle 3 Minuten läuft damit ich das nicht händisch machen muss aber der aktualisiert nur die IP.
Wahrscheinlich habe ich eine Kleinigkeit übersehen. Wäre schön wenn jemand von Euch drüberschauen könnte. Wenn ich nach neustart bzw IP Änderung die IP im Ordner /root/dynhosts/host-...dyndns.org ändere (ihm also vorkaukel das sich die IP geändert hat) und anschliessend das script händisch laufen lasse funktioniert es wieder.
Als Script habe ich mir dieses hier zusammengebaut
cronjob habe ich mit crontab -e folgenden eintragHOST=$1
HOSTFILE="/root/dynhosts/host-$HOST"
CHAIN="host.dyndns.org" # change this to whatever chain you want.
IPTABLES="/sbin/iptables"
# check to make sure we have enough args passed.
if [ "${#@}" -ne "1" ]; then
echo "$0 hostname"
echo "You must supply a hostname to update in iptables."
exit
fi
# lookup host name from dns tables
IP=`/usr/bin/dig +short $HOST | /usr/bin/tail -n 1`
if [ "${#IP}" = "0" ]; then
echo "Couldn't lookup hostname for $HOST, failed."
exit
fi
OLDIP=""
if [ -a $HOSTFILE ]; then
OLDIP=`cat $HOSTFILE`
# echo "CAT returned: $?"
fi
# has address changed?
if [ "$OLDIP" == "$IP" ]; then
echo "Old and new IP addresses match."
exit
fi
# save off new ip.
echo $IP>$HOSTFILE
echo "Updating $HOST in iptables."
if [ "${#OLDIP}" != "0" ]; then
echo "Removing old rule ($OLDIP)"
`$IPTABLES -D $CHAIN -s $OLDIP/32 -j ACCEPT`
fi
echo "Inserting new rule ($IP)"
`$IPTABLES -A $CHAIN -s $IP/32 -j ACCEPT`
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -d "IP des VPS" -p tcp --dport 12345 -j DNAT --to-dest $IP:12345
iptables -t nat -A POSTROUTING -d $IP -p tcp --dport 12345 -j SNAT --to-source "IP des VPS"
Vielleicht gibt es ja eine andere Möglichkeit das ich eine Portweiterleitung einrichten kann mit Dyn Adressen.*/3 * * * * cd /root && sh tables.sh > /dev/null 2>&1
Ziel soll es sein eben Anfragen an den VPS weiterzuleiten an meine DynAdresse.
Vielen Dank für Eure Hilfe
Ducatisepp