[fli4l] Alle DNS-A?==?utf-8?Q?nfragen intern transparent ?==?utf-8?Q?umleiten?

K. Dreier usenetforum at gmx.net
So Feb 10 09:15:20 CET 2019


Hallo,

> Wenn du einen Internen DNS hast dann kannst du im FLI
> anfragen zu dieser Domain an den Server umleiten lassen. Dann fragt
> der
> FLI zu dieser domain deinen Internen DNS ab. Das ist eine der
> REDIRECT
> Optionen bei den DNS Einstellungen.

Und ist eingerichtet.

> Das ein webProxy DNS umleiten würde wäre mir neu.

Es ist kein Web-Proxy, sondern ein transparenter Proxy, der Teil vom
Paket "proxy" ist.

> Dann gebe den Geräten nur den internen Server an und gut.

Es gibt Geräte, insb. im IoT-Bereich, die haben einen fest gesetzten
DNS-Server. Denen ist der propagierte DNS-Server des lokalen Routers
egal. Und genau darum geht es: unabhängig vom (von wem und wie und wo
und warum) gesetzten DNS-Server diese Port 53-/DNS-Anfrage der lokalen
Geräte transparent (Deswegen ja auch OPT_TRANSPROXY) auf einen
bestimmten lokalen Rechner umzubiegen.
Beispiel:
fli4l als Router = Gateway hat die 192.168.1.1. Seine Konfig sagt, daß
alle DNS-Anfrage im Netzt an 192.168.1.50 gehen sollen.
Jetzt gibt es aber den client 192.168.1.70, der für DNS fix 8.8.8.8
gesetzt hat - den interessiert die Aufforderung des Routers/Gateways,
alle DNS-Anfragen an 192.168.1.50 zu schicken, nicht. Jedenfalls nicht
solange er 8.8.8.8 erreichen kann.
Also braucht es eine Firewall-Regel, die diese Anfragen abfängt und auf
191.168.1.50 umbiegt. Das kann OPT-TRANSPROXY.

Problem: der DNS-Server (= .50) ist im gleichen Netzt wie .70. Sagen wir
es ist NET_2. Wenn ich in der Firewall sage, daß alles aus NET_2 für
Port 53 auf .50 umgebogen werden soll, dann beinhaltet das eben auch den
DNS-Server selbst. Das gibt doch eine Schleife. Und genau davor warnt
auch die Doku zu transproxy.
Also gibt es zumindest für iptables die Möglichkeit, eine Regel zu
setzten, in der diese Umbiege-Regel einen bestimmten client ausnimmt.
Ein Beispiel ist:

------
iptables -t nat -A PREROUTING -p tcp ! -i "ppp0" -m iprange !
--src-range "10.0.0.1"-"10.0.0.4" ! --dst-range "10.0.0.2"-"10.0.0.3"
--dport 53 -j DNAT --to-destination "10.0.0.2"
iptables -t nat -A PREROUTING -p udp ! -i "ppp0" -m iprange !
--src-range "10.0.0.1"-"10.0.0.4" ! --dst-range "10.0.0.2"-"10.0.0.3"
--dport 53 -j DNAT --to-destination "10.0.0.2"
------

Mit der Erklärung:

! -i "ppp0" excludes my routers WAN interface (which prevents me from
becoming an open resolver)
-m iprange ! --src-range "10.0.0.1"-"10.0.0.4" excludes a range of IP
addresses from having their DNS queries redirected (e.g: Router, two
Pi-hole resolvers and a fourth)
! --dst-range "10.0.0.2"-"10.0.0.3" ensures that any DNS query not
matching these IP's are forwarded to --dport 53 --to-destination
"10.0.0.2"
iptables -t nat -A POSTROUTING -j MASQUERADE ensures that this
redirection is done seamlessly

Ich interpretiere das hier so, daß bei ihm 10.0.0.2 der DNS-Server ist
und z.B. 10.0.0.1 sein Router.

Ich möchte nun diese Regel/Logik in der fli4l-Syntax umsetzen, weiß
aber nicht, wie ich das machen muß... Hinzu kommt, daß ich kein
dial-up habe, sondern fli4l als Ethernet-Router an einem Kabelmodem
betreibe.

Gruß
Klaus


Mehr Informationen über die Mailingliste Fli4L