# Alternative zu dnsmasq?

## musv

Hi, ich verwende als dnsmasq, da das Programmchen unheimlich praktisch ist. 

Ich brauche das Teil für folgende Zwecke:

DHCP-Server für mein angestöpseltes Notebook

DNS-Cache

Ad-Blocker

Für letzteren Punkt enthält meine dnsmasq.conf ca. 1900 Einträge mit Ad-Servern, deren Inhalt ich nicht wirklich sehen will. Jetzt mußte ich mit Erschrecken feststellen, daß eine Konfiguration ohne dnsmasq wesentlich schneller alle möglichen Seiten lädt. Besonders aufgefallen ist das mir jetzt gerade bei www.wallstreet-online.de. Mit dnsmasq braucht der Opera fast 'ne Minute, bis sich die Seite aufgebaut hat (aktuell Arcor-DSL über WLAN). Ohne dnsmasq ist die Seite nach nicht mal 10 Sekunden vollständig da. 

Als Hauptgrund würde ich mal die große Liste der geblockten Server vermuten. Desweiteren konnte ich bisher nicht herausfinden, ob und wenn wo dnsmasq den Cache für die DNS-Einträge hinschreibt. 

Frage daher: 

Gibt's eine Alternative zu dnsmasq, die mir die o.g. Funktionalitäten ebenfalls zur Verfügung stellt? Oder kann ich dnsmasq so konfigurieren, daß die Geschwindigkeit wieder annehmbare Regionen erreicht. Leider hab ich auch nichts gefunden, ob dnsmasq für die zu blockenden Server auch reguläre Ausdrücke schlucken könnte. 

DHCP und Bind will ich nicht verwenden, da der DHCP-Server es nicht wirklich auf die Reihe kriegt, eine resolv.conf auf den Clients zu erstellen. Bei Pdnsd hatte mir die Funktionalität eines DHCP-Servers gefehlt. 

Das Herausfiltern der Ads nur über Browserplugins fällt als Alternative aus. denn da müßte ich auf beiden von mir verwendeten Rechnern Opera, Firefox, Seamonkey und Konqueror sowohl für mein Konto als auch für das Benutzerkonto meiner Frau konfigurieren.

Wie habt ihr diese Problematik gelöst?

----------

## think4urs11

Ist ein Proxy eine Alternative?

Zum Thema blocken per DNS siehe auch 'böse' Webseiten mittels DNS-Server blocken

----------

## TheSmallOne

 *musv wrote:*   

> DHCP und Bind will ich nicht verwenden, da der DHCP-Server es nicht wirklich auf die Reihe kriegt, eine resolv.conf auf den Clients zu erstellen.

 

Die Aussage verstehe ich nicht. Natürlich erstellt dir der DHCP-Server nichts auf den Clients, dafür sind die Clients schon selbst verantwortlich.   :Question: 

----------

## schachti

 *musv wrote:*   

> Besonders aufgefallen ist das mir jetzt gerade bei www.wallstreet-online.de. Mit dnsmasq braucht der Opera fast 'ne Minute, bis sich die Seite aufgebaut hat (aktuell Arcor-DSL über WLAN). Ohne dnsmasq ist die Seite nach nicht mal 10 Sekunden vollständig da.

 

Da muß noch irgendwas anderes schiefgehen. Habe das gerade mit Firefox und aktiviertem AdblockPlus probiert, und die Seite war nach < 3 Sekunden komplett da.

 *musv wrote:*   

> 
> 
> Das Herausfiltern der Ads nur über Browserplugins fällt als Alternative aus. denn da müßte ich auf beiden von mir verwendeten Rechnern Opera, Firefox, Seamonkey und Konqueror sowohl für mein Konto als auch für das Benutzerkonto meiner Frau konfigurieren.
> 
> 

 

Nur als Hinweis: Zumindest für AdblockPlus gibt es im Netz vordefinierte Filterlisten. Ich nutze selbst so eine Liste, und die Anzahl von Werbebannern, die dem Filter innerhalb eines ganzen Jahres entgangen ist und dennoch angezeigt wurde, kann ich an einer Hand abzählen. Das Problem ist, dass Du damit nur Firefox + Seamonkey für Dich und Deine Frau erschlägst, also nur die Hälfte der verwendeten Browser-User-Kombinationen.

Das Filtern der Werbung könnte man auch mit Privoxy machen (habe das allerdings noch nie selbst probiert), als DNS-Cache kommt bei mir djbdns zum Einsatz.

----------

## Knieper

 *musv wrote:*   

> Als Hauptgrund würde ich mal die große Liste der geblockten Server vermuten.

 

Noe, das funktioniert hier auch mit 2000 Eintraegen auf alten Rechnern ohne Probleme.

----------

## musv

 *TheSmallOne wrote:*   

>  *musv wrote:*   DHCP und Bind will ich nicht verwenden, da der DHCP-Server es nicht wirklich auf die Reihe kriegt, eine resolv.conf auf den Clients zu erstellen. 
> 
> Die Aussage verstehe ich nicht. Natürlich erstellt dir der DHCP-Server nichts auf den Clients, dafür sind die Clients schon selbst verantwortlich.  

 

