Dies ist eine alte Version des Dokuments!
Android - DNS-Problem
Als ich am Wochenende die Firewall Verstöße auf meinem Gateway/Router überprüfte, viel mir auf, dass mein Mobiltelefon ständig versuchte die DNS-Namensauflösung gegen die DNS-Server von Google
8.8.8.8
8.8.4.4
durchzuführen, und nicht gegen meinen eignen im heimischen Netzwerk befindlichen DNS-Server (ISC BIND).
Obwohl ich meinem Mobiltelefon mit meinem eigenen DHCP-Server beim beziehen einer IP-Adresse auch den DNS-Server-Eintrag übermittle. (Auszug aus meiner ISC DHCP-Konfiguration):
... subnet 192.168.0.0 netmask 255.255.255.0 { option broadcast-address 192.168.0.255; option domain-name "tachtler.net"; option domain-name-servers 192.168.0.1; option domain-search "tachtler.net"; ...
Aufgrund dieser vielleicht gewollten oder auch ungewollten Ignoranz meines Mobiltelefons, wollte ich die Firewall Verstöße nicht länger sehen.
Ein mögliche Lösung für dieses Problem ist ein
- Transparenter DNS-Server, realisiert durch NAT auf meinem Gateway/Router via
iptables
!
iptables: NAT-Gateway
HINWEIS - Beispiel mit DNS-Server auf dem Gateway/Router!
Im folgendem Beispiel sind nachfolgendem Ergänzungen im Regelsatz von iptables
durchzuführen, um
- Alle DNS-Anfragen TCP/UDP auf Port 53 umzuleiten
- Dies transparent (unsichtbar) für das jeweilige Endgerät
- Auf einen auf dem Gateway/Router laufenden DNS-Server
durchzuführen.
Um die aktuellen iptables
-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# iptables -t nat -L -nv --line-numbers Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination
Nachfolgende Befehle, fügen folgende iptables
-Regeln dem iptables
-Regelwerk ab der Position 1 hinzu, ohne das der Paketfilter angehalten werden muss:
-A PREROUTING -s 192.168.0.0/24 -i eth0 -p tcp -m tcp --dport 53 -j DNAT --to-destination 192.168.0.1:53
-A PREROUTING -s 192.168.0.0/24 -i eth0 -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.0.1:53
und hier die Befehle:
# iptables -A PREROUTING -s 192.168.0.0/24 -i eth0 -p tcp -m tcp --dport 53 -j DNAT --to-destination 192.168.0.1:53 # iptables -A PREROUTING -s 192.168.0.0/24 -i eth0 -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.0.1:53
Ein erneute Abfrage des iptables
-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:
# iptables -t nat -L -nv --line-numbers Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 DNAT tcp -- eth1 * 192.168.0.0/24 0.0.0.0/0 tcp dpt:53 to:192.168.0.1:53 2 142 8658 DNAT udp -- eth1 * 192.168.0.0/24 0.0.0.0/0 udp dpt:53 to:192.168.0.1:53 Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination
Die neuen Zeilen sind an Position 1 und Postition 2 zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 1 0 0 DNAT tcp -- eth1 * 192.168.0.0/24 0.0.0.0/0 tcp dpt:53 to:192.168.0.1:53 2 142 8658 DNAT udp -- eth1 * 192.168.0.0/24 0.0.0.0/0 udp dpt:53 to:192.168.0.1:53 ...
Um diese iptables
-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]