Problem bei Konfiguration fritzbox USG pihole ipv6

Hallo Zusammen,

erstmal ein Kompliment an eine echt gute Lösung! Um mein Problem so genau wie möglich zu beschildern hole ich mal weiter aus.

Ich habe einen Internetanschluss bei Quix und bekomme dort auch eine IPv6. Daran hängt eine Fritzbox 7360. Hinter der Fritzbox hängt mein Unifi Security Gateway (USG) und dahinter mein komplettes Netzwerk mit einem Rasp für pihole (als DNS und DHCP Server). Bisher hatte ich IPv6 komplett deaktiviert.

Resultat: Alle Clients bis auf mein MacBook laden die Seiten super schnell und die Werbung wird blockiert.

Da ich nun das MacBook auch flotter bekommen will habe ich viel recherchiert und herausgefunden das MacOS gerne IPv6 verwenden will. Also habe ich mich durch die Foren gewühlt und mehrere Anleitungen ausprobiert. Allerdings klappt es einfach immer nur zum Teil.

Meine Fritzbox bekommt eine IPv6 vom Anbieter. Die Netzwerkeinstellungen sind wie (z.b. https://community.ubnt.com/t5/UniFi-Routing-Switching/SOLVED-UniFi-Controller-5-7-20-Fritzbox-USG-Switch-IPv6-prefix/td-p/2287449 ) beschrieben:

Auch ipv6-präfixe zulassen, die andere ipv6-router im heimnetz bekanntgeben
ULA immer zuweisen
dhcp-server in der fritzbox aktivieren
dns, präfix und ipv6 zuweisen
präferenz der fritzbox "60" (keine Ahnung warum)

Danach die USG Config wie im Link beschrieben.

Der aktuelle Zustand ist der, das alle Geräte ca. 6 IPv6 Adressen bekommen. 3x mit "2ac...." und 2x "fd51..." und die LL mit "fe80"...

Der Ping auf Google geht von jedem Gerät aus und die Seite "www.wieistmeineip.de" zeigt mir auch meine IPv6 Adresse an. Aber irgendwie habe ich das Gefühl das das nicht sauber über den pihole geht. Ein ping auf den pihole mit der ipv6 adresse geht nicht.

Die Fritzbox die eigentlich die ULA zuweisen sollte mit dem Anfang "fd00" macht das einfach nicht. Der USG bekommt auf dem WAN Adapter einfach nur die öffentliche IPv6 Adresse.

Mein Ziel wäre eigentlich das jedes Gerät eine öffentliche, ULA und die LL ipv6 Adresse hat. Mehr nicht.

Kann gerne heute Abend noch Screenshots von allem machen was interessant ist (einfach sagen was).

Bin um jede Hilfe dankbar.

LG
Alex

EDIT:
Aktuell funktioniert IPv6 von jedem Gerät nach außen. Ich bekomme 2 Adressen mit 2a01:.. allerdings keine ULA. Vermutlich weil nach der Fritzbox noch das USG kommt.

Jetzt die Frage. Da mein Raspberry mit pihole(dnsmasq) sowieso schon mein DHCP Server für IPv4 ist kann der nicht einfach die ULA "verteilen"?

Richtig. Du hast jetzt quasi mehrere Netze.
iNet --> FritzBox --> LAN1 --> USG --> LAN2

Deine FritzBox kann nur Adressen ins LAN1 vergeben.
Das USG übernimmt an der WAN Schnittstelle die Parameter der FritzBox auf der Seite LAN1 und vergibt auf Seite LAN2 die Adressen.
Deine FritzBox hat also keine Ahnung, was im LAN2 abgeht.

IPv6 funktioniert anders als IPv4.
Die Adressen kommen in der Regel nicht vom DHCPv6 Server, sondern der Client fragt den Router, der gibt ihm einen Präfix und damit baut sich der Client dann seine eigene IP Adresse. (vereinfacht dargestellt.)
Aber Dein USG kann ULA Präfixe verteilen.

Hi lichtakrobat,

vielen Dank für deine Antwort. Da der Rasp aktuell mein IPv4 DHCP Server ist wollte ich es eigentlich über den steuern, aber ok. Ich versuche mal rausfinden wie das geht :exploding_head: im USG.

Hier findest Du ein paar Informationen betreffend DHCPv6: DHCPv6 (Stateful Address Configuration)

Hier kannst Du Dir Dein ULA Präfix errechnen lassen: RFC4193 IPv6 Generator

Hier habe ich beschrieben, wie Du Deinem USG einen ULA Präfix hinterlegen kannst:
https://community.ubnt.com/t5/UniFi-Routing-Switching/IPv6-Have-USG-assign-Unique-Local-Address-through-Router/m-p/2391437#M95178

Hi lichtakrobat,

danke für die Lektüre^^

ich habe jetzt die Config im USG mal angepasst. Allerdings über die Controller Webgui weil ich mich mit der .json noch nicht auseinandergesetzt habe. Wenn ich es richtig verglichen habe sollte es aber soweit passen:

"ipv6": {
"dup-addr-detect-transmits": "1",
"router-advert": {
"default-preference": "high",
"managed-flag": "false",
"max-interval": "600",
"name-server": [
"fd8123457:0::"
],
"other-config-flag": "false",
"prefix": {
"fd8123457::/64": {
"autonomous-flag": "true",
"on-link-flag": "true",
"preferred-lifetime": "0",
"valid-lifetime": "86400"
}

Dadurch das ich vorher "Prefix Delegation" gesetzt hat muss dann nicht auch der Präfix auf der gleichen Zahl sein?

Jetzt geht jedenfalls der Ping intern, aber nicht mehr extern mit IPv6 =/.

Gibt es eine Lösung über die Webgui das USG richtig zu konfigurieren oder soll ich das über die Webgui zurückstellen deine zusätzliche Anpassung in der config.json hinzufügen und über den Controller pushen?

Bin für jeden Ansatz dankbar.

LG

Welche Zahl meinst Du? Meinst Du die Präfixlänge? Die wird ja vom Provider festgelegt. Keine Ahnung, was er Dir für ein Netz zur Verfügung stellt.

ULAs kannst Du beim UniFi USG momentan nur via config.json File auf dem Controller konfigurieren. Im Webgui ist das zur Zeit nicht möglich.

Hi lichtakrobat,

mit jeden Step komme ich einen Schritt weiter. Sieht alles gut aus soweit. IPv6 ping geht jetzt lokal und auch ins Inet. Eine letzte Sache finde ich noch ein wenig verwirrend:

In der aktuellen config.json finde ich diesen eintrag:

"name-server": [
"fe80::12:345:3bad" (das ist mein USG)
],

Und auf dem iphone hinterlegt der auch als ipv6 DNS Server das USG. Da muss ich den pi.hole hinterlegen, oder?

EDIT: Ok ich hab es einfach probiert und es sieht soweit echt gut aus.

Was jetzt aktuell "noch" nicht funktioniert ist die Auflösung der Namen im internen Netzwerk per ipv6. Also egal welches Gerät(bis auf den pi) geht nicht per Name. Außerdem ist mein eigentliches Problem (lange Websites auf dem MacBook) auch nicht wirklich besser geworden :sob:.

Vielleicht fällt dir ja noch was ein.

LG Alex

Evtl. hilft Dir das:

Was meinst Du mit langen Websites?
Was besteht denn für ein Problem mit dem MacBook?

Hi lichtakrobat,

sorry da waren die Gedanken weiter als die Finger. Mein Hauptproblem war das einige Websites auf meinem MacBook sehr langsam laden. Auf dem PC und allen Handys (auch iPhones) geht es super schnell. Wenn ich den pihole über die Funktion in der WebGUI für eine Zeit deaktiviere geht es auf dem Mac auch fix. Die IPv6 Aktivierung ist einer der 2 Lösungen die ich gefunden habe. Die andere Lösung zu diesem Problem ist die Firewall über die iptables zu setzen. Das ist bereits erledigt und die Einträge auch persistent auf dem pi.

Als Beispiel für langsame Websites: focus.de und immobilienscout24 wenn man dort eine Suche nach etwas eingibt dauert es ewig die Bilder zu laden.

Und nur auf diesem einen Client ist der Verbindungsaufbau langsam?
Was ist anders als bei den anderen Clients?

Ja nur bei diesem Client. Ich hab mehrfach im Internet dazu recherchiert und mehrere Seiten gefunden auf denen beschrieben wird das MacOS immer IPv6 verwenden will und weil ich hier auch im Troubleshooting davon gelesen hatte habe ich IPv6 jetzt implementiert. Das hat leider das Problem nicht gelöst.

An sich ist nichts besonderes auf dem Client. Als Browser wird Chrome verwendet und sonst ist noch ein Antivirus drauf. Ich habe es auch schon mit einem anderen Browser und mit ausgeschaltetem Antivirus Programm versucht. Beides hat nicht geholfen. Was wie gesagt sehr merkwürdig ist, ist das wenn ich den pihole deaktiviere das Browsing auf dem Mac schnell ist. Also irgendwie hängt das schon zusammen.

Viele Grüße

Die neueren Betriebssysteme bevorzugen in der Regel IPv6. Funktionieren aber auch mit IPv4 ganz normal.
Falls Du IPv6 nur deswegen aktiviert hast, kannst Du es auch wieder deaktivieren. So kannst Du diese Fehlerquelle ausschliessen.
Wenn IPv4 dann richtig funktioniert, dann kannst Du IPv6 immer noch aktivieren.

Danach prüfst Du alle Einstellungen, zB:
LAN USG: x.x.x.1
Subnet: 255.255.255.0
IP Adresse PiHole x.x.x.2

Der Client kriegt dann eine IP per DHCP (Range: x.x.x.100 - x.x.x.120)
Default Gateway: x.x.x.1
Subnet: 255.255.255.0
DNS Primär: x.x.x.2
DNS Sekundär: kein Eintrag

Die Einstellungen musst Du natürlich auf Dein Netzwerk anpassen. Das hier soll nur als Beispiel verstanden werden. Aber Du siehst, wo die Einstellungen identisch sein müssen.

Kriegen jetzt alle Clients die richtigen IP Adressen und DNS Einträge zugewiesen?

Also ipv6 funktioniert ja jetzt soweit und mit ipv4 hatte ich noch nie Probleme. Da stimmt Forward und reverse Lookup sowie die IP Zuweisung. Und ich sehe im Querylog des pihole auch die DNS Anfragen des MacBooks. Ich kann gerne die komplette IP Konfiguration aber auch mal posten wenn du meinst es könnte daran liegen. Da aber das meiste per DHCP kommt sollten dann nicht alle Clients Probleme machen? Und dann würde es ja auch nicht funktionieren wenn ich den pihole über die Webgui deaktiviere, oder?

Wenn ich Dich richtig verstanden habe, dann hast Du IPv6 ja nur eingerichtet, weil das Problem mit IPv4 auftrat.
Somit solltest Du, bevor Du andere Fehlerquellen einbindest, die Probleme unter IPv4 lösen.
Deshalb würde ich IPv6 dekativieren, solange bis die Probleme gelöst sind. Dann kannst Du IPv6 wieder aktivieren. Zumal bei IPv6 plötzlich das USG als DNS auftritt. Das gibt garantiert Probleme....
Als DNS sollte einzig und allein die IP Deines PiHoles eingetragen sein.

Deine IPv4 Konfiguration musst Du nicht posten. Ich möchte nur sicherstellen, dass da alles richtig läuft, die Einträge richtig sind. Nicht dass Dein Client, warum auch immer, plötzlich einen zweiten DNS eingetragen bekommt, die Gateway Adresse plötzlich nicht mehr stimmt, etc.
Prüfen kannst das aber sowieso nur Du, deshalb macht es auch keinen Sinn, das hier zu posten.

Da Dein PiHole ansonsten normal läuft, glaube ich nicht an einen Fehler beim PiHole, sondern vermute den Fehler irgendwo beim Client und dessen DNS Einstellungen.

Schönen guten Abend,

ich habe jetzt die kompletten Einstellungen überprüft und auch IPv6 nochmal komplett deaktiviert. Es ist alles richtig konfiguriert und überall ist nur der pihole als DNS hinterlegt. Außerdem habe ich den Wireshark installiert und mal geschaut was so geht. Alle DNS Anfragen werden an den pihole geschickt.

Was mich wie gesagt sehr verwundert hat ist das es schnell geht wenn der pihole temporär deaktiviert wird. Daher habe ich mir die Requests mal angeschaut. Wenn etwas ge "piholed" wird, erhält der Client als IP die 0.0.0.0 und dort findet der Client nichts. Wenn pihole temporär deaktiviert wird erhält der Client die IP des Werbungsservers. Soweit so gut. Jetzt bin ich hingegangen und habe die lokale hosts Datei auf dem Mac bearbeitet und die Adresse die geblockt wird auf 0.0.0.0 gestellt und den pihole deaktiviert. Gleicher Effekt wie bei aktiviertem pihole!
Letzter Versuch war dann diesen Adserver auf die 127.0.0.1 umzuleiten und nicht auf die 0.0.0.0 in der lokalen hosts Datei. Und siehe da. Ad wird blockiert aber deutlich schnelleres laden der Website.

So wie es aussieht kommt "mein" Mac nicht mit der 0.0.0.0 klar. Wenn jemand eine Idee hat wie ist das lösen kann bin ich echt froh drum. Vielleicht ist der Mac falsch konfiguriert vielleicht kann ich am pihole was einstellen. Bin um jeden Tip dankbar.

EDIT:
Auch beim aufrufen einer Website mit 0.0.0.0 dauert es bis das timeout kommt. bei 127.0.0.1 kommt der timeout sofort.

Viele Grüsse und einen schönen Abend.
Alex

Auch wenn das 1 Jahr her ist: @AyKay was du dort im Screenshot eingestellt hast ist definitiv falsch. Wenn du deine v6-Adresen von der Fritzbox delegiert bekommst, musst du im USG auch "Prefix Delegation" anstelle von "Static" einstellen. Static würde nur zutreffen, wenn du vom Provider einenn statischen Adressbereich zugewiesen bekommen hast.

Was du mit den Einstellungen also gemacht hast: Du hast eine ULA als Internetadresse vergeben, dadurch hat der Ping intern funktioniert, aber natürlich nicht mehr nach außen, da du die "Internet-Einstellungen" für die ULA missbraucht hast. Du musst tatsächlich über die config gehen.

{
        "interfaces": {
                "ethernet": {
                        "eth1": {
                                "ipv6": {
                                        "router-advert": {
                                                "prefix": {
                                                       "fd12:3456:789a:bcde::/64": {
                                                                "autonomous-flag": "true",
                                                                "on-link-flag": "true",
                                                                "preferred-lifetime": "0",
                                                                "valid-lifetime": "86400"
                                                        }

                                                }
                                        }
                                }
                        }
                }
        }
}

Du kannst frei wählen zwischen fc00:* und fdff:* Ich habe der einfachheit halber fd12:3456:789a:bcde genommen.

Gruß