Ich hatte mal mit dem DHCP-Server aus dem dhcp-Paket rumgespielt. Ich wollte, wie man es von DHCP gewohnt ist, ganz normal, daß der Client seine resolv.conf überschrieben bekommt mit den Nameservern vom DHCP-Server. Und beim DHCP-Server wollte ich damals einfach die Nameserver forwarden, d.h. die Nameserver, die ich per DHCP vom Provider empfange wollte ich an den Client forwarden. dnsmasq kann das, der DHCP-Server nicht. Die resolv.conf forwarden geht mit DHCP - allerdings mehr schlecht als recht. Man muß als Zusatz auf dem Client noch das "resolvconf-gentoo"-Paket installieren. Das war mir dann irgendwann mal zu blöd. Siehe dazu Thread hier: https://forums.gentoo.org/viewtopic-t-592751.html

Mit bind wollte ich nicht erst rumspielen, da ich eigentlich keinen eigenen DNS-Server brauche. dnsmasq hatte diese Aufgabe perfekt erfüllt, bis mir jetzt eben das Problem mit den unterträglichen Verzögerungen aufgefallen ist. 

Update: Bin jetzt wieder zurück in der Uni. Hier tritt die Verzögerung komischerweise nicht auf. War nur hinter dem DSL-Modem. Eventuell lag's da nur am DNS-Server vom Provider. Was mich jetzt aber zu der Annahme führt, daß mir das Caching bei dnsmasq etwas suspekt erscheint. 

 *Think4UrS11 wrote:*   

> Ist ein Proxy eine Alternative? Zum Thema blocken per DNS siehe auch 'böse' Webseiten mittels DNS-Server blocken

 

Das Howto hatte ich als Vorlage benutzt. Eventuell probier ich mal dnsmasq in Verbindung mit pdnsd.

----------

## musv

Hab jetzt das System umgestellt.

Pdsnd als DNS-Cache und Adblocker

Dhcpd zum Übermitteln der IP an das Notebook

Vorteil: Die Seiten werden jetzt erheblich schneller geladen. Adblock funktioniert durch pdnsd problemlos und schnell. 

Nachteil: Für einen weiteren Rechner im Subnetz könnte ich keinen Nameserver übermitteln, da pdnsd eine feste Adresse braucht. In meinem Fall muß ich in der Config /etc/pdnsd/pdndsd.conf angeben:

```
server_ip = 192.168.0.1
```

Für ein anderes Subnetz keine Chance. Und wenn ich 'ne andere IP (z.B. meine externe IP), hab ich im Subnetz keine Namensauflösung mehr. 

Egal, solange keine weiteren Rechner im Subnetz vorhanden sind, funktioniert alles. 

Irgendwie werd ich das Gefühl nicht los, daß dnsmasq die DNS-Einträge nicht zwischenspeichert (Cache).

----------

## think4urs11

 *musv wrote:*   

> Nachteil: Für einen weiteren Rechner im Subnetz könnte ich keinen Nameserver übermitteln, da pdnsd eine feste Adresse braucht.

 

Frage unklar, bitte umformulieren.

 *musv wrote:*   

> Irgendwie werd ich das Gefühl nicht los, daß dnsmasq die DNS-Einträge nicht zwischenspeichert (Cache).

 

Gar nicht mal schlecht getippt. Du hast ca. 1900 Einträge, die default-Größe des Caches bei dnsmasq beträgt aber nur 150 Einträge was nun wirklich nicht sehr viel ist - evtl. würde ein passend gesetztes cache-size in der Konfig das ursprüngliche Problem auch beheben.

----------

## musv

 *Think4UrS11 wrote:*   

>  *musv wrote:*   Nachteil: Für einen weiteren Rechner im Subnetz könnte ich keinen Nameserver übermitteln, da pdnsd eine feste Adresse braucht. 
> 
> Frage unklar, bitte umformulieren.

 

Ok, ich versuchs mal. Mein Heimnetz ist so aufgebaut, daß ich einen normalen Desktoprechner hab (AthlonXP) und ein Notebook. Das Notebook befindet sich im Subnetz 192.168.0.0. Manchmal kommt es aber auch vor, daß ich noch eine 2. Netzwerkkarte in den Rechner hab, wo dann ein 2. Rechner dran steckt. Das Subnetz ist dan 192.168.1.0. Bisher hab ich es noch nicht auf die Reihe bekommen, die beiden Netzwerkkarten in ein Subnetz einzuordnen. Vielleicht bin ich einfach zu blöd dafür. Mit 2 Subnetzen funktionierts jedenfalls. 

