Verwenden Sie netcat zum Konvertieren von UDP-DNS-Abfragen in TCP-DNS-Abfragen
Ich verwende Debian 9 in einem isolierten Netzwerk und brauche DNS-Dienste, um externe Hostnamen aufzulösen.
(Ich bin mir sicher, einige werden sich fragen, warum ich externe Hostnamen auflösen muss, wenn ich in einem isolierten Netzwerk bin, aber das ist mehr Details, als ich hier eingeben muss, um meine Frage zu stellen. Es reicht aus, diese Notwendigkeit zu sagen existiert.)
Auf dem isolierten Host, von dem aus ich externe Hostnamen auflösen kann, habe ich diesen SSH-Tunnel eingerichtet:
ssh -N -L localhost:53:192.168.13.14:53 myUserId@jumpServer
Hier ist 192.168.13.14 ein DNS-Server, der alle Namen global auflösen kann. Dieser SSH-Tunnel leitet alles, was am lokalen TCP- Port 53 gehört wird, an den TCP- Port 53 am 192.168.13.14 weiter.
Ich kann dig verwenden, um einen Hostnamen aufzulösen, indem ich angibt, dass die Abfrage über TCP-Port 53 statt über den üblichen UDP-Port 53 erfolgen soll:
root@isolatedHost:~# dig @localhost +vc example.com ; <<>> DiG 9.10.3-P4-Debian <<>> @localhost +vc example.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53054 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: example.com. 3600 IN A 93.184.216.34 ;; Query time: 133 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Dec 20 15:21:01 MST 2017 ;; MSG SIZE rcvd: 56
Der Schlüssel für dieses Beispiel ist, dass:
- dig hat das Flag "+ vc +" ("virtuelle Schaltung"), mit dem Sie angeben können, dass TCP anstelle des üblichen UDP verwendet wird
- Unser Nameserver (der unter 192.168.13.14) ist so konfiguriert, dass er normale rekursive Abfragen auf TCP sowie das übliche UDP akzeptiert
Dig ist natürlich etwas Besonderes. Es kann gesagt werden, dass TCP anstelle von UDP verwendet wird. Im allgemeinen Fall einer zufälligen Anwendung, die in der lokalen Auflösungsbibliothek aufgerufen wird, wird die Abfrage immer über das übliche UDP durchgeführt.
Das Problem bei meinem SSH-Tunnel ist, dass SSH nur TCP- Ports weiterleiten kann . UDP-Ports können nicht weitergeleitet werden. Ich brauche also eine Möglichkeit, alle DNS-Abfragen vom üblichen UDP in TCP umzuwandeln. Sie können dann über den SSH-Tunnel aus unserem isolierten Netzwerk herauskommen und sich zum Nameserver begeben.
Das erste, was mir einfällt, ist netcat:
nc -u -l -p 53 | nc localhost 53
Das funktioniert leider nicht und ich weiß noch nicht warum.
Hat jemand eine Lösung zum Weiterleiten von UDP-DNS-Abfragen in einem isolierten Netzwerk, mit netcat in Verbindung mit einem SSH-Tunnel oder auf andere Weise?
0 Antworten auf die Frage
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
3
Was sind die Unterschiede zwischen Linux Window Managern?
-
1
DNS-Einstellungen pro Windows-Benutzer wechseln?
-
2
ThunderBird / Lichtsynchronisation mit SE k770i
-
4
Linux-Dateisystem