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.
Current_IP=$(host $HOSTNAME | cut -f4 -d' ')
keCurrent_IP=$(host $HOSTNAME | head -n1 | cut -f4 -d ' ')
Saya tahu ini sudah tua tetapi saya berlari melewatinya dan berakhir dengan solusi ini pada akhirnya yang tampaknya lebih baik karena tidak ada file log yang diperlukan dan sangat mudah untuk menambahkan host tambahan sesuai kebutuhan. Bekerja seperti pesona!
Sumber: http://rdstash.blogspot.ch/2013/09/allow-host-with-dynamic-ip-through.html
sumber
Berdasarkan jawaban sebelumnya, saya memperbarui yang berikut sebagai skrip bash yang berfungsi di Debian Jessie
sumber
cron
menjalankannya secara berkala.LOGFILE=$HOME/ufw.log
untukLOGFILE=$HOME/ufw.$HOSTNAME.log
mengizinkan lebih dari satu skrip dijalankan pada saat yang samaBerdasarkan semua jawaban sebelum saya kombinasikan. Tidak diperlukan file log. Diuji pada Ubuntu 18.04
Anda dapat menambahkan port ke aturan dengan parameter "port". misalnya:
sumber