A Smart DNS for bypassing geo restorations of specific various web services.
🎗️ Hint : this service should be only available to a specefic geo or specefic ip addresses to prevent attacks and etc problem
# pull the image and run it
docker pull maj0rmil4d/maj0rdns
docker run -d -it --cap-add=NET_ADMIN -p 53:53/udp -p 443:443 -p 80:80 -e IP=PublicIpOfContainer maj0rmil4d/maj0rdns
# Change SERVER_IP in Dockerfile with your server public ip
# Build the docker image, so you could use the docker image and its context in the future easily
docker build . -t maj0rdns:latest
# Now run the mentioned docker in the previous step
docker run -d -it --cap-add=NET_ADMIN -p 53:53/udp -p 443:443 -p 80:80 -e IP=PublicIpOfContainer maj0rdns:latest
# Changing the main DNS configuration file and add the public IP address of the container to the `resolve.conf` file.
echo "" > /etc/resolv.conf && echo "nameserver Public_IP_Of_Container" >> /etc/resolv.conf
# To be sure that everything works correctly, use the following command on your local system.
run curl api.myip.com on your local system
It should return your public ip of container
If you saw your public IP address in previous step, it’s time to restart everything in order to make sure.
# To restart the container after changing the config files
./restart.sh
restart.sh
is a bash script file that stops and starts the container in the background, actually if you add some new domains to dnsmasq.custom
file you need to run the restart.sh
too.
I strongly recommend that this service be only available at specific Geo or IP addresses to prevent attacks and other problems.
to restrict the service to Iran ip address run the iraccess.sh
. (Recommended for IR)
./iraccess.sh
You can also increase reliability and connectivity, with help of Cluster Mode. To have a cluster, do the following steps:
1. Initialize swarm mode
docker swarm init
2. Create docker swarm service
docker service create --cap-add=NET_ADMIN -p 53:53/udp -p 443:443 -p 80:80 -e IP=PublicIpOfContainer --name maj0rdnscontainer maj0rdns:latest
3. Scale the service to 5 instances
docker service scale maj0rdnscontainer=5
4. Verify the cluster
It’s necessary to verify that the previous steps are working correctly and that all of them are running.
docker service ls
docker service ps maj0rdnscontainer
5. Verify the service