[Gelöst] 7390 Dnsmasq Openvpn, hier Namensauflösung im VPN

sharbich

Neuer User
Mitglied seit
30 Aug 2012
Beiträge
196
Punkte für Reaktionen
3
Punkte
18
Hallo Ihr Lieben,

auf meiner 7390 läuft unter anderen Dnsmasq, Openvpn, Iptables . . ., FW 84.04.91, Stabile Version 1.2.
Weil sich der Dnsmasq mit dem internen DNS Server von AVM nicht verträgt, wird meine Namensauflösung auf einen anderen Port umgeleitet.

rc.custom
PHP:
rport=50053

iptables -t nat -F dns 2>/dev/null
iptables -t nat -N dns

iptables -t nat -D PREROUTING -p tcp --dport 53 -j dns 2>/dev/null
iptables -t nat -I PREROUTING -p tcp --dport 53 -j dns
iptables -t nat -D PREROUTING -p udp --dport 53 -j dns 2>/dev/null
iptables -t nat -I PREROUTING -p udp --dport 53 -j dns

iptables -t nat -D OUTPUT -o lo -p tcp --dport 53 -j REDIRECT --to-port $rport 2>/dev/null
iptables -t nat -I OUTPUT -o lo -p tcp --dport 53 -j REDIRECT --to-port $rport
iptables -t nat -D OUTPUT -o lo -p udp --dport 53 -j REDIRECT --to-port $rport 2>/dev/null
iptables -t nat -I OUTPUT -o lo -p udp --dport 53 -j REDIRECT --to-port $rport

for _if in $(ifconfig | sed -nr 's/^([^ ]*) .*/\1/p' | grep -vE "lo|dsl|:|eth"); do
_ip="$(ifconfig $_if 2>/dev/null | sed -n 's/.*inet addr:\([0-9\.]*\).*/\1/p')"
[ -z "$_ip" ] && continue
iptables -t nat -I dns -i $_if -p tcp -d $_ip -j REDIRECT --to-port $rport
iptables -t nat -I dns -i $_if -p udp -d $_ip -j REDIRECT --to-port $rport
done

das ganze funktioniert soweit.

Nach einem erfolgreichen Verbindungsaufbau über den Linux Openvpn Client und dem anschließenden Update der lokalen resolv.conf Datei, funktioniert die Namensauflösung für das interne Netz nicht.

resolv.conf
Code:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.178.1
nameserver 127.0.0.1
search fritz.box t-mobile.de

Namensauflösung
Code:
root@nmemn01:/# nslookup
> avm.de
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	avm.de
Address: 212.42.244.80
> fritz.box
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
Server:		127.0.0.1
Address:	127.0.0.1#53

** server can't find fritz.box: NXDOMAIN

Ich vermute das die oben genannten Regeln in der rc.custom nicht ganz passen. Ich denke das ich das tun Interface noch hinzufügen muss. Kann mir dazu einer von Euch ein Tip geben, wo ich was im Code einfügen muß?

