Mit IPv4 konnten Sie einem Host früher eine statische lokale IP-Adresse im LAN zuweisen und mithilfe einer Firewall-Regel der Firewall/des Routers einen Port der (möglicherweise dynamischen) internetseitigen IP-Adresse, die vom Netzwerk verwendet wird, an einen Port dieses bestimmten Hosts weiterleiten. Dabei diente die statische LAN-IPv4-Adresse des Hosts als stabile Methode zur Identifizierung des Hosts in der Firewall-Regel.
Aber mit IPv6 verwendet jeder Host echte, routbare Internet-IPs, sodass der eingehende Datenverkehr für den Host bereits an diesen adressiert ist und NAT nicht erforderlich ist. Sie müssen jedoch dennoch in der Lage sein, eine Firewall-Regel zu schreiben, die besagt, dass eingehender Datenverkehr zu einem bestimmten Host und Port zugelassen werden soll, während Datenverkehr zu anderen Hosts oder Ports blockiert wird.
Aber wenn das Präfix, unter dem das Netzwerk IPv6-Adressen zuweist, dynamisch ist, wie würden Sie dann in einer Firewall-Regel auf einen bestimmten Host verweisen, um Datenverkehr dorthin zuzulassen? Sie können nicht einfach Datenverkehr an seine IPv6-Adresse zulassen, denn nächste Woche wird er eine IPv6-Adresse mit einem anderen Präfix haben, weil der ISP dem Netzwerk ein anderes Präfix zugewiesen hat.
Wie konfiguriert man dann eigentlich eine Firewall, um eingehenden Datenverkehr zu diesem Host auf einem bestimmten Port zuzulassen? Es ip6tables
sieht so aus, als gäbe es eine --dest
Option zum Abgleichen nach Ziel, aber damit kann man anscheinend nur eine vollständige Adresse eingeben und nicht z. B. ein Suffix der Adresse, das man für einen Host statisch halten kann. Aus der Manpage:
[!] -s, --source address[/mask][,...]
Source specification. Address can be either a network name, a
hostname, a network IP address (with /mask), or a plain IP ad‐
dress. Hostnames will be resolved once only, before the rule is
submitted to the kernel. Please note that specifying any name
to be resolved with a remote query such as DNS is a really bad
idea. The mask can be either an ipv4 network mask (for ipta‐
bles) or a plain number, specifying the number of 1's at the
left side of the network mask. Thus, an iptables mask of 24 is
equivalent to 255.255.255.0. A "!" argument before the address
specification inverts the sense of the address. The flag --src
is an alias for this option. Multiple addresses can be speci‐
fied, but this will expand to multiple rules (when adding with
-A), or will cause multiple rules to be deleted (with -D).
[!] -d, --destination address[/mask][,...]
Destination specification. See the description of the -s
(source) flag for a detailed description of the syntax. The
flag --dst is an alias for this option.
Gibt es eine Möglichkeit, dies mit zu handhaben ip6tables
? Gibt es eine andere Ebene darüber ip6tables
, die Regeln generieren soll, die sich ändern, wenn das Netzwerk neu nummeriert wird, das tatsächlich jeder verwendet? Gibt es eine Art ip6tables
Plugin, mit dem ich den Datenverkehr zuordnen kann, der an einen bestimmten Host geht, selbst wenn sich die Netzwerknummer ändert? Gehen andere Betriebssystem-Firewalls anders damit um?
Antwort1
ip6tables
akzeptiert eine Bitmaske für die Adresse. Anders als bei iptables
und IPv4 müssen diese Bits nicht unbedingt alle am Anfang der Adresse stehen, so etwas wie das hier sollte also gut funktionieren:
ip6tables -A INPUT -d ::1234:56ff:fe78:90ab/::ffff:ffff:ffff:ffff -j ACCEPT
Dadurch würden ip6tables alle Pakete akzeptieren, die an eine IPv6-Adresse gehen, die auf endet ::1234:56ff:fe78:90ab
, unabhängig vom Präfix.