Je ne crois pas que ce soit possible avec ufw
. ufw
n’est qu’une interface pour iptables
laquelle cette fonctionnalité manque également; une solution serait donc de créer une entrée dans la crontab qui serait périodiquement exécutée et vérifie si l’adresse IP a changé. Si c'est le cas, il le mettra à jour.
Vous pourriez être tenté de faire ceci:
$ iptables -A INPUT -p tcp --src mydomain.dyndns.org --dport 22 -j ACCEPT
Mais cela résoudra le nom d'hôte en une adresse IP et l'utilisera pour la règle. Ainsi, si l'adresse IP change ultérieurement, cette règle deviendra invalide.
Idée alternative
Vous pouvez créer un script comme suit 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
source: utilisation d'IPTables avec des noms d'hôte IP dynamiques tels que dyndns.org
Avec ce script enregistré, vous pouvez créer une entrée de fichier crontab comme dans le fichier /etc/crontab
:
*/5 * * * * root /etc/iptables_update.bash > /dev/null 2>&1
Cette entrée exécute ensuite le script toutes les 5 minutes, en vérifiant si l'adresse IP attribuée au nom d'hôte a changé. Si c'est le cas, il créera une nouvelle règle l'autorisant, tout en supprimant l'ancienne règle pour l'ancienne adresse IP.