```

global {

        perm_cache=2048;

        cache_dir="/var/cache/pdnsd";

#       pid_file = /var/run/pdnsd.pid;

        run_as="pdnsd";

        server_ip = 192.168.0.1;  # Use eth0 here if you want to allow other

#       server_ip = 127.0.0.1;  # Use eth0 here if you want to allow other

                                # machines on your network to query pdnsd.

        status_ctl = on;

        paranoid=off;       # This option reduces the chance of cache poisoning

                           # but may make pdnsd less efficient, unfortunately.

        query_method=udp_tcp;

        min_ttl=15m;       # Retain cached entries at least 15 minutes.

        max_ttl=1w;        # One week.

        timeout=10;        # Global timeout option (10 seconds).

}

```

Bei server_ip kann ich eine IP oder ethX angeben. Und genau diese IP und keine andere kann ich dann aus dem entsprechenden Subnetz ansprechen. D.h. aus 192.168.0.X funktioniert das ganze prächtig. Aus 192.168.1.X bekomm ich dann keine Namensauflösung, selbst wenn ich in der resolv.conf des Rechners in Subnetz 192.168.1.0 die IP des Nameservers manuell auf 192.168.0.1 ändere. Ich hab es auch mal getestet, meine externe (ist statisch) IP in der pdnsd.conf einzutragen und die jeweilige resolv.conf der Rechner im Subnetz anzupassen, d.h. Nameserver auf externe IP. Da krieg ich dann überhaupt keine Namensauflösung in den Subnetzen. 

Bei dnsmasq war das egal. Die Namensauflösung hat einfach geklappt, indem ich als Nameserver 192.168.0.1 bzw. 192.168.1.1 in der resolv.conf des jeweiligen Subnetzes angegeben hab. Anhand der config-Datei von pdnsd vermute ich daher, daß man nur 1 Subnetz betreiben kann. Ob man in das Feld "server_ip" beliebig viele IPs eintragen kann, hab ich nicht ausprobiert, dann könnte es eventuell gehen. Dahingehend war das Ganze keine Frage sondern eher eine Feststellung, wobei ich nicht weiß, ob die Begrenzung der Funktion bei pdsnd oder bei mir liegt.   :Confused: 

 *Think4UrS11 wrote:*   

>  *musv wrote:*   Irgendwie werd ich das Gefühl nicht los, daß dnsmasq die DNS-Einträge nicht zwischenspeichert (Cache). 
> 
> Gar nicht mal schlecht getippt. Du hast ca. 1900 Einträge, die default-Größe des Caches bei dnsmasq beträgt aber nur 150 Einträge was nun wirklich nicht sehr viel ist - evtl. würde ein passend gesetztes cache-size in der Konfig das ursprüngliche Problem auch beheben.

 

Ok, die Option stand in meiner config tatsächlich nicht drin. Hab sie mal reingenommen:

```
# filter what we send upstream

domain-needed

bogus-priv

filterwin2k

cache-size=10000

# Change this line if you want dns to get its upstream servers from

# somewhere other that /etc/resolv.conf

resolv-file=/etc/resolv.conf.dnsmasq

# allow /etc/hosts and dhcp lookups for local domains

#local=/lan/

domain=csn.tu-chemnitz.de hrz.tu-chemnitz.de informatik.tu-chemnitz.de

# If you want dnsmasq to listen for requests only on specified interfaces

# (and the loopback) give the name of the interface (eg eth0) here.

# Repeat the line for more than one interface.

#interface=eth0

# Or you can specify which interface _not_ to listen on

#except-interface=eth0

# Uncomment this to enable the integrated DHCP server, you need

# to supply the range of addresses available for lease and optionally

# a lease time. If you have more than one network, you will need to

# repeat this for each network on which you want to supply DHCP

# service.

dhcp-range=192.168.0.2,192.168.0.254,255.255.255.0,12h

dhcp-range=192.168.1.2,192.168.1.254,255.255.255.0,12h

# If this line is uncommented, dnsmasq will read /etc/ethers and act

# on the ethernet-address/IP pairs found there just as if they had

# been given as --dhcp-host options. Useful if you keep

# MAC-address/host mappings there for other purposes.

read-ethers

...

address=/101com.com/0.0.0.0

address=/101order.com/0.0.0.0

address=/103bees.com/0.0.0.0

...+knapp 2000 adblock-Einträge
```

Ergebnis: dnsmasq gestartet. www.wallstreet-online.de aufgerufen. Und die Seite brauchte wieder ewig zum Laden. dnsmasq wieder beendet, pdnsd und dhcpd gestartet, und es ging wieder spürbar wesentlich schneller. An meiner Internetverbindung kann es nicht liegen, da ich im Uninetz eine 100MBit-Anbindung hab und auch die Uni-DNS-Server ohne große Latenz ansprechbar sind. 

Theorie immer noch: dnsmasq cached nichts. Ich hab keine Cache-Datei gefunden. Beim 2maligen Laden einer Seite braucht es beide Male ewig lang. D.h. von einer Cache-Wirkung ist rein gar nichts zu spüren. Im Gegenteil, die Seiten laden langsamer als ohne dnsmasq. Ich denke immer noch, daß dnsmasq Probleme mit der Umleitung von unerwünschten Seiten auf localhost hat.

----------

