The communication looks like this: Browser --> Local HTTP Proxy --> DNS Server --> Endpoint
All packets are base32 encoded and chunked. So the data could be encapsulated inside the domain name.
It can be used to bypass firewalls and other security measures (captitive portals).
Client side
git clone https://github.com/lightswisp/http_over_dns.git
cd http_over_dns
cd client
ruby client.rb <DNS Server IP Address> <Local Port for the Proxy server>
Server side (Don't forget to disable the systemd-resolved service)
git clone https://github.com/lightswisp/http_over_dns.git
cd http_over_dns
cd server
systemctl stop systemd-resolved
ruby server.rb