Saya tidak percaya ini mungkin terjadi ufw
. ufw
hanyalah sebuah frontend iptables
yang juga tidak memiliki fitur ini, jadi salah satu pendekatannya adalah membuat entri crontab yang secara berkala akan berjalan dan memeriksa apakah alamat IP telah berubah. Jika sudah maka akan memperbaruinya.
Anda mungkin tergoda untuk melakukan ini:
$ iptables -A INPUT -p tcp --src mydomain.dyndns.org --dport 22 -j ACCEPT
Tapi ini akan menyelesaikan nama host ke IP dan menggunakannya untuk aturan, jadi jika IP nanti berubah aturan ini akan menjadi tidak valid.
Ide alternatif
Anda dapat membuat skrip seperti itu, disebut 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
sumber: Menggunakan IPTable dengan nama host IP Dinamis seperti dyndns.org
Dengan skrip ini disimpan, Anda dapat membuat entri crontab seperti di file /etc/crontab
:
*/5 * * * * root /etc/iptables_update.bash > /dev/null 2>&1
Entri ini kemudian menjalankan skrip setiap 5 menit, memeriksa untuk melihat apakah alamat IP yang ditetapkan untuk nama host telah berubah. Jika demikian maka itu akan membuat aturan baru yang memperbolehkannya, sambil menghapus aturan lama untuk alamat IP lama.