iptables: DNS "weiterleiten"

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
MaLo
Beiträge: 19
Registriert: 15.01.2005 22:20:42
Kontaktdaten:

iptables: DNS "weiterleiten"

Beitrag von MaLo » 05.10.2006 18:23:13

Hallo!

Ich habe einen Rechner, der zwei Netzwerke verbindet. Er fungiert dabei als DNS-Server für das 10.1.0.0/16-Netzwerk.

Allerdings sollen die Rechner 10.1.1.10 und 10.1.1.11 bei DNS-Anfragen auf 10.1.1.1 "weitergeleitet" werden auf 217.x.x.x

Dazu versucht habe ich es mit DNAT, nur kommen die Antworten anscheind nicht durch. Was muss ich tun damits klappt?


Meine bisherigen Rules:

Code: Alles auswählen

iptables -A PREROUTING -t nat -p tcp --dport 53 -s 10.1.1.10 -j DNAT --to-destination 217.x.x.x
iptables -A PREROUTING -t nat -p udp --dport 53 -s 10.1.1.10 -j DNAT --to-destination 217.x.x.x
Vielen Dank für eure Hilfe!

MfG
Matthias

Benutzeravatar
DynaBlaster
Beiträge: 958
Registriert: 25.03.2004 18:18:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DF0://dynablaster.adf

Beitrag von DynaBlaster » 05.10.2006 18:33:38

Ich empfehle dir schon einmal diesen Thread hier: http://www.debianforum.de/forum/viewtopic.php?t=73946

Was sagt denn

Code: Alles auswählen

iptables -t filter -L -n
?

Wenn die Default-Policy der FORWRAD-CHAIN auf DROP steht, musst du den Traffic hier explizit erlauben ?
Ist ip_forwarding aktiviert ?
Klappen pings von dem einen in das andere Netz ?
Kennt der Rechner 217.x.x.x den Weg "zurück" ins Netz 10.1.1.0/16 (Stichwort Route) ?

MaLo
Beiträge: 19
Registriert: 15.01.2005 22:20:42
Kontaktdaten:

Beitrag von MaLo » 05.10.2006 18:59:01

Ich glaube die Route ist das Problem ^^

Hab ein DSL-Router, mit dem Netzwerk 192.x.x.x
An diesem Router angescjlossen ist der o.g. Server mit zwei Netzwerkkarten, eine für den Router halt und eine für einen Router ins andere Netzwerk (10.1.0.0)

Wenn ein Client des 10er Netzerks nun ne Anfrage sendet antwortet normalerweise 10.1.1.1 mit dem bei Ihm eingetragenen Daten, bis auf die 2 oben genannten Clients, deren Antwort soll dann "echt" hergeholt werden...

Die Anfrage scheint rauszugehen, nur kommt die Antwort nicht mehr zurück ^^ (Logs 217.x.x.x)

Wie krieg ich das hin?

Benutzeravatar
herrchen
Beiträge: 3257
Registriert: 15.08.2005 20:45:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von herrchen » 05.10.2006 19:08:04

MaLo hat geschrieben: Wenn ein Client des 10er Netzerks nun ne Anfrage sendet antwortet normalerweise 10.1.1.1 mit dem bei Ihm eingetragenen Daten, bis auf die 2 oben genannten Clients, deren Antwort soll dann "echt" hergeholt werden...
kannst du das genauer beschreiben?
das müsste man doch mit "bind" (verwendest du doch, oder?) lösen können.

herrchen

MaLo
Beiträge: 19
Registriert: 15.01.2005 22:20:42
Kontaktdaten:

Beitrag von MaLo » 05.10.2006 19:20:26

10.1.1.1 ist ja DNS-Server und Gateway in einem für alle 10.1.*.*-Rechner.

Der DNS-Server antwortet auch korrekt wenn man eine Domain anfordert. Nun sollen aber bestimmte Rechner (deren IPs vorher nicht feststehen, aber per Script in iptables eingetragen werden können) nicht die Resultate von 10.1.1.1 bekommen, sondern von 217.x.x.x. Da diese Clients aber immernoch 10.1.1.1 ansprechen (die wissen nix von ihrem Glück "echte" NS benutzen zu dürfen) muss beim Rechner mit iptables die Anfrage an 217.x.x.x weitergeleitet und die Antwort korrekt zugestellt werden.

Leider geht das mit Bind nicht so schön mit Scripts aktualisieren, da pro IP eine ganz andere Umgebung von Domain-IP-Verbindungen existiert.

Benutzeravatar
DynaBlaster
Beiträge: 958
Registriert: 25.03.2004 18:18:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DF0://dynablaster.adf

Beitrag von DynaBlaster » 06.10.2006 10:05:08

Dann gibt es 2 Möglichkeiten:

