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.
Current_IP=$(host $HOSTNAME | cut -f4 -d' ')
pourCurrent_IP=$(host $HOSTNAME | head -n1 | cut -f4 -d ' ')
Je sais que cela est vieux, mais je l’ai rencontré et j’ai fini avec cette solution, ce qui semble encore meilleur, car aucun fichier journal n’est nécessaire et il est très facile d’ajouter des hôtes supplémentaires au besoin. Fonctionne comme un charme!
Source: http://rdstash.blogspot.ch/2013/09/allow-host-with-dynamic-ip-through.html
la source
Sur la base des réponses précédentes, j’ai mis à jour ce qui suit comme script bash qui fonctionne sous Debian Jessie
la source
cron
le faire fonctionner périodiquement de son côté.LOGFILE=$HOME/ufw.log
pourLOGFILE=$HOME/ufw.$HOSTNAME.log
permettre à plus d'un script d'être exécuté en même tempsBasé sur toutes les réponses avant que je les combine. Aucun fichier journal nécessaire. Testé sur Ubuntu 18.04
Vous pouvez ajouter un port aux règles avec le paramètre "port". par exemple:
la source