これが可能だとは思わないufw
。ufw
は、iptables
この機能も備えていない単なるフロントエンドであるため、1つのアプローチは、定期的に実行してIPアドレスが変更されたかどうかを確認するcrontabエントリを作成することです。もしあれば、それを更新します。
あなたはこれをやろうと思うかもしれません:
$ iptables -A INPUT -p tcp --src mydomain.dyndns.org --dport 22 -j ACCEPT
ただし、これによりホスト名がIPに解決され、ルールに使用されるため、後でIPが変更された場合、このルールは無効になります。
代替案
というようなスクリプトを作成できますiptables_update.bash
。
#!/bin/bash
#allow a dyndns name
HOSTNAME=HOST_NAME_HERE
LOGFILE=LOGFILE_NAME_HERE
Current_IP=$(host $HOSTNAME | cut -f4 -d' ')
if [ $LOGFILE = "" ] ; then
iptables -I INPUT -i eth1 -s $Current_IP -j ACCEPT
echo $Current_IP > $LOGFILE
else
Old_IP=$(cat $LOGFILE)
if [ "$Current_IP" = "$Old_IP" ] ; then
echo IP address has not changed
else
iptables -D INPUT -i eth1 -s $Old_IP -j ACCEPT
iptables -I INPUT -i eth1 -s $Current_IP -j ACCEPT
/etc/init.d/iptables save
echo $Current_IP > $LOGFILE
echo iptables have been updated
fi
fi
ソース:dyndns.orgのような動的IPホスト名でIPTablesを使用する
このスクリプトを保存すると、ファイルに/etc/crontab
次のようなcrontabエントリを作成できます。
*/5 * * * * root /etc/iptables_update.bash > /dev/null 2>&1
このエントリは、5分ごとにスクリプトを実行し、ホスト名に割り当てられたIPアドレスが変更されたかどうかを確認します。その場合、古いIPアドレスの古いルールを削除しながら、それを許可する新しいルールを作成します。