1 .\" https://man.openbsd.org/mdoc.7
16 .Op Fl doh Ar URL | Fl dot Ar HOST : Ns Ar PORT | Fl udp Ar HOST : Ns Ar PORT
17 .Op Fl pubkey Ar HEX | Fl pubkey-file Ar FILENAME
19 .Ar LOCALADDR : Ns Ar LOCALPORT
25 is the client portion of a DNS tunnel.
26 It receives TCP connections at
27 .Ar LOCALADDR : Ns Ar LOCALPORT
29 encoded as a sequence of DNS messages
30 and via a recursive resolver,
33 running as the authoritative name server for
35 The DNS messages may be carried over
38 or classical DNS over UDP.
41 You must use exactly one of the
47 to specify what form of DNS to use:
54 is the URL of the DNS over HTTPS resolver,
57 path if used by the resolver.
61 .Lk https://github.com/curl/curl/wiki/DNS-over-HTTPS#publicly-available-servers
62 for a list of public DNS over HTTPS resolvers.
64 .It Fl dot Ar HOST : Ns Ar PORT
69 are the TCP address of the DNS over TLS resolver.
75 .Lk https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Public+Resolvers#DNSPrivacyPublicResolvers-DNS-over-TLS%28DoT%29
76 for a list of public DNS over TLS resolvers.
78 .It Fl udp Ar HOST : Ns Ar PORT
83 are the UDP address of the DNS resolver.
89 you have the option of communicating directly with an instance of
91 without going through a recursive resolver.
94 may point directly at the authoritative name server for
103 In addition, you must use one of the
107 options to specify the public key used
108 for authenticating the server and encrypting the channel.
109 The public key should have been generated by
110 .Ql dnstt-server -gen-key .
112 prints its public key at the beginning of its log output.
118 is a string of 64 hexadecimal digits.
120 .It Fl pubkey-file Ar FILENAME
122 is the name of a file containing
123 64 hexadecimal digits and an
124 optional training newline character.
130 Tunnel through the DNS over HTTPS resolver at
131 .Cm https://resolver.example/dns-query
132 to the authoritative name server for
136 for connections to forward through the tunnel.
137 Use the server public key stored in the file
140 .Bd -literal -offset indent
141 dnstt-client -doh https://resolver.example/dns-query -pubkey-file server.pub t.example.com 127.0.0.1:7000
145 Tunnel through the DNS over TLS resolver at
146 .Cm resolver.example:853
147 to the authoritative name server for
151 for connections to forward through the tunnel.
152 Use the given hex string as the server public key.
154 .Bd -literal -offset indent
155 dnstt-client -dot resolver.example:853 -pubkey 14ca15f53660e248d289d9302f992c4bee518f2361d6343dafa7b417b5a3d752 t.example.com 127.0.0.1:7000
162 writes running logs to standard error.
166 logs the amount of useful payload capacity that can be stored
167 in each DNS query, after accounting for the overhead of encoding.
168 This number will vary depending on the length of
171 .Dl effective MTU 128
177 has a distinctive TLS fingerprint
178 and is probably easy to block on that basis.
181 .Sh SECURITY CONSIDERATIONS
185 option is not covert,
186 and is intended for debugging and special configurations.
191 modes provide protection against detection of the tunnel,
192 because they encrypt DNS messages between
194 and the recursive resolver.
197 mode sends plaintext DNS messages,
198 which reveal the use of a DNS tunnel by their special format.
204 it may be possible for an observer to infer
206 by traffic metadata features such as
207 traffic volume and timing.
208 The recursive resolver can see the plaintext of DNS messages
209 and is always in a position to easily detect the use of a tunnel.
211 But even if the use of a tunnel is detected, the
213 of the tunnel remain encrypted and authenticated.
214 The end-to-end encryption and authentication of the tunnel is a separate layer,
215 independent of the encryption
216 provided by DNS over HTTPS or DNS over TLS.
223 .Lk https://www.bamsoftware.com/software/dnstt/
228 .An David Fifield Aq Mt david@bamsoftware.com