Перенаправление портов для определенного (динамического) 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

Таким образом, мой единственный вопрос состоит в том, если это - OK путь / корректный способ выполнить это?

Заранее спасибо!

2
задан 16 October 2014 в 22:45

0 ответов

Другие вопросы по тегам:

Похожие вопросы: