Giter Club home page Giter Club logo

dnsrouter's Introduction

DNSrouter

A Simple Hack for Name / FQDN / DNS based IP routing

Expected setup:

  • DNSrouter sits on a Linux router
  • Has required python libraries
  • Client DNS queries are intercepted via iptables and sent to DNSrouter or:
  • Clients are configured to directly send queries to DNSrouter

Example configuration file is included

##Example command and output:

sudo python DNSRouter.py -f config2 
2017-01-10 17:40:32+0530 [-] Log opened.
2017-01-10 17:40:32+0530 [-] Started logger for custom DNS server
2017-01-10 17:40:32+0530 [-] DNS Router Listening on:  10054
2017-01-10 17:40:32+0530 [-] Gateway Device is:  eth2
2017-01-10 17:40:32+0530 [-] Gateway is  123.236.184.1
2017-01-10 17:40:32+0530 [-] resolvconf is  ./resolvconf
2017-01-10 17:40:32+0530 [-] =================================================
2017-01-10 17:40:32+0530 [-]                                                  
2017-01-10 17:40:32+0530 [-]  ____  _   _ ____  ____              _           
2017-01-10 17:40:32+0530 [-] |  _ \| \ | / ___||  _ \ ___  _   _| |_ ___ _ __ 
2017-01-10 17:40:32+0530 [-] | | | |  \| \___ \| |_) / _ \| | | | __/ _ \ '__|
2017-01-10 17:40:32+0530 [-] | |_| | |\  |___) |  _ < (_) | |_| | ||  __/ |   
2017-01-10 17:40:32+0530 [-] |____/|_| \_|____/|_| \_\___/ \__,_|\__\___|_|   
2017-01-10 17:40:32+0530 [-]                          Version: 0.1            
2017-01-10 17:40:32+0530 [-] Home:    https://github.com/aniruddhas/DNSrouter 
2017-01-10 17:40:32+0530 [-] By: Aniruddha Thombre, Twitter: @imagineers       
2017-01-10 17:40:32+0530 [-] =================================================
2017-01-10 17:40:32+0530 [-] 
2017-01-10 17:40:32+0530 [-] Config file is provided  config2
2017-01-10 17:40:32+0530 [-] resolv.conf provided:  ./resolv.conf
2017-01-10 17:40:32+0530 [-] config dns port is  10025
2017-01-10 17:40:32+0530 [-] Config file patterns are  whatismyip.org,whatsapp,airtel,facebook,fbcdn,youtube
2017-01-10 17:40:32+0530 [-] Dynamic Resolver patterns  whatismyip.org|whatsapp|airtel|facebook|fbcdn|youtube
2017-01-10 17:40:32+0530 [-] whatismyip.org|whatsapp|airtel|facebook|fbcdn|youtube
2017-01-10 17:40:32+0530 [-] Dynamic Resolver patterns  whatismyip.org|whatsapp|airtel|facebook|fbcdn|youtube
2017-01-10 17:40:32+0530 [-] ./resolv.conf changed, reparsing
2017-01-10 17:40:32+0530 [-] Resolver added ('8.8.8.8', 53) to server list
2017-01-10 17:40:32+0530 [-] Resolver added ('202.149.208.91', 53) to server list
2017-01-10 17:40:32+0530 [-] Resolver added ('202.149.208.92', 53) to server list
2017-01-10 17:40:32+0530 [-] Resolver added ('124.124.204.36', 53) to server list
2017-01-10 17:40:32+0530 [-] Resolver added ('115.254.108.244', 53) to server list
2017-01-10 17:40:32+0530 [-] Started listening on  10025
2017-01-10 17:40:32+0530 [-] DNSDatagramProtocol starting on 10025
2017-01-10 17:40:32+0530 [-] Starting protocol <twisted.names.dns.DNSDatagramProtocol object at 0x7f7a2a5fc990>
2017-01-10 17:40:32+0530 [-] DNSServerFactory starting on 10025
2017-01-10 17:40:32+0530 [-] Starting factory <twisted.names.server.DNSServerFactory instance at 0x7f7a2a606ef0>
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Query before match facebook.com
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Query type is  1
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Query type is A for  facebook.com ['facebook', 'com']
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] searched against facebook.com
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Dynamic routing required for query:  facebook.com  it matches:  whatismyip.org,whatsapp,airtel,facebook,fbcdn,youtube
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] ./resolv.conf changed, reparsing
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Resolver added ('8.8.8.8', 53) to server list
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Resolver added ('202.149.208.91', 53) to server list
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Resolver added ('202.149.208.92', 53) to server list
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Resolver added ('124.124.204.36', 53) to server list
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Resolver added ('115.254.108.244', 53) to server list
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Looking up A record in dynamic Response for  facebook.com
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] DNSDatagramProtocol starting on 4787
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Starting protocol <twisted.names.dns.DNSDatagramProtocol object at 0x7f7a2a5ee490>
2017-01-10 17:40:46+0530 [-] returning answers, authority and additional
2017-01-10 17:40:46+0530 [-] 
2017-01-10 17:40:46+0530 [-] 
2017-01-10 17:40:46+0530 [-] 
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] DNSDatagramProtocol starting on 25956
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Starting protocol <twisted.names.dns.DNSDatagramProtocol object at 0x7f7a2a599150>
2017-01-10 17:40:46+0530 [-] printing something
2017-01-10 17:40:46+0530 [-] records
2017-01-10 17:40:46+0530 [-] ([<RR name=facebook.com type=A class=IN ttl=185s auth=False>], [], [])
2017-01-10 17:40:46+0530 [-] [<RR name=facebook.com type=A class=IN ttl=185s auth=False>]
2017-01-10 17:40:46+0530 [-] []
2017-01-10 17:40:46+0530 [-] []
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] working on  facebook.com flag is  True
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] working on  facebook.com  flag is set for this guy and is of type A
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] dns query  IN
2017-01-10 17:40:46+0530 [-] 157.240.7.35
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] This ip address needs to be routed dynamically  157.240.7.35
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Adding route for  157.240.7.35  using gw  192.168.1.2  and device  eth1
2017-01-10 17:40:46+0530 [DNSDatagramProtocol (UDP)] Adding route for  157.240.7.35  using gw  192.168.1.2  and device  eth1 with dev no:  []
2017-01-10 17:40:46+0530 [-] done boss
2017-01-10 17:40:46+0530 [-] (UDP Port 25956 Closed)
2017-01-10 17:40:46+0530 [-] Stopping protocol <twisted.names.dns.DNSDatagramProtocol object at 0x7f7a2a599150>
2017-01-10 17:40:46+0530 [-] (UDP Port 4787 Closed)
2017-01-10 17:40:46+0530 [-] Stopping protocol <twisted.names.dns.DNSDatagramProtocol object at 0x7f7a2a5ee490>
^C2017-01-10 17:41:08+0530 [-] Received SIGINT, shutting down.
2017-01-10 17:41:08+0530 [twisted.names.server.DNSServerFactory] (TCP Port 10025 Closed)
2017-01-10 17:41:08+0530 [-] Stopping factory <twisted.names.server.DNSServerFactory instance at 0x7f7a2a606ef0>
2017-01-10 17:41:08+0530 [DNSDatagramProtocol (UDP)] (UDP Port 10025 Closed)
2017-01-10 17:41:08+0530 [DNSDatagramProtocol (UDP)] Stopping protocol <twisted.names.dns.DNSDatagramProtocol object at 0x7f7a2a5fc990>
2017-01-10 17:41:08+0530 [-] Main loop terminated.


Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.