[Fli4l_dev] IPv6 Firewall-Fragen

Christoph Schulz fli4l at kristov.de
Fr Apr 1 22:48:51 CEST 2016


Hallo!

Matthias Taube schrieb:

> Hi,
> 
> nachdem Dank Christoph nun bei mir IPv6 von der Telekom auf dem Router
> läuft, habe ich noch ein paar Firewall-Fragen.
> 
> IPv6 ist auf dem externen (ppp) und den internen Interfaces konfiguriert:
>> 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
>>     inet6 2003:77:6a5a:8722::1/64 scope global dynamic
>> 6: eth0.100 at eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
>> qlen 1000
>>     inet6 2003:77:6a5a:8701::1/64 scope global dynamic
>> 7: eth0.200 at eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
>> qlen 1000
>>     inet6 2003:77:6a5a:8727::1/64 scope global dynamic
>> 11: ppp1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 state
>> UNKNOWN qlen 3
>>     inet6 2003:77:6a7f:da7d::1/64 scope global mngtmpaddr dynamic
> 
> und auch von außen mit ping6 erreichbar, allerdings hat die
> ppp1-Schnittstelle keine IPv6 Adresse aus meinem per dhcpv6 bezogenen
> Prefix.

Das ist korrekt. Die ppp-Schnittstelle hat/braucht normalerweise nur eine 
Link-Local-Adresse (aus dem Netz fe80::/7). Manche Provider (wie bei dir) 
verteilen über die PPP-Links auch noch /64er "Tunnel"-Adressen via Router 
Advertisements (RA), in deinem Beispiel die Adresse 2003:77:6a7f:da7d::1. 
Diese Adresse ist aber für gewöhnlich zu nichts zu gebrauchen.

> 1. Erwischt nun eine Regel wie
>> PF6_FORWARD_2='if:any:{dhcpv6} any [any]:2049 DROP BIDIRECTIONAL NOLOG'
> (bzw. die vergleichbare INPUT Regel) auch den Verkehr, welcher über die
> ppp1 Schnittstelle an die Adresse außerhalb des dhcpv6-Prefix geht?

{dhcpv6} wird in einer if:-Regel in die Schnittstelle des Circuits "dhcpv6" 
übersetzt, was bei dir ppp1 ist. Die Antwort lautet also ja. Das Präfix ist 
irrelevant, weil du ja nur "any" in der Regel verwendest.

> 2. Welche Adresse soll ich nun im Nameserver für meine Domain eintragen
> - eine Adresse aus dem bezogenen Prefix (z.B. von eth0.100) oder die
> Adresse des ppp1 - Device?

Ersteres -- du musst immer eine Adresse aus dem DHCPv6-Präfix nehmen, denn 
nur diese Adressen werden extern geroutet. (Die von ppp1-Gerät wird zwar 
auch geroutet, aber damit kannst du immer nur den fli4l erreichen und keine 
Geräte hinter dem fli4l, da diese Adresse bzw. der Adressraum für den Router 
und seinen Peer reserviert ist.)

> 3. Wie kann ich die IPv6 Adresse in Scripten auf dem fli4l abfragen? Für
> IPv4 gibt es den schönen Einzeiler
>> my_ipv4=`ip -4 a s ppp1 | sed -ne
>> 's/^[[:space:]]*inet[[:space:]]\([0-9\.]*\).*/\1/p'`

Uaaahhh. Parsen ("Screenscraping") von ip-Ausgaben ist verpönt, das Format 
bleibt auch nicht unbedingt stabil. Allerdings bleibt dir hier nichts 
anderes übrig, wenn du die Adresse von ppp1 ermitteln willst, obwohl ich 
nicht weiß, wofür das gut sein soll. Falls du eher die offizielle IPv6-
Adresse des Routers haben willst, die etwa über IPV6_NET_1 konfiguriert 
wird, dann würde ich in deinem Skript Folgendes schreiben:

  . /etc/rc.cfg                # Konfiguration einbinden
  . /etc/boot.d/base-helper    # grundlegende Hilfsfunktionen
  . /etc/rc.d/base-helper.ipv6 # IPv6-spezifische Hilfsfunktionen
  [...]
  translate_ip6_net IPV6_NET_1_IPADDR
  echo "Die Host-Adresse lautet: $res"
  translate_ip6_net IPV6_NET_1
  echo "Die Netzwerk-Adresse lautet: $res"

Diese Funktion wird auch von anderem fli4l-Code benutzt, um solche 
Transformationen vorzunehmen.


Viele Grüße,
-- 
Christoph Schulz
[fli4l-Team]



Mehr Informationen über die Mailingliste Fli4l_dev