DNS

LinuxWall enthält als speziellen Proxy einen Caching Name Server, BIND 9, der nicht auflösbare DNS-Anfragen direkt an die Root-Server weiterleitet und die Antworten dann im internen Cache für eigene DNS-Auflösungen oder für das LAN bereithält.

Relevante Konfigurationsvariablen sind

Die Variable BROKEN_DNS hat eine spezielle Bedeutung : ist sie auf "yes" gesetzt, werden für DNS-Regeln nicht nur iptables-Kommandos mit Quellport 1024-65535 abgesetzt, sondern auch noch zusätzlich mit Quellport 53. Funktioniert also eine DNS-Anfrage nicht und werden auf dem Protokoll-Schirm F12 Pakete mit Quellport 53 angezeigt, muß man diese Variable aktivieren. Dadurch wird der überwiegende Teil der Windows-Welt abgedeckt. Bei manchen sehr alten Windows-Rechnern gibt es auch Anfragen mit Quellport 137 und Zielport 53, diese Regeln müssen manuell in iptables.pre angegeben werden.

Falls START_NAMED auf "yes" gesetzt ist, werden in /etc/*.*.*.rev die Adreß-Namens-Auflösungen für alle Adressen der Firewall-Schnittstellen (außer ippp*, isdn* und ppp*) erzeugt und in /etc/named.conf diese Dateinamen als Zoneneinträge ergänzt. Die automatische Erzeugung von lokalen DNS-Einträgen ist nur für die erste geschilderte Variante interessant, um Verzögerungen und Timeouts durch externe DNS-Auflösungen von internen Adressen zu vermeiden.

Konfiguration ohne interne Nameserver

Wenn Sie keinen internen Nameserver haben, sollte Ihre DNS-Konfiguration in config.lw2 etwa so aussehen :

# Starte den Caching Name Server
START_NAMED="yes"
# Firewall ist für sich selbst auch Nameserver
DNS="127.0.0.1"
# der Firewall selbst darf Anfragen ins Internet geben, aus dem LAN dürfen Anfragen auf den Firewall kommen
LW2_ACCEPT_UDP_DNS="<INTERNET_ADDR>:<INTERNET_IF>:$ANY:<INTERNET_IF> <LAN>:<LAN_IF>:<LAN_ADDR>:<LAN_IF>"
LW2_ACCEPT_TCP_DNS="$LW2_ACCEPT_UDP_DNS"

<INTERNET_ADDR> ist die (offizielle) IP-Adresse des Firewall-Interfaces, das ans Internet angeschlossen ist, bei variablen IP-Adressen (z.B. bei Dial-In-Zugängen) ist sie "dynamic". <INTERNET_IF> ist der Name des Firewall-Interfaces, das ans Internet angeschlossen ist, also z.B. "eth1".
<LAN> ist der Adressbereich des LANs, also z.B. 192.168.1.0/24.<LAN_IF> ist der Name des Firewall-Interfaces, das ans LAN angeschlossen ist, also z.B. "eth0". <LAN_ADDR> ist die IP-Adresse des Firewall-Interfaces, das ans LAN angeschlossen ist, also z.B. 192.168.1.1.

Die Einträge "<LAN>:<LAN_IF>:<LAN_ADDR>:<LAN_IF>" müssen für jedes LAN-Segment wiederholt werden. Die Angabe der Regel für TCP ist notwendig, da manchmal DNS-Anfragen über UDP mit einer TCP-Verbindung beantwortet werden, wenn die Antwort für UDP zu lang wird.

Die Variable DNS geht als Nameserverteil in die Datei /etc/resolv.conf ein, die Domänensuchreihenfolge und Nameserver für den Server selbst angibt. Davon unabhängig (!) sind DNS-Anfragen, die an den Firewall von außen adressiert werden.

Konfigurieren Sie alle LAN-Rechner so, daß die interne Adresse des Firewalls (also z.B. 192.168.1.1) als Nameserver benutzt wird.

Konfiguration mit internen Nameservern

Wenn Sie interne Nameserver haben, sollte Ihre DNS-Konfiguration in config.lw2 etwa so aussehen :

# Starte den Caching Name Server
START_NAMED="yes"
# Firewall fragt bei den internen Nameservern nach, die internen Nameserver gehen über den Caching Name Server
DNS="<DNSSRVA> <DNSSRVB>"
# der Firewall selbst darf Anfragen ins Internet geben, der DNS-Server darf Anfragen machen
LW2_ACCEPT_UDP_DNS="<INTERNET_ADDR>:<INTERNET_IF>:$ANY:<INTERNET_IF> <DNSSRVA>:<LAN_IF>:<LAN_ADDR>:<LAN_IF> <DNSSRVB>:<LAN_IF>:<LAN_ADDR>:<LAN_IF>"
LW2_ACCEPT_TCP_DNS="$LW2_ACCEPT:UDP_DNS"

Der wesentliche Unterschied besteht nun darin, daß auch vom Firewall zuerst die internen Nameserver befragt werden, die Nameserver wiederum tragen die interne Adresse des Firewall als Forwarder ein. Nur die internen Nameserver sind zu DNS-Anfragen auf dem Firewall berecht