Posts Tagged “http”

之前为了穿墙和正常访问校园网两不误而在90上架了个DNS。昨天facebook hackercup里穿墙的90代理也是给力的,不过facebook就不怎么给力了 ╮(╯▽╰)╭ 扯远了,虽然不是最初的动机,不过即然架设好了DNS Server就会自然而然的想折腾一下,提供一些内部用的短域名。比如直接将zoj, nhd, icpc, printer解析成ZOJ, NexusHD, ZJU ICPC-HOST和218打印机的IP。不过为了省事,最后是改用了一个自己yy的.acm的根域名,只要简单修改bind9的配置文件,在/etc/named.conf.local中新加一个zone:

zone "acm." {
	type master;
	file "/etc/bind/acm.zone";
};

并且新建一个文件/etc/bind/acm.zone内容如下:

$TTL	604800
@	IN	SOA	acm. root.acm. (
			      1		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			 604800 )	; Negative Cache TTL
;
@	IN	NS	acm.
@	IN	A	10.71.101.90
9	IN	A	10.71.101.9
;; ...
70	IN	A	10.71.101.70
90	IN	A	10.71.101.90
90	IN	AAAA	2001:da8:e000:90:0:5efe:10.71.101.90
192	IN	A	10.71.101.192
zoj	IN	CNAME	acm.zju.edu.cn.
watashi	IN	CNAME	watashi.ws.

A记录对应ipv4,AAAA记录对应ipv6,CNAME记录对应别名。于是都可以如法炮制,其中特殊符号@代表current origin,也就是没有任何.的acm,而zoj对应的是zoj.acm,并会转到acm.zju.edu.cn上。注意最后有一个点,和url中的/类似,如果以.结尾表示是绝对的,而不以.结尾的则是相对的。

当然也可以邪恶一把,比如修改并加入两个zone,并加入下面的zone file:

$TTL	604800
$ORIGIN	shouji.360.cn.
@	IN	SOA	shouji.360.cn. root.shouji.360.cn. (
			      1		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			 604800 )	; Negative Cache TTL
;
@	IN	NS	shouji.360.cn.
shouji.360.cn.	IN	A	250.250.250.250

$TTL	604800
$ORIGIN	mail.139.com.
@	IN	SOA	mail.139.com. root.mail.139.com. (
			      1		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			 604800 )	; Negative Cache TTL

@	IN	NS	mail.139.com.
mail.139.com.	IN	A	209.85.227.17	; mail.google.com
mail.139.com.	IN	A	119.147.15.56	; mail.qq;com

前面做的事情就是流氓了一把360,把shouji.360.cn解析到了不存在的IP 250.250.250.250,于是访问将会得到诸如Connection Timeout(连接超时)的错误。不知道生活在天朝的同学们是不是对此似曾相识呢 (  ̄ー ̄) 第二个就要更流氓了,如果你访问mail.139.com,那么实际可能随机访问到gmail或者qq邮箱,这也是个做负载均衡的例子,嘛,我只是建议别用139邮箱啦 >▽< 你懂的。

然后猛犸同学给了个不错的建议,就是利用这个DNS,能不能做到在地址栏里输入zoj2011之类的题号的时候就直接跳转对应题目的页面上去。当然DNS直接是做不了这个事的,DNS联系的是domain和ip address这两样东西,和http都八杆子打不着,而题目页面还是一个具体的url的http请求。不过仔细想一想其实分两步做就很简单了,简单来说就是泛域名+根据HOST重定向。所谓泛域名其实就是

Comments 4 Comments »