forked from badlee/fun-dns
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
141 lines (130 loc) · 3.78 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
_____ __ _ _____ _____ _____ _____ _____ _ _ __ _
| _ \ | \ | | / ___/ | ___| / _ \ | _ \ | ___| | | | | | \ | |
| | | | | \| | | |___ | |__ | | | | | |_| | | |__ | | | | | \| |
| | | | | |\ | \___ \ | __| | | | | | _ / | __| | | | | | |\ |
| |_| | | | \ | ___| | | | | |_| | | | \ \ | | | |_| | | | \ |
|_____/ |_| \_| /_____/ |_| \_____/ |_| \_\ |_| \_____/ |_| \_|
version 0.1.12
Fun DNS server build on top of Nodejs
How install
Run $ sudo setup.sh
OR
$ wget -O /tmp/fun_dns.tar.gz https://github.com/downloads/badlee/fun-dns/fun_dns.v0.1.12.tar.gz
$ sudo -s
$ mkdir /opt/fun_dns
$ cd /opt/fun_dns
$ tar xvf /tmp/fun_dns.tar.gz
$ ln -s /opt/fun_dns/fun_dns.daemon /etc/init.d/fun_dns
$ update-rc.d fun_dns defaults
$ #Start service
$ service fun_dns start
How define hostname
edit 'config/conf.json',
the syntaxe of this file respect json format
{
"hostname1" : {
[property...]
},
"hostname2" : {
[property...]
},
"hostname3" : {
[property...]
},
[...]
"hostnameN" : {
[property...]
}
}
properties of a hostname
"name" : {
"ip" : "127.0.0.1",
"description" : "je suis le serveur web local",
"autority" : "dns.{name},admin@{name}",
"mail" : {
"ip" : "127.0.0.2",
"name" : "mail.{name}",
"priority" : 10
},
"nameserver" : [{
"ip" : "127.0.0.1",
"name" : "ns1.{name}"
}]
}
The hostname can have a short regex like syntaxe.
* : this expression respect ".*" in regex;
%w : this expression respect "[a-zA-Z0-9_]+" in regex;
%h : this expression respect "[a-fA-F0-9]+" in regex;
%d : this expression respect "[0-9]+" in regex;
sample conf.json :
{
"server.web" : {
"ip" : "192.168.1.3",
"nameserver" : [{
"name" : "dns3.local.web"
},{
"ip" : "192.168.1.2",
"name" : "dns2.local.web"
},{
"ip" : "192.168.1.1",
"name" : "dns.local.web"
}]
},
"!*.lo" : {
"ip" : "127.0.0.1",
"autority" : "dns.{name},admin@{name}",
"nameserver" : [{
"ip" : "127.0.0.1",
"name" : "dns.{name}"
},{
"ip" : "127.0.0.1",
"name" : "dns2.{name}"
}]
}
}
Server confiurations(config/serv.ini)
conf = configuration hostname file(if not defined is set to app://config/conf.json)
host = your ip4 addresse to listen(if not defined listen all)
port = port to listen(if not defined listen 53)
Section nameserver = list of dns server used to found response when no response found on server(as a proxy, but it's eprouve the global performances)
[nameserver]
nameOfTheDnsServer1 = Ip_Address
nameOfTheDnsServer2 = Ip_Address
...
nameOfTheDnsServer3 = Ip_Address
Section ttl = list of ttl in dns reponse (in secondes)
[ttl]
ip = ttl for any ip (A or AAAA) address (if not defined 77)
ttl = ttl for any field different of ip (A or AAAA) (if not defined 600)
refresh = time to refresh the zone (if not defined 1800)
retry = time to retry when refresh (above) has expired (if not defined 900)
expiration = ttl for DNS response (if not defined 604800)
sample serv.ini:
conf = app://config/lab.json
port = 53
host = 192.168.1.1
spf = "v=spf1 +all"
[ttl]
ttl = 600
ip = 77
[nameserver]
google.dns.a = 8.8.8.8
google.dns.b = 8.8.4.4
Command line option
Usage:
fun_dns [options]
Options:
--- -p|--port <value>
port to listen.
--- -h|--host <value>
host to bind.
--- -c|--conf <value>
configuration file(hostname).
--- -s|--servConf <value>
configuration file(server).
--- -v|--version
Get the version of fun_dns
--- -z|--zone <value>
Lookup a zoneWalk
--- -l|--log <value>
path to log file