1) Du bringst dem DSL-Router (die meisten HW-DSL-Router-Modelle könenn das) per "statische Route" bei, daß er Pakete in das netz 10.1.0.0 nicht an sein Standard-Gateway (also das vom DSL-Provider) senden soll, sondern an die IP-Adresse, die dein Server (mit den beiden Netzwerkkarten nach 192.168.0.0 und 10.10.0.0) im Netz 192.x.x.x/24 hat.

2) Wenn der HW-DSL-Router das nicht unterstützt bzw. du nicht willst, daß alle Clients im Netz 192.x.x.x dadurch ebenfalls eine route ins Netz 10.1.0.0 kennen, musst du den Traffic der beiden Clients 10.1.1.10 und 10.1.1.11 auf dem Server maskieren.

Code: Alles auswählen

iptables -A PREROUTING -t nat -p udp --dport 53 -s 10.1.1.10 -j DNAT --to-destination 217.x.x.x
iptables -A PREROUTING -t nat -p udp --dport 53 -s 10.1.1.11 -j DNAT --to-destination 217.x.x.x
iptables -A POSTROUTING -t nat -p udp --dport 53 -s 10.1.1.1.10 -j SNAT --to 192.x.x.x
iptables -A POSTROUTING -t nat -p udp --dport 53 -s 10.1.1.1.11 -j SNAT --to 192.x.x.x
192.x.x.x ist an die IP des Servers zwischen den Netzen anzupassen. Die beide Zeilen maskieren die DNS-Anfragen der Cleints 10.1.1.10 und 10.1.1.11 - der Server tauscht die eigentliche Absendeadresse aus und erstetzt sie durch seine eigene. Dadurch sieht es für den HW-DSL-Router so aus, als ob die Anfrage aus dem Netz 192.x.x.x käme - damit entfällt das Routen-Problem beim DSL-Router.

MaLo
Beiträge: 19
Registriert: 15.01.2005 22:20:42
Kontaktdaten:

Beitrag von MaLo » 06.10.2006 16:00:45

Interne IP DSL-Router: 192.168.2.1
IP der Netzwerkkarte des Gateways in dieses Netz: 192.168.2.252
IP der Netzwerkkarte des Gateways ins andere Netz: 10.1.1.1

Dieser Rechner hat DNS-Server und HTTP-Server und soll weiterhin als Gateway funktionieren. Sein DNS-Server gibt jetzt nur noch 10.1.1.1 aus, solange ich also diese IP bei beliebigen Domains erhalte greifen die Regeln nicht.

Clients am anderen Netz: 10.1.1.*

Code: Alles auswählen

iptables -A PREROUTING -t nat -p udp --dport 53 -s 192.168.2.247 -j DNAT --to-destination 217.x.x.x
iptables -A POSTROUTING -t nat -p udp --dport 53 -s 192.168.2.247 -j SNAT --to 192.168.2.252
Das hab ich jetzt eingetragen (abgesehen von der 217.... ^^ die is schon richtig ;) )

Trotzdem bekomme ich als Antwort bei DNS Anfragen immer wieder die IP 10.1.1.1, d.h. die Regeln greifen (warum auch immer) nicht... hab auch schon die -d - Direktive ausgebaut, klappt auch nicht...

Woran könnte das liegen?

Benutzeravatar
DynaBlaster
Beiträge: 958
Registriert: 25.03.2004 18:18:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DF0://dynablaster.adf

Beitrag von DynaBlaster » 06.10.2006 17:03:21

Vergiss einfach alles, was ich zuvor gepostet. Ich war gedanklich noch mit einem anderen Thread beschäftigt, bei dem es um Routing-Probleme ging.

Können denn die Clients im Netz 10.1.0.0-Netz den DSL-Router 192.168.2.1 und auch das Internet mit pings erreichen ?

Wenn ja, kannst du ein Routing-Problem ausschließen - und gleich meine iptables-Zeilen mit dem "-t nat -A POSTROUTING" gleich löschen - die bringen dann nämlich rein gar nichts.

Bist du sicher, daß die Clients im Netz 10.1.0.0 den Hostnamen für 10.1.1.1 nicht über ihre Hosts-Datei auflösen ? Wenn ein entsprechender Eintrag in /etc/hosts vorrätig ist, befragen die Clients nämlich gar keinen DNS-Server mehr ...[/code]

MaLo
Beiträge: 19
Registriert: 15.01.2005 22:20:42
Kontaktdaten:

Beitrag von MaLo » 06.10.2006 17:12:35

Pings kommen durch, ja

Aber was ich halt meinte: DNS Anfragen an 10.1.1.1 sollen nicht von 10.1.1.1 beantwortet werden, sondern von 217.x.x.x .... gelöst über iptables

MFG
Matthias

Antworten