A middleware between browser and local DNS client/server, to speed up the Internet according to the network speed. It optimizes the A/AAAA records by latency detection mechanism, offer the best records the user wanted.
Why the GEO-based DNS is not enough? As we know, there are a lot of GEO-based DNS services, like openDNS, google DNS, etc. They can calculate the distance of the user location to the target host, to return the nearest records, but unfortunately it's hard to say the returned records are always the best ones, since the real user experience depends on the user local network quality, for the different time, different ISP and different website, the results are totally different.
So, it's better to have another program to detect the quality of the DNS records from user's point of view, then filter the bad ones out, and keep the good ones as much as possible. DNSTurbo was born under this situation, plug it into the DNS pipeline, always keep the records as good as possible for the users.
DNSTurbo do the Latency Detection, and does not do the Bandwidth Detection, because it's highly depend on the Congestion Control(For TCP connections), different congestion module would give the different results, and the Bandwidth Detection is not only very heavy especially for the mobile device in LTE network, but also would compete with Browser to make the network worse than ever. And another hand, all the records returned should have the very similar network quality, so to maximize the Bandwidth, we should rely on the target program or TCP Congestion Control (Like Linux-4.9, the new CC module would try the best to use the Bandwidth by the new algo)
- 32/64 bit compatible
- x86/ARM compatible
- Optimized A Record
- Optimized AAAA Record
- Http Latency Detection
- Docker Image
- Coming Soon:
- ICMP Latency Detection
# Install System Dependencies sudo apt-get install autoconf valgrind expect libyaml-dev python3-dev python3-pip libc-ares-dev; sudo pip3 install PyYAML pympler WebOb dnslib; # Fork/Clone and Build Project Dependencies (For example: project folder is 'DNSTurbo') cd DNSTurbo git submodule update --init --recursive make dep; sudo make install-dep; make skull; sudo make install-skull;
skull build && skull deploy
sudo skull start -D
The Docker images are ready now, if people who don't want to waste time to build it from scratch, it's super easy to run it via docker image.
Assume that we've already installed Docker, then apply the below commands:
bash$> docker pull finaldie/dnsturbo:0.7 bash$> docker run -p 53:53/udp finaldie/dnsturbo:0.7
Now, the DNSTurbo is all set, let's chain it in DNS pipe. For example, the DNSTurbo is set up in
- For Mac:
DNS, then add
192.168.31.221in the left window.
- For Windows7/10:
TCP/IPv4, then select
Manual DNSoption, and add
After that, enjoy the new experience :)
Sometimes we don't want to use the default upstream DNS from
resolv.conf, then there is an
Shell Environment Variable can override it, just define an ENV var SKULL_DNS_NS, e.g.:
export SKULL_DNS_NS=192.168.1.1 export SKULL_DNS_NS=188.8.131.52