架一个校内墙外应付自如的DNS Server
Posted by watashi in linux, tags: bind9, dns, domain, linux, nameserver, setting同很多学校和企业一样,我们学校用的也是A类私有地址(10.0.0.0/8),并且有自己的DNS服务器(10.10.0.21, 10.10.2.53)。诸如.zju.edu.cn的域名要么只能在内部使用,要么是双重域名。比如用校内的DNS解析acm.zju.edu.cn的结果是10.10.2.252,解析zupo.zju.edu.cn的结果是10.10.2.23。但如果换用google提供的DNS服务8.8.8.8的话,zoj得到的是公网地址210.32.0.220,而zupo则是没有结果(** server can’t find zupo.zju.edu.cn: NXDOMAIN)。这样就能保证内网外网都能用同一个域名访问ZOJ,但同时也意味着如果不使用校内的DNS,那么将有很多内网无法访问。
对与内网用户而言,用内网的DNS无疑是方便的,然而现实却不那么完美。托功夫网的福,域名劫持和DNS污染导致我们对敏感词不能得到正确的IP,即使你能穿墙,如果解析不到正确的IP也是徒劳,代理用户可以选择在远程执行DNS查询。而我是VPN用户,自然的选择是使用VPN主机的DNS,这样不但能避开功夫网的AOE,而且对于多线的网站,通常也能解析到更顺畅的IP。
不过使用外网的DNS,却又把.zju.edu.cn不能解析的问题引了回来。之前的做法是修改/etc/hosts,host被用于hostname查找,比DNS优先级高,许多穿墙教程里通过修改host避开DNS污染。不过我反过来用,把.zju.edu.cn的域名都加入host,结果水寒mm给我的host文件有近600行。悲剧的是,一、这不是完整的;二、学校服务器IP的变更似乎比想像中要频繁得多;三、新的域名不断冒出来,虽然不常有,但总会遇到要上或被上的时候。遇到host解析不了或解析不对的时候,只好人肉nslookup一下,然后还得重启ff……
所以用/etc/hosts也不是一个办法,于是打算自己架一个DNS服务器,对.zju.edu.cn的域名,返回校内DNS解析的结果,对其它的域名,返回8.8.8.8的结果。事实上非常简单就在集训队的公用服务器acm90上架好了。首先安装bind9:
apt-get install bind9 bind9-doc
然后修改默认选项/etc/bind/named.conf.options,加入:
forwarders {
8.8.8.8;
};
allow-query { any; };
allow-query-cache { any; };
allow-recursion { any; };
文档里不建议allow-query-cache和allow-recursion设为any,似乎容易被DDOS,我是不指望有人会有兴趣来DDOS acm90啦。最后修改/etc/bind/named.conf.local,加入:
zone "zju.edu.cn." {
type forward;
forwarders {
10.10.0.21;
10.10.2.53;
};
};
到此重启named服务
/etc/init.d/named restart
就可以实现完美的解析了。
试验一下
root@zjuicpc-host:~# nslookup facebook.com - 10.10.2.53 Server: 10.10.2.53 Address: 10.10.2.53#53 Non-authoritative answer: Name: facebook.com Address: 203.98.7.65 root@zjuicpc-host:~# nslookup g.zju.edu.cn - 8.8.8.8 Server: 8.8.8.8 Address: 8.8.8.8#53 ** server can't find g.zju.edu.cn: NXDOMAIN root@zjuicpc-host:~# nslookup facebook.com - localhost Server: localhost Address: 127.0.0.1#53 Non-authoritative answer: Name: facebook.com Address: 69.63.189.11 Name: facebook.com Address: 69.63.189.16 Name: facebook.com Address: 69.63.181.12 root@zjuicpc-host:~# nslookup g.zju.edu.cn - localhost Server: localhost Address: 127.0.0.1#53 Non-authoritative answer: Name: g.zju.edu.cn Address: 10.202.73.20
没有问题以后把修改本本和acm90上的/etc/resolv.conf,在最前面加上一句
nameserver 10.71.101.90
现在就不会在遇到以前那样的麻烦了。不过这个DNS只是对我自己比较有用,对代理用户没什么用。不过对qs们来说,一个好消息是现在直接用acm90上的代理就可以穿墙了
之前90上虽然播了穿墙的VPN,可以ssh -D穿墙,但是DNS一直有问题,现在好了,HTTP代理还是更方便的 ![]()
Entries (RSS)
好厉害的样子,from zjut 精弘SA‘s lz
有空也可以交流交流
liuzheng712*gmail.com
唔,能给个联系方式么
zejun{dot}wu{at}gmail{dot}com
twitter: whatasha
是v6隧道。ping出来是v6的地址。可怎么解析出来的ip地址,莫非是学校dns服务器也能支持v6(部分),因为Google系,射手网,AnimeNfo等等显然会跳到v4的外网登录页。
改了hosts半夜用Google搜相关话题居然发现这个个人网站,内网居然能上。。。。让我想起了以前踩过的几个学长大神的blog~~~~敢问是哪个大大??求认识哈。。。…(^-^) wuyumylove@gmail.com
因為你們有ipv6?這個服務器是在外面的,支持v4/v6訪問,我是ZJU的
dnsmasq不是更简单?
擦,人家又不知道有这种东西,你又不告诉人家 ~~~~~~~~>_<~~~~~~