Gibt es eine Möglichkeit, den DNS-Verkehr zum SSH-Tunnel umzuleiten?

Gibt es eine Möglichkeit, den DNS-Verkehr zum SSH-Tunnel umzuleiten?

Ich versuche, eine Barebone-Lösung zu erhalten, die den verschiedenen verfügbaren Smart-DNS-Proxys ähnelt.

Jetzt kann ich einen Teil erledigen, indem ich SSH-Tunneling verwende und eine dynamische Weiterleitung erstelle.

host myserver
User root
    HostName MyIP
    IdentityFile <MyKey>
    DynamicForward 4444

Dies funktioniert jetzt, wenn ich einen Browser habe und den Sock-Proxy einstellen kann.

Aber was

  1. Ich möchte einen laufenden DNS-Server haben (ähnlich wie dnsmasq).
  2. Konfigurieren Sie den DNS-Server auf meinem Router.
  3. Tunneln Sie den gesamten Datenverkehr durch SSH.

Antwort1

Shuttlekönnte hilfreich sein:

Transparenter Proxyserver, der als VPN für arme Leute funktioniert. Leitet über SSH weiter. Erfordert keinen Administrator. Funktioniert mit Linux und MacOS. Unterstützt DNS-Tunneling.

Es ermöglicht Ihnen, Ihren gesamten Datenverkehr über SSH an einen Server weiterzuleiten,inklusive DNS.

Ich habe es selbst nicht verwendet, aber vielleicht ist es das, wonach Sie suchen?

Antwort2

Ja und nein. Dnsmasq kann nicht einfach einen SOCKS-Proxy bitten, Namen aufzulösen, da es keinen solchen SOCKS-Protokollbefehl gibt; der Proxy hat nur einen Befehl, der einen Domänennamen + Port annehmen würdeUndsofort eine Verbindung zu ihm herstellen, während der Client nie wirklich erfährt, welche IP-Adresse verwendet wurde. (Und außerdem ist DNSein bisschen mehrals nur IP-Adresssuche, also selbst wenn eine solche FunktionWarverfügbar, Sie könnten DNS trotzdem nicht richtig darauf emulieren.)

Einige DNS-Resolver (nicht Dnsmasq) können jedoch mit einemrealDNS-Server über einen SSH-Tunnel. DNS-Server müssen TCP unterstützen, daher können Sie einen Standardtunnel verwenden ssh -Lund ihn auf einen Remote-Server richten. Dnsmasq funktioniert nicht (es versucht immer zuerst UDP), aber Unbound kann angewiesen werden, immer über TCP abzufragen. Ein Resolver, der DoT (DNS über TLS) oder DoH verwendet, würde ebenfalls funktionieren, da diese derzeit ebenfalls TCP-basiert sind.

Ich würde jedoch wirklich einen IP-Layer-Tunnel (ein VPN) anstelle von SOCKS empfehlen. Zwar kann man lange Zeit mit nur TCP auskommen, aber viele Programme benötigen auch UDP und es ist insgesamt viel einfacher, alles über einen IP-Tunnel zu leiten, als dasselbe über SOCKS zu tun.

Antwort3

Dank an Saaru'sAntwort, ich konnte sshuttle zum Proxy bringennurDNS-Anfragen mit einem Befehl wie dem folgenden:

sshuttle --dns -r username@host \
    --ns-hosts=dns01.example.com,dns02.example.com \
    0/0:53 ::/0:53

verwandte Informationen