Encode data in recursive DNS queries and responses. Your local recursive resolver sends your packets to the right place. A DNS bridge would be an authoritative name server for a particular domain; users would configure a domain rather than an IP address in their Bridge lines. Tools already exist to do DNS tunneling, for example iodine and dnscat. Probably requires a reliability layer and periodic polling by the client.
Provides a way for users behind restrictive firewalls to connect to Tor at the expense of speed.
I'm not totally sold on this being a good idea. There's a gigantic mountain of research regarding detecting such things, so I don't expect it to have a very long shelf life, there's interesting implications of caching intermediary resolvers being able to enumerate bridges fairly easily, and the performance would be rather poor.
Don't let my predictions of doom and gloom discourage you from writing this and investigating it further, but my initial reaction is, "very well analyzed by adversaries, there's code out there to detect and censor this approach to circumvention, the implementation would be fairly complicated, for extremely poor performance".
But! There are many use cases and threat models. A DNS-based transport might be nice to get out from behind a wi-fi captive portal, for example, even if it is vulnerable to a nation-level censor. I would find it valuable to have a DNS tunnel into Tor that I can configure with only a bridge line, as opposed to setting up a tun device or whatever, which I have always found difficult.
DNS could also be interesting for rendezvous (like flash proxy) or for dynamically fetching bridge addresses.
But! There are many use cases and threat models. A DNS-based transport might be nice to get out from behind a wi-fi captive portal, for example, even if it is vulnerable to a nation-level censor. I would find it valuable to have a DNS tunnel into Tor that I can configure with only a bridge line, as opposed to setting up a tun device or whatever, which I have always found difficult.
Sure. And it'll be fun to write. Not sure how many of the captive portal implementations out there don't do DNS hijacking currently, so it's probably more usable than the existing literature would suggest.
DNS could also be interesting for rendezvous (like flash proxy) or for dynamically fetching bridge addresses.
I would be fully interested and supportive of these sort of use situations since it's less blatant when used as an extremely low volume covert channel, and we are looking into auto-bridge distribution.
Second, in Tor Browser, go to about:preferences#tor, select "Provide a bridge", and enter
{{{
127.0.0.1:7000 4D6C0DF6DEC9398A4DEF07084F3CD395A96DD2AD
}}}
tor will connect to 127.0.0.1:7000 as if it were a remote bridge, but that port actually leads through the tunnel to the ORPort of my bridge giygas.