Code:
for _if in $(ifconfig | sed -nr 's/^([^ ]*) .*/\1/p' | grep -vE "[COLOR="#FF0000"]lo|dsl|:|eth[/COLOR]"); do
_ip="$(ifconfig $_if 2>/dev/null | sed -n 's/.*inet addr:\([0-9\.]*\).*/\1/p')"
[ -z "$_ip" ] && continue

eventuell bei den rot markierten Einträgen?

Leider fange ich gerade erst an Code richtig zu lesen, zu verstehen und zu ändern.

Falls es hilfreich wäre könnte ich die Server und Client *.conf Dateien noch hinzufügen.

Liebe Grüße von Stefan
 
Zuletzt bearbeitet:
Code:
root@nmemn01:/# nslookup
> avm.de
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	avm.de
Address: 212.42.244.80
> fritz.box
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
Server:		127.0.0.1
Address:	127.0.0.1#53

** server can't find fritz.box: NXDOMAIN
Wie sind auf deinem Linux-Client, die Ausgaben für:
Code:
nslookup heise.de 192.168.178.1
nslookup google.de 192.168.200.1
dig @192.168.178.1 fritz.box +short
dig @192.168.178.1 -x 192.168.178.1 +short
dig @192.168.200.1 -x 192.168.200.1 +short
sudo nmap -sSU 192.168.178.1 -p53
sudo nmap -sSU 192.168.200.1 -p53
sudo traceroute -n4T -p 53 192.168.178.1
sudo traceroute -n4T -p 53 192.168.200.1
?
 
Hallo sf3978,

ich hoffe Du kannst mir weiterhelfen.

Code:
root@nmemn01:/# nslookup heise.de 192.168.178.1
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
;; connection timed out; no servers could be reached

root@nmemn01:/# nslookup google.de 192.168.200.1
Server:		192.168.200.1
Address:	192.168.200.1#53

Non-authoritative answer:
Name:	google.de
Address: 173.194.35.152
Name:	google.de
Address: 173.194.35.151
Name:	google.de
Address: 173.194.35.159

root@nmemn01:/# dig @192.168.178.1 fritz.box +short
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53

; <<>> DiG 9.8.1-P1 <<>> @192.168.178.1 fritz.box +short
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
root@nmemn01:/# dig @192.168.178.1 -x 192.168.178.1 +short
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53

; <<>> DiG 9.8.1-P1 <<>> @192.168.178.1 -x 192.168.178.1 +short
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
root@nmemn01:/# dig @192.168.200.1 -x 192.168.200.1 +short
root@nmemn01:/# sudo nmap -sSU 192.168.178.1 -p53

Starting Nmap 5.21 ( http://nmap.org ) at 2013-04-18 15:23 CEST
Nmap scan report for 192.168.178.1
Host is up (0.081s latency).
PORT   STATE         SERVICE
53/tcp closed        domain
53/udp open|filtered domain

Nmap done: 1 IP address (1 host up) scanned in 1.10 seconds
root@nmemn01:/# sudo nmap -sSU 192.168.200.1 -p53

Starting Nmap 5.21 ( http://nmap.org ) at 2013-04-18 15:23 CEST
Nmap scan report for 192.168.200.1
Host is up (0.084s latency).
PORT   STATE  SERVICE
53/tcp closed domain
53/udp open   domain

Nmap done: 1 IP address (1 host up) scanned in 0.54 seconds
root@nmemn01:/# sudo traceroute -n4T -p 53 192.168.178.1
traceroute to 192.168.178.1 (192.168.178.1), 30 hops max, 60 byte packets
 1  192.168.178.1  91.706 ms  219.527 ms  219.546 ms
root@nmemn01:/# sudo traceroute -n4T -p 53 192.168.200.1
traceroute to 192.168.200.1 (192.168.200.1), 30 hops max, 60 byte packets
 1  192.168.200.1  80.984 ms  171.389 ms  171.411 ms
root@nmemn01:/#

Vorab herzlichen Dank und lieben Gruß von Stefan
 
Code:
root@nmemn01:/# nslookup google.de 192.168.200.1
Server:		192.168.200.1
Address:	192.168.200.1#53

Non-authoritative answer:
Name:	google.de
Address: 173.194.35.152
Name:	google.de
Address: 173.194.35.151
Name:	google.de
Address: 173.194.35.159

root@nmemn01:/# sudo nmap -sSU 192.168.200.1 -p53

Starting Nmap 5.21 ( http://nmap.org ) at 2013-04-18 15:23 CEST
Nmap scan report for 192.168.200.1
Host is up (0.084s latency).
PORT   STATE  SERVICE
53/tcp closed domain
53/udp open   domain

Nmap done: 1 IP address (1 host up) scanned in 0.54 seconds
Welches Gerät in deinem (W)LAN, hat die IP-Adresse 192.168.200.1?
Wie sind im Linux-Client, die Ausgaben für:
Code:
dig @192.168.200.1 fritz.box +short
dig @192.168.200.1 -x 192.168.178.1 +short
?

EDIT:

Wie sind auf deinem Linux-Client, die Ausgaben für:
Code:
route -n
ifconfig
 
Zuletzt bearbeitet:
;; reply from unexpected source: 192.168.200.1#53, expected 192.168.178.1#53
Wenn du nicht "noch weiter" den Traffic mit iptables veränderst greift die "normale" IP-Regel, dass als "Source-IP" die IP der "ausgehenden Schnittstelle" genutzt wird. Das ist, sofern es über OpenVPN geht, die IP des TUN-Adapters des Servers, bei dir augenscheinlich die 192.168.200.1.

Trage als DNS nicht den OpenVPN-Server mit dessen LAN-IP (192.168.178.1) sondern mit dessen VPN-IP (192.168.200.1) ein und es sollte gehen.
 
Hallo sf3978,

wie gewünscht die Ausgaben. Allerdings habe ich eine VPV Verbindung aus dem lokalen Netz der FB aufgebaut, deshalb nicht irretiert sein.

Code:
sharbich@nmemn01:~$ dig @192.168.200.1 fritz.box +short

; <<>> DiG 9.8.1-P1 <<>> @192.168.200.1 fritz.box +short
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
sharbich@nmemn01:~$ dig @192.168.200.1 -x 192.168.178.1 +short

; <<>> DiG 9.8.1-P1 <<>> @192.168.200.1 -x 192.168.178.1 +short
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
sharbich@nmemn01:~$ route -n
Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.178.1   0.0.0.0         UG    0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
192.168.178.0   192.168.200.1   255.255.255.0   UG    0      0        0 tun0
192.168.178.0   0.0.0.0         255.255.255.0   U     2      0        0 eth1
192.168.200.0   0.0.0.0         255.255.255.0   U     0      0        0 tun0
sharbich@nmemn01:~$ ifconfig
eth0      Link encap:Ethernet  Hardware Adresse 00:0b:5d:72:31:73  
          UP BROADCAST MULTICAST  MTU:1500  Metrik:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:0 (0.0 B)  TX-Bytes:0 (0.0 B)
          Interrupt:11 Basisadresse:0x3000 

eth1      Link encap:Ethernet  Hardware Adresse 00:0e:35:a9:f2:06  
          inet Adresse:192.168.178.31  Bcast:192.168.178.255  Maske:255.255.255.0
          inet6-Adresse: fe80::20e:35ff:fea9:f206/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX packets:12329 errors:8 dropped:8 overruns:0 frame:0
          TX packets:11056 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:7005073 (7.0 MB)  TX-Bytes:1857420 (1.8 MB)
          Interrupt:11 Basisadresse:0x4000 Speicher:d0201000-d0201fff 

lo        Link encap:Lokale Schleife  
          inet Adresse:127.0.0.1  Maske:255.0.0.0
          inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine
          UP LOOPBACK RUNNING  MTU:16436  Metrik:1
          RX packets:804 errors:0 dropped:0 overruns:0 frame:0
          TX packets:804 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:0 
          RX-Bytes:64416 (64.4 KB)  TX-Bytes:64416 (64.4 KB)

tun0      Link encap:UNSPEC  Hardware Adresse 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet Adresse:192.168.200.101  P-z-P:192.168.200.101  Maske:255.255.255.0
          UP PUNKTZUPUNKT RUNNING NOARP MULTICAST  MTU:1500  Metrik:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:49 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:100 
          RX-Bytes:556 (556.0 B)  TX-Bytes:3183 (3.1 KB)

sharbich@nmemn01:~$

Das ändern des DNS-Server von der IP 192.168.200.1 auf die IP 192.168.200.1, für die Clients im Tunnel hat kein Erfolg gebracht.

Lieben Gruß von Stefan
 
Uii, das ist aber Zufall, dass überhaupt noch was auf der Kiste geht, wenn du dein LAN durch das VPN schickst ;-). Tu das lieber nicht...

EDIT Wie sind denn jetzt die iptables-Regeln auf der Box?
Wenn Anfragen auf dem VPN-Interface "umgeleitet" werden sollen, musst du die oben genannten Regeln um eine für "tun" ergänzen, wenn das zu dem Zeitpunkt noch nicht aktiv war.
Die von die genannte "Shell-Automatik" macht die Umleitung "für alle außer" lo/dsl/eth. Das wäre schon o.k., wenn da tun nicht vorkommt, aber das Skript müsste nach dem Aufbau der VPN-Verbindung angestoßen werden. Ansonsten "fehlt" ein:
Code:
for _if in $(ifconfig | sed -nr 's/^([^ ]*) .*/\1/p' | grep tun ); do
_ip="$(ifconfig $_if 2>/dev/null | sed -n 's/.*inet addr:\([0-9\.]*\).*/\1/p')"
[ -z "$_ip" ] && continue
iptables -t nat -I dns -i $_if -p tcp -d $_ip -j REDIRECT --to-port $rport
iptables -t nat -I dns -i $_if -p udp -d $_ip -j REDIRECT --to-port $rport
done
 
Zuletzt bearbeitet:
Hallo MaxMuster,

meine iptables Regel sind wie in #1 beschrieben.

Lieben Gruß von Stefan
 
Jein. Dort steht, wie du einen Teil der Regeln per Skript generierst, nicht das Ergebnis des Skriptes, also die aktiven Regeln...

Bitte mache ein "iptables -L ...." für die Tabellen.
 
Hallo MaxMuster,

vorweg einmal ein herzliches Dankeschön. Wenn ich mir die Tabellen ansehe, dann kann ich aber nichts erkennen?

Code:
root@fritz:/# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Kann es sein das meine Regeln nicht geladen werden?

Lieben Gruß von Stefan
 
Da fehlt noch ein “-t nat“, um die NAT-table anzuzeigen...
 
Hallo MaxMuster,

sorry, nun aber richtig. Wobei ich sehe da was. Wie kommt es zu der IP-Adresse 192.168.179.1?

Code:
root@fritz:/# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
dns        udp  --  anywhere             anywhere            udp dpt:domain 
dns        tcp  --  anywhere             anywhere            tcp dpt:domain 

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
REDIRECT   udp  --  anywhere             anywhere            udp dpt:domain redir ports 50053 
REDIRECT   tcp  --  anywhere             anywhere            tcp dpt:domain redir ports 50053 

Chain dns (2 references)
target     prot opt source               destination         
REDIRECT   udp  --  anywhere             romesh01.fritz.box  redir ports 50053 
REDIRECT   tcp  --  anywhere             romesh01.fritz.box  redir ports 50053 
REDIRECT   udp  --  anywhere             192.168.179.1       redir ports 50053 
REDIRECT   tcp  --  anywhere             192.168.179.1       redir ports 50053

bzw. warum steht bei domain nicht "fritz.box"?
 
192.168.179.x dürfte das "Guest"-Netz sein. Und wenn die IP nicht im DNS steht (was wohl nur für die 192.168.178.1) , wird die IP der Box genommen (das ist das Ergebnis des "Skriptes" ganz oben).

Da der Tunnel/die IP 192.168.200.1 nicht auftaucht, könnte das der DNS-Abfrage im Wege stehen. Mit dem Skript im Edit von Beitrag #7 könntest du das beheben, wahlweise auch "direkt" eingeben:
Code:
iptables -t nat -I dns -i tun0 -p tcp -d 192.168.200.1 -j REDIRECT --to-port 50053
iptables -t nat -I dns -i tun0 -p udp -d 192.168.200.1 -j REDIRECT --to-port 50053
 
Hallo MaxMuster,

sorry, nun aber richtig. Wobei ich sehe da was. Wie kommt es zu der IP-Adresse 192.168.179.1?
Ist für das guest LAN reserviert. Allerdings nicht aktiv.

Lieben Gruß von Stefan
 
Helfen denn die Tipps von oben? Geht es jetzt?
 
Lieber MaxMuster,

erstmal sorry, das ich mich jetzt erst melde. Mir ist letzte Nacht die Box in die rote Phase gegangen. Linke LED blinkt. Nach einem Recovery und das Einspielen der letzten aktuellen Sicherung, habe ich den Stand erreicht und die Anpassungen aus #7 haben erstmal nicht funktioniert.
Jedoch der iptables Code in #13 brachte den Durchbruch. Echt klasse von Dir. Wer schließt mir das Thema?

Ich wünsche Dir viel Glück und Erfolg in Deinen Leben, ggf. bis bald.

Lieben Gruß von Stefan
 
Den Thread kannst Du selbst als gelöst markieren (editieren des ersten Posts -> Erweitert)
 
Kostenlos!

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
248,528
Beiträge
2,293,588
Mitglieder
378,033
Neuestes Mitglied
chingola