Ich glaube nicht, dass dies mit möglich ist ufw
. ufw
ist nur ein Frontend, iptables
dem diese Funktion ebenfalls fehlt. Daher besteht ein Ansatz darin, einen crontab-Eintrag zu erstellen, der regelmäßig ausgeführt wird und überprüft, ob sich die IP-Adresse geändert hat. Wenn dies der Fall ist, wird es aktualisiert.
Sie könnten versucht sein, dies zu tun:
$ iptables -A INPUT -p tcp --src mydomain.dyndns.org --dport 22 -j ACCEPT
Dadurch wird der Hostname jedoch in eine IP-Adresse aufgelöst und für die Regel verwendet. Wenn sich die IP-Adresse später ändert, wird diese Regel ungültig.
Alternative Idee
Sie könnten ein Skript wie so genannt, erstellen 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
Quelle: Verwenden von IPTables mit dynamischen IP-Hostnamen wie dyndns.org
Mit diesem gespeicherten Skript können Sie einen Crontab-Eintrag wie folgt in der Datei erstellen /etc/crontab
:
*/5 * * * * root /etc/iptables_update.bash > /dev/null 2>&1
Dieser Eintrag führt das Skript dann alle 5 Minuten aus und überprüft, ob sich die dem Hostnamen zugewiesene IP-Adresse geändert hat. In diesem Fall wird eine neue Regel erstellt, die dies zulässt, während die alte Regel für die alte IP-Adresse gelöscht wird.