Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:android_-_dns-problem

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, im heimischen Netzwerk befindlichen DNS-Server. (ISC BIND).

Firewall Verstöße aus /var/log/messages - (nur relevanter Ausschnitt):

...
Jan  3 22:10:14 rechner01 kernel: FORWARD Defend IN=eth0 OUT=eth0 SRC=192.168.0.12 DST=8.8.8.8 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=UDP SPT=38163 DPT=53 LEN=40
Jan  3 22:10:14 rechner01 kernel: FORWARD Defend IN=eth0 OUT=eth0 SRC=192.168.0.12 DST=8.8.4.4 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=UDP SPT=34705 DPT=53 LEN=40
...

Problem

Ich übermittle meinem Mobiltelefon mit meinem DHCP-Server im heimischen Netzwerk beim beziehen einer IP-Adresse auch den DNS-Server-Eintrag. (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";
...

:!: Dies wird jedoch von meinem Mobiltelefon IGNORIERT !!!

Aufgrund dieser vielleicht gewollten oder auch ungewollten Ignoranz meines Mobiltelefons, wollte ich die Firewall Verstöße nicht länger sehen und auch mein Mobiltelefon im heimischen Netzwerk, meinen DNS-Server ISC BIND ausschließlich nutzen lassen.

Die möglichen Lösungen für dieses Problem sind

  1. Transparenter DNS-Server, realisiert durch NAT auf meinem Gateway/Router via iptables!
  2. Transparenter DNS-Server, realisiert durch NAT auf einen DNS-Server via iptables!

iptables: NAT-Gateway/Router

:!: HINWEIS - Beispiel mit DNS-Server auf dem Gateway/Router!

Im folgendem Beispiel sind nachfolgendem Ergänzungen im Regelsatz von iptables durchzuführen, um

  1. Alle DNS-Anfragen TCP/UDP auf Port 53 umzuleiten
  2. Dies transparent (unsichtbar) für das jeweilige Endgerät
  3. 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

Eine erneute Abfrage des iptables-Regelwerts, sollte dann in etwa 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  --  eth0   *       192.168.0.0/24       0.0.0.0/0           tcp dpt:53 to:192.168.0.1:53
2        0     0 DNAT       udp  --  eth0   *       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  --  eth0   *       192.168.0.0/24       0.0.0.0/0           tcp dpt:53 to:192.168.0.1:53
2        0     0 DNAT       udp  --  eth0   *       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  ]

iptables: DNS-Server

:!: HINWEIS - Beispiel mit DNS-Server Weiterleitung!

Im folgendem Beispiel sind nachfolgendem Ergänzungen im Regelsatz von iptables durchzuführen, um

  1. Alle DNS-Anfragen TCP/UDP auf Port 53 umzuleiten
  2. Dies transparent (unsichtbar) für das jeweilige Endgerät
  3. Auf einen beliebigen DNS-Server - :!: HIER –> 192.168.0.20 !!!

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

UND

# iptables -L FORWARD -nv --line-numbers
Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     all  --  +      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 DROP       all  --  +      *       0.0.0.0/0            0.0.0.0/0           state INVALID
3        0     0 ACCEPT     icmp --  +      *       0.0.0.0/0            0.0.0.0/0           icmp type 255

Nachfolgende Befehle, fügen folgende iptables-Regeln dem iptables-Regelwerk ab der Position 1 hinzu, ohne das der Paketfilter angehalten werden muss:

  • -A FORWARD -s 192.168.0.0/24 -d 192.168.0.20/32 -i eth0 -p tcp -m tcp --dport 53 -m state --state NEW -j ACCEPT
  • -A FORWARD -s 192.168.0.0/24 -d 192.168.0.20/32 -i eth0 -p udp -m udp --dport 53- m state --state NEW -j ACCEPT

und hier die Befehle:

# iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.0.20/32 -i eth0 -p tcp -m tcp --dport 53 -m state --state NEW -j ACCEPT
# iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.0.20/32 -i eth0 -p udp -m udp --dport 53- m state --state NEW -j ACCEPT

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  --  eth0   *       192.168.0.0/24       0.0.0.0/0           tcp dpt:53 to:192.168.0.20:53
2        0     0 DNAT       udp  --  eth0   *       192.168.0.0/24       0.0.0.0/0           udp dpt:53 to:192.168.0.20: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

UND

# iptables -L FORWARD -nv --line-numbers
Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     all  --  +      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 DROP       all  --  +      *       0.0.0.0/0            0.0.0.0/0           state INVALID
3        0     0 ACCEPT     icmp --  +      *       0.0.0.0/0            0.0.0.0/0           icmp type 255
4        0     0 ACCEPT     tcp  --  eth0   *       192.168.0.0/24       192.168.0.20        tcp dpt:53 state NEW
5        0     0 ACCEPT     udp  --  eth0   *       192.168.0.0/24       192.168.0.20        udp dpt:53 state NEW

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  --  eth0   *       192.168.0.0/24       0.0.0.0/0           tcp dpt:53 to:192.168.0.20:53
2        0     0 DNAT       udp  --  eth0   *       192.168.0.0/24       0.0.0.0/0           udp dpt:53 to:192.168.0.20:53
...

UND

an Position 4 und Postition 5 zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):

...
4        0     0 ACCEPT     tcp  --  eth0   *       192.168.0.0/24       192.168.0.20        tcp dpt:53 state NEW
5        0     0 ACCEPT     udp  --  eth0   *       192.168.0.0/24       192.168.0.20        udp dpt:53 state NEW
...

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  ]
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/android_-_dns-problem.1388827262.txt.gz · Zuletzt geändert: 2014/01/04 10:21 von klaus