Selektiver DNS Forwarder



  • Hallo,

    ich bin ein absoluter Anfänger, was pfsense angeht und probiere gerade einfach verschiedene Dinge darauf aus.

    Ist es möglich, einen selektiven DNS Forwarder einzurichten? Ich möchte, dass nur bestimmte Domains über alternative DNS Server laufen, alle anderen aber über den regulären.

    also

    • –> normaler DNS
      .domain1. --> DNSx oder DNSy
      sub.domain2.* --> DNSy oder DNSz

    Könnt Ihr mir sagen, wie ich dies einrichten kann? Danke & LG



  • Hi,

    aktiviere den DNS Forwarder und richte für die gewünschten "abartigen" Domains ganz unten am Konfig-Tab "Domain Overrides" ein. Als Angeben reichen normalerweise die gewünschte Domain und die IP des DNS-Servers, von welchem die Info geholt werden soll.


  • Rebel Alliance Moderator

    Gleiches Prinzip funktioniert übrigens unter 2.2 auch mit dem DNS Resolver. Auch hier kann ein einzelner Hostname oder eine komplette Domain an einen gezielten DNS delegiert werden. Sind mehrere DNSe dafür zuständig, dann einfach zwei Einträge mit der gleichen Domain und den verschiedenen Nameservern anlegen (egal ob Forwarder oder Resolver).



  • Danke für die Tipps, ich werde das gleich mal austesten.

    Hat eine der beiden Möglichkeiten irgend einen Vorteil gegenüber der anderen? Oder warum geht das doppelt?


  • Rebel Alliance Moderator

    Es ist nicht doppelt, der Forwarder und Resolver bieten leicht differenzierte Möglichkeiten. dnsmasq (forwarder) wurde aber in neuen Installationen von unbound (resolver) als default ersetzt (u.a. auch weil FreeBSD 10 per default nun mit unbound daher kommt und nicht mehr mit bind9 aktiv).

    dnsmasq ist aber wirklich nur Forwarder und Cache während Unbound ein cachender recursiver DNS Server sein kann(!), somit also wesentlich mehr use cases abdeckt.

    siehe https://en.wikipedia.org/wiki/Comparison_of_DNS_server_software

    Grüße Jens



  • In einem Testszenario (VM) hat dnsmasq / DNS Forwarder wunderbar funktioniert. Jetzt wo ich pfsense auf echter Hardware laufen lassen, über die das gesamte Netzwerk mit dem Internet verbunden ist, klappt das nicht mehr.

    Unter Advanced habe ich die Werte in folgendem Format eingetragen
    address=/hulu.com/155.254.13.13

    Dies funktioniert -zumindest bei GeoBlockern- nicht. Der Anbieter ist dns4me; wenn ich deren Werte lokal (Test-VM mit dnsmasq) eintrage, funktioniert auch alles. Habt Ihr eine Idee, wo der Fehler liegen könnte?


  • Rebel Alliance Moderator

    Und was soll der Eintrag genau tun? Und trägst du das nun in den Forwarder oder Resolver ein?



  • Ich reanimiere dieses Topic nun noch mal, da ich wieder ein wenig Zeit habe, mich mit der Materie zu beschäftigen.

    Mein Anbieter stellt mir eine dnsmasq config im folgenden Format

    address=/secure.netflix.com/155.254.63.159
    address=/cbp-us.nccp.netflix.com/155.254.63.157
    address=/www.netflix.com/155.254.63.150
    address=/bivl.netflix.com/155.254.63.148
    address=/api-eu.netflix.com/155.254.63.147
    address=/cbp-eu.nccp.netflix.com/155.254.63.145
    address=/api.netflix.com/155.254.63.143
    address=/www2.netflix.com/155.254.63.142
    address=/htmltvui-api.netflix.com/155.254.63.117
    address=/cbp.nccp.netflix.com/155.254.63.109
    address=/redirects-eu.nccp.netflix.com/155.254.63.107
    address=/android.nccp.netflix.com/155.254.63.101
    address=/playstation.nccp.netflix.com/155.254.63.100

    oder eine hosts Datei in folgendem Format zur Verfügung

    155.254.63.159 secure.netflix.com
    155.254.63.157 cbp-us.nccp.netflix.com
    155.254.63.150 www.netflix.com
    155.254.63.148 bivl.netflix.com
    155.254.63.147 api-eu.netflix.com
    155.254.63.145 cbp-eu.nccp.netflix.com
    155.254.63.143 api.netflix.com
    155.254.63.142 www2.netflix.com
    155.254.63.117 htmltvui-api.netflix.com

    Dies sind nur kurze Ausschnitte, die eigentlichen Dateien sind sehr lang (und deshalb auch nur sehr schwer als Domain Overrides anzulegen).

    Es gibt zudem eine hostfile API url, sodass sich geänderte Werte automatisiert übernehmen lassen.

    Nun möchte ich a) diese Einstellungen nur für einzelne Geräte im Netzwerk aktivieren (solche, die Medien abspielen) und b) diese Einstellungen den Geräten "aufzwingen"; will heißen, ich kann zwar die pfSense-IP als Proxy nutzen, dies aber nicht bei allen Geräten (z.B. Chromecast). Ist es dennoch möglich, dass pfSense sämtlichen Traffic festgelegter Geräte anhand der Regeln im obigen Format umleitet?

    Ich habe die dnsmasq config im Forwarder sowie im Resolver getestet, beides ohne Erfolg. Könnt Ihr mir sagen, was ich falsch mache bzw. gibt es einen anderen Service, der hierfür vielleicht besser geeignet ist?


  • Rebel Alliance Moderator

    Ahoi,

    es steht dir ja frei deine Clients nach belieben zu konfigurieren. Wenn du die Liste importierst/sonstwie in den Forwarder kloppst, kannst du den Geräten zum Aufzwingen als DNS eben die pfSense geben und allen anderen reichst du per DHCP oder manuell eben einen anderen DNS weiter.

    Ansonsten gäbe es noch die Möglichkeit, das evtl. via OpenDNS zu machen, müsste man aber einlesen (in pfSense deren DNSe eintragen und dort in der WebUI deine Werte zu überschreiben).



  • Ich checke das einfach nicht…

    DNS forwarder

    • Enable DNS forwarder
    • Register DHCP leases in DNS forwarder
    • Static DHCP
    • Query DNS servers sequentially
      Listen Port 53 (leer gelassen)
      Interfaces: All
      Advanced: address=/secure.netflix.com/155.254.63.159
      address=/cbp-us.nccp.netflix.com/155.254.63.157
      (etc.)

    Dann im DHCP server
    DHCP Static Mappings for this interface -> entsprechendes Gerät auswählen

    DHCP: Edit static mapping
    DNS servers: IP von pfSense

    Save und Apply Changes.

    Nun sollte das bestimmte Gerät pfSense als DNS Server nehmen und über dnsmasq entsprechend mitgeteilt bekommen, dass es eben die unter Advanced angegebenen Einstellungen nehmen soll....? Zumindest am Beispiel netflix funktioniert das nicht.

    Der Anbieter bietet alternativ noch die Möglichkeit, seine DNS Server zu nutzen. Die würde ich einfach im General Setup eintragen. Allerdings wollte ich vermeiden, dass sämtlicher Traffic über den Anbieter läuft (lieber 4.2.2.2). Die Variante hat aber zumindest in der Vergangenheit schon mal funktioniert... Oder habe ich einfach nur eine Einstellung nicht richtig aktiviert?



  • Anscheinend wollte ich es einfach nur zu kompliziert ^^

    Wenn ich im DHCP Server einfach den einzelnen Geräten die passenden DNS Server zuweise, funktioniert alles, wie es soll. In diesem Fall wird dnsmasq in pfSense gar nicht benötigt. Dadurch, dass sowieso nur bestimmte Geräte im Netzwerk überhaupt Medien abspielen und daher die speziellen DNS Server nutzen müssen, ist das als quick and dirty Lösung erstmal okay. Schöner wäre es trotzdem, wenn selbst die festgelegten Geräte ausschließlich bei Netflix, Hulu und Co. überhaupt auf diese DNS Server zurückgreifen würden. Dies klappt aber zumindest nicht via DNS forwarder mit advanced rules.

    Da auch für alle möglichen Subdomains (siehe Beispiel im letzten Post) verschiedene Server angesprochen werden, ist es auch ziemlich mühsam, für jeden einzelnen davon per Hand Overrides zu erstellen.

    Naja, für heute läuft das erstmal so, ich befasse mich morgen mal in Ruhe damit. Vielleicht lag es auch daran, dass ich die Verbindungen zwischendurch nicht unterbrochen hatte?? Beispiel: Mac ist via LAN verbunden, trotz mehrmaliger Änderung der DNS Server in pfSense wurden diese nicht übernommen, bis ich das Kabel einmal gezogen und wieder neu verbunden hatte (auch nicht beim Neustart von pfSense)…


  • Rebel Alliance Moderator

    trotz mehrmaliger Änderung der DNS Server in pfSense wurden diese nicht übernommen, bis ich das Kabel einmal gezogen und wieder neu verbunden hatte (auch nicht beim Neustart von pfSense)…

    Das würde nicht überraschen. Du startest zwar den DNS Forwarder durch, aber das Gerät selbst holt sich erst nach Ablauf des DHCP Leases neue Daten vom DHCP Server. Wenn du also dort was verändert hast um den MAC bspw. direkt einen DNS Server zu pushen, dann müsstest du schon manuell das Lease neu holen. (siehe unter Windows das übliche ipconfig /renew)

    Muss allerdings gestehen, dass ich das Problem mit dem "Advanced" nicht ganz verstehe, bzw. warum du den Advanced Block selbst schreibst und nicht den Override Block in der GUI verwendest? Ansonsten kann man das ja recht einfach manuell testen in dem man von einem Client gegen den Forwarder der pfSense einen nslookup/dig macht und prüft, was als Ergebnis zurückkommt. Ich vermute da irgendwie einen Käfer in der Config ;) Aber das ist schwer zu debuggen wenn mans nicht selbst nachbaut :)

    Grüße


Log in to reply