Eingehenden IPv6-Verkehr zu einem Host und Port zulassen, wenn das IPv6-Präfix dynamisch ist?

Eingehenden IPv6-Verkehr zu einem Host und Port zulassen, wenn das IPv6-Präfix dynamisch ist?

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 ip6tablessieht so aus, als gäbe es eine --destOption 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 ip6tablesPlugin, 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

ip6tablesakzeptiert eine Bitmaske für die Adresse. Anders als bei iptablesund 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.

verwandte Informationen