Show HN: File distribution over DNS: (ab)using DNS as a CDN
eighty-twenty.org
eighty-twenty.org
I think email (SMTP) still hasn't been fully exploited as a job scheduling tool (events... mini batches... SMTP).
Bearing in mind, I don't expect people to burden the public infrastructure with these kinds of activities. I think if you're going to use the DNS for telemetry you need to scale your deployment to handle at least hundreds of requests a second; this isn't hard with DNS, it's just not the mindset of DNS operators intending to use the DNS as it always has been used. There are also some blatantly political considerations which need to be swept away to make it truly seamless.
The gnashing of teeth is obviously suspect when you consider the trajectory of HTTP: from web pages to XHR, SOAP and DoH. However questionable you might find the architectural choices, HTTP continues to work in spite of the abuse. Likewise, the demise of DNS is unlikely.
Modern ransomware is even able to abuse/imitate apple's airdrop and other DNS-SD services because they're let through by most configurations.
https://github.com/yarrick/iodine
Regarding cloudflare DNS over HTTPS: It could be that it tries to server data encoded as JSON, which is impossible in JSON. Some control characters and bytes 128-255 cannot be represented as JSON strings.
You need a domain name, xxx.example, then you can uplink data yyyyyy through the tunnel by querying yyyyyy.xxx.example and iodined, authoritative for xxx.example, will receive this query by the captive portal's resolver. To downlink data, you read responses (txt, cname or null records) that iodined will send for your queries.
This probably fills up the cache of the captive portal's resolver (:
I was on a ferry ship with paid sattelite wifi internet once and they only faked DNS responses for gstatic.com, google, etc. But they allowed my domain (DNS queries to it) and stripe.com (because that's how you paid) -- so they only faked responses for a small set of popular domains. IP access to the internet was, apart from stripe, blocked.
And because stripe uses FastlyCDN, they allowed all of fastlycdn network ranges (not useful for iodine), so I could browse reddit (they also use fastly) using stripe's CDN (only html, without i.redd.it image hosting, that's elsewhere).
AFAIR Fastly doesn't have a free plan, so I couldn't tunnel at higher speeds (via HTTP) but only via DNS.
But yeah, sometimes they just outright respond to any query with their IP and you are out of luck.
But that's the beauty of iodine. It will still work because if the captive portal's name servers actually fully resolve requests, it will contact your upstream iodine controlled name servers and forward the response as-is, because that's just how DNS works.
Of course it's also fairly easy to detect/block since your DNS usage will be completely abnormal.
Aside: IMHO, dnstxt from djbdns is easier for requesting TXT records than dig; it's a much smaller, simpler program.
tinydns from djbdns can store any data in TXT records, i.e., arbitratry bytes specified by octal. Perhaps other authoritative servers can also do this today. At the time djbdns was released AFAIK it was the only one.
"TXT (``text'') record for fqdn. tinydns-data creates a TXT record for fqdn containing the string s. You may use octal \nnn codes to include arbitrary bytes inside s; for example, \072 is a colon."
https://cr.yp.to/djbdns/tinydns-data.html
Thus one could, e.g., store mini-web pages in TXT records. I experimented with this about 15 years ago.
Potato potato I guess
> Potato potato I guess
I'd go with potato. I actually own https://potato.horse and now I'm starting to think that I should point cdn.potato.horse to that twitter thread!
Maybe such a solution already exists, but I couldn't find it
If you use Brave, or have the IPFS browser extension, you can access sites like https://ffdweb.org/ as an option, or preferentially.
Coincidence that MUSL just added support to DNS-over-TCP fallback? https://news.ycombinator.com/item?id=36933028