Перенаправление портов для определенного (динамического) IP с использованием скрипта iptables
Что я хочу:
Входящие соединения TCP и UDP через порт 900 с разрешающего IP-адреса myip.dyndns.org (динамический IP) должны перенаправить на порт 5050 на локальном компьютере. Все остальные IP-адреса должны "оставаться" на порте 900.
Я читал, что iptables разрешает IP-адрес только после добавления правила, а затем использует этот IP-адрес, даже если он меняется, и я нашел скрипт для запуска с crontab, чтобы решить эту проблему:
#!/bin/bash
HOSTNAME=myip.dyndns.org
LOGFILE=iptables_update.log
Current_IP=$(host $HOSTNAME | cut -f4 -d' ')
if [ $LOGFILE = "" ] ; then
iptables -t nat -I PREROUTING -p tcp --src $Current_IP --dport 900 -j REDIRECT --to-port 5050
iptables -t nat -I PREROUTING -p udp --src $Current_IP --dport 900 -j REDIRECT --to-port 5050
echo $Current_IP > $LOGFILE
else
Old_IP=$(cat $LOGFILE)
if [ "$Current_IP" = "$Old_IP" ] ; then
echo "Update not required."
else
iptables -t nat -D PREROUTING -p tcp --src $Old_IP --dport 900 -j REDIRECT --to-port 5050
iptables -t nat -D PREROUTING -p udp --src $Old_IP --dport 900 -j REDIRECT --to-port 5050
iptables -t nat -I PREROUTING -p tcp --src $Current_IP --dport 900 -j REDIRECT --to-port 5050
iptables -t nat -I PREROUTING -p udp --src $Current_IP --dport 900 -j REDIRECT --to-port 5050
echo $Current_IP > $LOGFILE
echo "Updating iptables with IP:" $CurreIP
fi
fi
Так что мой единственный вопрос, если это нормально / правильный способ сделать это?
Заранее спасибо!