A lightweight yet useful proxy DNS server designed to cope with complicated Internet environment in China, inspired by ChinaDNS , dnsmasq-chinadns and fqdns, powered by Python Twisted.
Requirement
- Python 2.7(其实要求python的版本最低为3.4)
- Twisted
- Tornado for using Tornado IOLoop(optional)
Install
- Linux/Mac OS X:
# Clone this project $ sudo python setup.py install
- Windows
Usage
Run
sudo simpledns
on your local machine. Then set your DNS server to 127.0.0.1.$ dig www.twitter.com +short twitter.com. 199.59.149.230 199.59.148.10 199.59.150.7 199.59.150.39
Note that the default cache lifetime depends on the ttl of DNS answer. You may want to set a larger ttl using --min-ttl to extend the cache lifetime.
Advanced
$ simpledns -h usage: simpledns [-h] [-b BIND_ADDR] [-p BIND_PORT] [--upstream-ip UPSTREAM_IP] [--upstream-port UPSTREAM_PORT] [--query-timeout QUERY_TIMEOUT] [--min-ttl MIN_TTL] [--max-ttl MAX_TTL] [--cache-size CACHE_SIZE] [-t] [--hosts-file HOSTS_FILE] [--dispatch-conf DISPATCH_CONF] [-v {0,1,2}] [-q] [-V] A lightweight yet useful proxy DNS server optional arguments: -h, --help show this help message and exit -b BIND_ADDR, --bind-addr BIND_ADDR local address to listen -p BIND_PORT, --bind-port BIND_PORT local port to listen --upstream-ip UPSTREAM_IP upstream DNS server ip address --upstream-port UPSTREAM_PORT upstream DNS server port --query-timeout QUERY_TIMEOUT time before close port used for querying --min-ttl MIN_TTL the minimum time a record is held in cache --max-ttl MAX_TTL the maximum time a record is held in cache --cache-size CACHE_SIZE record cache size -t, --tcp-server enables TCP serving --hosts-file HOSTS_FILE hosts file --dispatch-conf DISPATCH_CONF URL dispatch conf file -v {0,1,2}, --verbosity {0,1,2} output verbosity -q, --quiet disable output -V, --version print version number and exit
Configuration
Configuration file is at /usr/local/etc/simpledns/dispatch.conf.
Dispatch conf file uses the same rule as in Dnsmasq. 'Address' and 'Server' rules are supported.
address=/example1.com/1.1.1.1 server=/example2.com/1.1.1.2
Default dispatch conf file is from dnsmasq-china-list.
Fake ip list file is at /usr/local/ect/simpledns/iplist/txt. The source is ChinaDNS.
from https://github.com/skyline75489/SimpleDNS
用法:
sudo simpledns --bind-addr 127.0.0.1 --bind-port 53 --upstream-ip 8.8.8.8 --upstream-port 53--------
SimpleDNS,又一个DNS代理服务器
我就开始在网上找其他的解决方案。我找到了ChinaDNS和fqdns。他们解决DNS污染的思路是,将GFW返回的假冒记录忽略掉,这个思路比我之前想方设法得到正确的结果来的简单多了,不过局限性也很明显,需要维护一个GFW的假冒地址列表。还好GFW那帮人看起来也挺懒的,来回来去就用那么几个地址,一时半会儿应该不会怎么变化。
ChinaDNS支持的功能比较少,fqdns支持的功能多一点(国内域名使用国内DNS解析,强制TCP等)。但是有些我想要的功能它们都没有,比方说我很喜欢Dnsmasq的address和server规则,可以很灵活的根据地址配置不同的DNS服务器,还有pdnsd的根据min-ttl设置缓存时间的功能。等那两个项目的作者开发出来看起来是不现实了,于是我就自己用Twisted框架写了一个SimpleDNS,它支持了这些功能,同时由于使用了Twisted框架,保证了代码的轻巧和灵活性。它是我现在的DNS解决方案。
PS:在中国想好好上个网实在太费劲了
PPS:折腾了半天,还是Hosts大法好啊.
from https://skyline75489.github.io/post/2014-9-7_simpledns-the-proxy-dns-server.html
--------
相关帖子:https://briteming.blogspot.com/2019/10/godns-proxy.html