From cc36d8a8afd956f7c3341060300c9c5122ebaa6d Mon Sep 17 00:00:00 2001 From: fangdingjun Date: Tue, 1 Sep 2015 10:34:13 +0800 Subject: [PATCH] add mkdocs doc --- docs/command_line.md | 82 ++++++++++++++++++++++++++++++++++++++++++++ docs/ex_config.md | 61 ++++++++++++++++++++++++++++++++ docs/index.md | 54 +++++++++++++++++++++++++++++ mkdocs.yml | 8 +++++ 4 files changed, 205 insertions(+) create mode 100644 docs/command_line.md create mode 100644 docs/ex_config.md create mode 100644 docs/index.md create mode 100644 mkdocs.yml diff --git a/docs/command_line.md b/docs/command_line.md new file mode 100644 index 0000000..f962fec --- /dev/null +++ b/docs/command_line.md @@ -0,0 +1,82 @@ +command line options +===================== + +###bind### + + special the addres the dns server listen to + +example: + `-bind 0.0.0.0:53`, + `-bind :53`, + `-bind 127.0.0.1:53` + +###server### + +special a filter file and the upstream dns server to use +format + + **file_name**,**proto**:**addr**:**port** + + **file_name** is the file name contains the domain list + + **proto** is the upstream dns server protocol, `tcp` or `udp` + + **addr** is the ip address of upstream dns server + + **port** is the upstream dns server port + + this options can special multipe times + +example: + +`-server domain1.json:udp:8.8.8.8:53`, + +`-server domain1.json:tcp:4.2.2.2:53`, + +`-server domin2.json:udp:49.32.34.44:5353` + + see [example filter file](ex_config.md#filter-file) + +###upstream### + +special the default upstream dns server + +format + +**proto**:**addr**:**port** + + **proto** is the upstream dns server protocol, `tcp` or `udp` + + **addr** is the ip address of upstream dns server + + **port** is the upstream dns server port + +example: + +`-upstream udp:10.10.1.1:53` + +###logfile### + +special the file name the log save to + +example: + +`-logfile /var/log/gdns.log` + +###debug### + +output the debug log or not, default false + +this options is only used for debugging + +###blacklist### + +special the blacklist file + +if the reply dns message contains the ip in the blacklist, the message will be dropped + +example: + +`-blacklist fakeip.json` + +see [example black list](ex_config.md#blacklist-file) \ No newline at end of file diff --git a/docs/ex_config.md b/docs/ex_config.md new file mode 100644 index 0000000..c8e6509 --- /dev/null +++ b/docs/ex_config.md @@ -0,0 +1,61 @@ +Configure example +============= + +Configure file +====== +Use `gdns -h > config.ini` generate a example configure file + +a configure file like this: + +```conf +bind = :53 # the address bind to +blacklist = # the blacklist file +configUpdateInterval = 0 # Update interval for re-reading config file set via -config flag. Zero disables config file re-reading. +debug = false # output debug log, default false +logfile = error.log # the logfile, default stdout +server = filter1.txt,udp:8.8.8.8:53 # special the filter and the upstream server to use when match + # format: + # FILTER_FILE_NAME,PROTOCOL:SERVER_NAME:PORT + # example: + # filter1.json,udp:8.8.8.8:53 + # means the domains in the filter1.json will use the google dns server by udp + # you can specail multiple filter and upstream server + # +upstream = udp:114.114.114.114:53 # the default upstream server to use +``` +comamnd +`gdns -config dns.ini` +use the dns.ini as a configure file + +Filter file +=========== +The filter file is a domains name list + +command line +`--server domain1.json,udp:8.8.8.8:53` +means the domain name listed in domoin1.json will use 8.8.8.8 as the upstream server through udp + +a filter file like this + +```json +{ + "twitter.com":1, + "facebook.com":1, + "google.com":1 +} +``` + +you can special multiple filter file and upstream dns server + +Blacklist file +============= +The blacklist file contains the ip that the message will be dropped when the ip dispeared in the upstream server reply + +the blacklist file like this + +```json +{ + "113.123.21.43":1, + "31.53.23.12":1 +} +``` diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..8fa245b --- /dev/null +++ b/docs/index.md @@ -0,0 +1,54 @@ +# gdns +a dns proxy server write by go + +gdns much like dnsmasq or chinadns, but it can run on windows. + +Features +======== + +support different domains use different upstream dns servers + +support contact to the upstream dns server by tcp or udp + +support blacklist list to block the fake ip + +Install +======= + +```bash +# get the depended library +go get github.com/miekg/dns +go get github.com/vharitonsky/iniflags + +git clone https://github.com/fangdingjun/gdns +cd gdns +go build + +# generate a sample config file +./gdns -dumpflags > dns.ini + +# edit the dns.ini and run, need root privileges to bind on port 53 +sudo ./gdns -config dns.ini + +# test it +dig @localhost twitter.com +``` + +Arguments +=========== + +use `gdns -h` to show the command line arguments. + +all arguments can specialed in config file or in command line. + +there is a sample file in the `config_sample/` directory. + +Third-part library +================== +use +[dns](https://github.com/miekg/dns) +library to parse the dns message + +use +[iniflags](https://github.com/vharitonsky/iniflags) +library to process the command line arguments and the config file diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..0ddfc4d --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,8 @@ +site_name: gdns +docs_dir: docs +pages: + - Usage: 'index.md' + - Command line options: 'command_line.md' + - Config example: 'ex_config.md' + +theme: readthedocs