iptables chain mit DDNS Adressen

5
(1)

Die Linux Kernel Firewall iptables unterstützt keine FQDN und DDNS Namen in den Ketten, deshalb habe ich hierfür ein einfaches Script erstellt, dieses ein DDNS A Record auflöst und die IPv4 Adresse in die Kette als append chain einfügt.

#!/bin/sh
iptables="/etc/sysconfig/iptables"
sed -i '/#DDNSIP/d' $iptables
lookup="$(grep -i "#MyDDNS" $iptables)"
select=( $lookup )
ddns="${select[2]}"
echo $select $ddns
ip="$(host $ddns)"
if [ "$ip" == "${ip%% has address *}" ]; then
continue;
fi
ip="${ip##* has address }"
sed -i 's/^\('"$lookup"'\)$/\1\n-A RH-Firewall-1-INPUT -i eth0 -p udp -m udp -s '"$ip"' -m comment --comment #DDNSIP -j ACCEPT/' $iptables
service iptables restart

Dieses Shell Skript ist auf einem CentOS geschrieben, ist aber mit kleinen Änderungen auf anderen Linux distributionen einsetzbar, bei Zeile 3 wird der entsprechende Pfad zu iptables angepasst, z.B. für Debian /etc/defaut.

Das Commad host ist Teil der BIND-Dienstprogramme, sodass diese installiert sein müssen. Dazu führt man folgende yum Installation auf der Console aus, um die BIND-Dienstprogramme zu installieren:

sudo yum -y install bind-utils

Es wird eine Zeile mit dem DDNS-Hostnamen in die Konfigurationsdatei iptables eingetragen, der Tag #MyDDNS dient als Marke und muss in der Konfigurationsdatei iptables eingetragen werden:

#Allow from myhost.dyndns.org #MyDDNS
-A RH-Firewall-1-INPUT -i eth0 -p udp -m udp -s 123.456.789.101 -m comment --comment #DDNSIP -j ACCEPT

Die Kette wird mit Parameter -A (Append) automatisch bei der ersten ausführung angehängt. Nicht zu vergessen ist, das Script ausführbar machen:

chmod +x /usr/bin/allow_myhost.sh

Die Quellen IP-Adresse wird automatisch alle 15 Minuten aufgelöst. Die iptables-Kette erlaubt das UDP Protokoll, dieses beispielsweise einem IP-Telefon ermöglicht mit der PBX zu kommunizieren. Die Regel kann beliebig angepasst werden, wobei die Kommentar option –comment vorhanden sein muss.

Für die kontinuierliche Aktualisierung erstellt man ein Cron-Job:

*/15 * * * * root /usr/bin/allow_myhost.sh >/dev/null 2>&1

Dieser Beitrag ist auch auf gist donkey/allow_myhost.md

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 5 / 5. Anzahl Bewertungen: 1

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Es tut uns leid, dass der Beitrag für dich nicht hilfreich war!

Lasse uns diesen Beitrag verbessern!

Wie können wir diesen Beitrag verbessern?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.