dnstun provides a client and server for tunneling UDP traffic over DNS - perfectly suited to tunneling openvpn or similar traffic over DNS queries.
The client has two threads - one receives UDP packets on a socket and encapsulates them in DNS queries, while the other polls the DNS server for data and sends the data as UDP packets to the client accessing its socket.
The server also has two threads - one receives UDP packets on a socket and adds them to a queue, and the other receives DNS requests from the client and sends the data as UDP packets to a destination server, and receives polls from the client and responds with data from the queue.
Currently it is mostly complete but ENTIRELY UNTESTED.
These details are provided for information only. No information here is legal advice and should not be used as such.