1.大家最关注的,翻墙,防止DNS被劫持。
* r% c1 `1 W( P) M3 |资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果
% N5 p8 o6 v7 O4 j5 T正常请求一个被劫持的域名,当然是劫持没商量了# _+ N, ^% E: Y8 m
5 ~5 y0 l r1 i
Sam@Bra:~$ dig hen.bao.li, [+ d4 y6 i5 P7 Z! o. F0 H* ?6 L
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
9 C0 k4 s) x/ Z;; global options: +cmd) O' n5 H6 \5 K! p
;; Got answer:9 V+ r( }, B" p2 E
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859. Z o' w: A# S( J2 t# R+ s
;; flags: qr rd ra% \' S; S! O2 n" P) }& X1 X
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0- f2 |# j* L' T1 b+ c% Q4 O( |/ K# S
;; QUESTION SECTION: ;hen.bao.li. IN A
1 z, O. P6 r" _1 |. c. T;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15, P; s* i8 h: G6 Y* p% a% C! N) ?
;; Query time: 0 msec% v* |5 K* m3 M# [. A
;; SERVER: 127.0.0.1#53(127.0.0.1)- ]4 b0 I$ s r+ y' T
;; WHEN: Mon Dec 7 23:18:48 2009
+ f. Y1 u6 H+ g+ C;; MSG SIZE rcvd: 44
+ k0 U ^; P" x0 Q" W) H
2 c: Z1 m: _9 y3 cSam@Bra:~$ dig hen.bao.li; I# p$ w8 i- o1 v5 e
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
- U' S# d) N3 i/ A;; global options: +cmd& C8 g+ B# ]. L$ Y6 `/ _
;; Got answer:, x- h6 P$ ]% x0 @5 O }- f( R
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859+ y7 i' ^ d' Q6 j0 U4 `; f1 o2 h
;; flags: qr rd ra6 I. J) M& J! Q. V
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 08 l0 s- R: H3 F x9 n- Q2 N+ O
;; QUESTION SECTION:
8 n: t* J! G6 Z6 Z* h* h8 O;hen.bao.li. IN A
/ X- p7 ^, `% j0 f( X& L1 R. C;; ANSWER SECTION:) m( N5 U2 q- j% b
hen.bao.li. 85697 IN A 78.16.49.15
/ {- m8 @5 i _/ a# {$ u;; Query time: 0 msec
, g+ Q* [) d9 k/ g& g;; SERVER: 127.0.0.1#53(127.0.0.1)
5 o9 t% x0 w4 ~# N' _& |! V;; WHEN: Mon Dec 7 23:18:48 2009
8 H& J4 h3 [0 t$ k3 D;; MSG SIZE rcvd: 445 \ i: J2 J- D% T# l
# H- T% X6 v6 B+ D
然后再看用了Google Public DNS后,照样劫持你没商量
% z6 N0 Z9 v' d% d0 x, @0 U7 }* X4 k* S4 ~
Sam@Bra:~$ dig @8.8.8.8 hen.bao.li0 Q5 I3 T6 X& v" Z! r' H+ @
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li
8 j2 V3 v+ {5 q% D# F; (1 server found): Z# a" \" Z% X' N' k0 ~7 |
;; global options: +cmd
5 ^# ~* A" l' `$ q1 Q' A( Z7 W;; Got answer:. @ ], k$ x! L! Y7 E. i
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485
% K9 D2 `. g& i" ~- P$ P( ~: E;; flags: qr aa rd ra( l" J' z1 w. h# q/ z
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
# ~' [3 [/ ~# };; QUESTION SECTION: ;hen.bao.li. IN A
( C1 g0 _, P4 t) F3 R* F;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15# J# l, G3 b' t! |' f0 Q p$ z
;; Query time: 75 msec% [# i$ V6 }9 Y* v$ t
;; SERVER: 8.8.8.8#53(8.8.8.8)
2 c& |1 {1 A" N- E" q, G/ |8 Q;; WHEN: Mon Dec 7 23:20:58 2009+ n2 Y0 Z; M! D; @/ C, U
;; MSG SIZE rcvd: 54
6 Y, j# C2 D5 {8 \: g
k9 o8 W$ L& g/ p. H: Q我们看看国外机器得出的真实结果
: T8 X% }' S6 g V8 @: c% ?4 O& W, Z7 w o, d+ P* T' q8 {7 |
[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li6 i8 G0 X3 _! g$ a+ o2 Z' i
; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li+ f0 j6 m4 l9 F6 v; ?9 }/ c
; (1 server found)
' E$ F* [7 ~3 v$ [3 @;; global options: printcmd0 l. j: k7 K, a' I$ e% c! ?
;; Got answer:
: M- n/ t$ o8 I7 C. x5 T( `& O;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845
) Q8 X. Y; H6 p$ T" q! i# t1 B;; flags: qr rd ra$ Q' m+ A2 a# Y P
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
# j" A* I( [( z. W7 u. c/ i( X6 k: L;; QUESTION SECTION: ;hen.bao.li. IN A
2 ]" p+ H9 e) _* I& @; Q- Y;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.440 q3 n3 Y& T0 l! C, s
;; Query time: 252 msec+ E4 r& n8 Q9 e
;; SERVER: 8.8.8.8#53(8.8.8.8)
5 U2 t8 ~6 a9 u$ c;; WHEN: Mon Dec 7 23:25:12 2009& w5 D1 \5 b# H
;; MSG SIZE rcvd: 44
6 ~; T2 ]9 z& C6 ?0 t+ I9 n" ~ M) c
可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。! v+ J9 {' E' m3 a
) v1 u6 `$ p9 d* }2.解析速度快0 t. G+ B; [5 [. b6 S" }
. z4 c: s" J! a' q7 BGoogle Public DNS解析速度是挺快的,但OpenDNS就未必了
. x* x+ [, e0 }1 D5 s
4 \$ e% ]- z0 G; A% MSam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com
: K9 O7 c- `, D1 K6 a% N; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com
" I! x' T. G. Y! E' g$ O; (1 server found)0 R. V4 j6 `) t* X7 I( o
;; global options: +cmd
* K; Z' ]& |4 e3 H;; Got answer:1 [( g3 F* J- K' P0 L
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404, {* N; S$ F% S$ O. z$ Z6 ^" I1 x
;; flags: qr rd ra
. ^) K+ L2 ~8 c# E! g; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0- @: v/ Z: C0 f( g$ @: T
;; QUESTION SECTION: ;www.dnspod.com. IN A Z q' o! C9 N( @) g# Y
;; ANSWER SECTION: http://www.dnspod.com. 600 IN CNAME http://www.dnspod.com.cdnudns.com. http://www.dnspod.com.cdnudns.com. 300 IN A 61.172.249.96 http://www.dnspod.com.cdnudns.com. 300 IN A 218.244.147.137
* U4 N/ S9 ?* D4 L# u1 M$ A) V% D;; Query time: 608 msec
9 M6 h, f5 V, A; Z* k& {2 |;; SERVER: 208.67.222.222#53(208.67.222.222)1 k; W" F$ l: H' \+ A7 c
;; WHEN: Mon Dec 7 23:29:01 2009
0 l( D& s }/ c7 \" b8 |& F;; MSG SIZE rcvd: 101% @0 r2 t' p$ U( h
% m( x ?& v; S7 S3.最重要的问题,访问网站真的快吗?0 P2 B' o' h B0 S) R5 E; Q" J2 ]
: t, n$ W! U- q+ B( Z+ @相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。 A: u( W& c5 T' y/ j
7 d9 b( @: |9 z5 _ f
大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。3 h7 F$ _$ {- d$ ]( ]! q$ [6 |
3 c/ G+ `" q+ \: [网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。
. \8 j. R/ I; E) z
( d9 J2 z4 G* T6 ] X, [" t0 b& c智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。
+ H. h& C I, v3 m$ Q; l2 o$ P/ R/ H
1 a. D# Q! T( n. }) p但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。
( v% j+ g+ g& f" r( Z3 b; P0 }1 g* |& g6 \8 M8 r+ s7 w
如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。
5 o8 h; q7 i8 z- W2 Z$ i
4 q3 i3 O2 u0 \- C返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。) V* p- E @8 X" s- o' k
" S% i8 Q: f7 q7 h' t5 Q9 p( q5 `
本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。' ^: U* U9 V& h/ D5 t( t: ?* J
9 a s6 R+ y: c拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果
) H, t/ u3 [5 z# C) k
! x0 ~2 W- [+ _* u6 v& N4 Y) ?! @Sam@Bra:~$ dig http://www.google.com+ D5 l& Q6 ~4 n5 Q- j0 Z0 n
......$ b* u- a* Z1 `" \- a; L
;; ANSWER SECTION:
. H7 S6 {( y* w! y: `0 Hhttp://www.google.com. 48102 IN CNAME http://www.l.google.com.- z) m4 T6 c% ]0 R6 f5 t) @! U
http://www.l.google.com. 300 IN A 216.239.61.104
( O- T# w$ T# o+ O2 G) M0 k. ~7 Z
如果我用了OpenDNS的话,那么我得到下面的结果8 l: z3 `1 K" ]. D& C
" P; e# M% e' K( ]9 q% k jSam@Bra:~$ dig @208.67.222.222 http://www.google.com
* A# X- o0 S5 d" g1 a......" v( p+ D. ^5 K2 h4 N
;; ANSWER SECTION:
! s! Z! ]7 h2 d5 i# h# A& U& q& Bhttp://www.google.com. 30 IN CNAME google.navigation.opendns.com.
: N V7 d+ U/ x4 t/ @google.navigation.opendns.com. 30 IN A 208.67.219.230
* _4 B6 O3 f3 X A4 D2 V( Wgoogle.navigation.opendns.com. 30 IN A 208.67.219.231
9 H! V' A) r% k& j
, `# n" v2 |! V, i/ f7 r. L& i9 z1 [7 Jping一下得出的IP地址,看看速度,其实并不快6 W& w" j; _0 b/ d
4 G2 k4 x W) O8 n; n
Sam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes1 D; {2 H* o- a3 X% G8 y. y
64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms: Q. }- d, V5 z s
64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms& O9 ]& t, q" p' k( V
64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms
+ K; x( {5 @# f# F' t^C: ?6 y4 G8 K( Q
--- 208.67.219.230 ping statistics ---( m$ L( f0 S, x7 U! c
3 packets transmitted, 3 packets received, 0.0% packet loss5 A2 [8 j' O4 Y4 f
round-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms
, |2 _" C5 N3 N1 L: }; p: j8 t/ j. p- e& Y) t/ p; [
我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。
, f( z! L& B/ u7 P" }& n- ]) o9 c
我网通DNS直接解析
+ k) X% o4 z1 N% J; s
# g5 `! _6 o6 LSam@Bra:~$ dig kaixin001.com
3 B/ V( h1 x: _6 @9 n......2 V, j' s6 E4 F6 l8 `/ m
;; ANSWER SECTION:
! q1 p V k% Lkaixin001.com. 120 IN A 220.181.100.31
# p3 _1 [' u. lkaixin001.com. 120 IN A 220.181.100.32
! i! n1 K) v$ ~ r% ?% f$ ukaixin001.com. 120 IN A 220.181.100.33, S5 J) F8 F3 l- j9 J# }+ d
kaixin001.com. 120 IN A 220.181.100.349 G# p9 x% ]: v1 H/ t# v' O. ?
kaixin001.com. 120 IN A 220.181.100.352 i2 ~6 } a! `
kaixin001.com. 120 IN A 220.181.100.303 t$ W, P! F" X9 F
# n4 V' n8 [+ \2 h, {
如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP' ~* {, e, @' x+ G
, d; c5 e$ {" ySam@Bra:~$ dig @208.67.222.222 kaixin001.com ......8 i7 h- E! C7 U& Y4 B' a5 f, R R
;; ANSWER SECTION:
& Y* Y* h. t6 P: S: I) f) E. b" U* Skaixin001.com. 60 IN A 123.125.58.247& G5 |# V- r. J
kaixin001.com. 60 IN A 123.125.56.246
7 e. ~' T7 M( h/ z/ T. B3 q- c7 |kaixin001.com. 60 IN A 123.125.56.2470 {; u' B9 m9 U- c
kaixin001.com. 60 IN A 123.125.56.2455 L! g/ s3 F& E5 y+ j2 _
kaixin001.com. 60 IN A 123.125.56.248
( `. E1 y8 ^4 j, ~* j4 `$ T; S$ skaixin001.com. 60 IN A 123.125.59.20: e: F4 l% [) T; N
kaixin001.com. 60 IN A 123.125.59.16" F- J: e$ y3 ?+ h* j. ]/ B/ n2 R1 b0 Y
kaixin001.com. 60 IN A 123.125.58.2484 J4 c! I5 q% D3 h0 f
kaixin001.com. 60 IN A 123.125.58.246/ T: l6 s$ W/ o( }' J" d
kaixin001.com. 60 IN A 123.125.58.245; ~6 z0 x* X2 h! q
$ p/ O Y+ ?) ?- G# E9 R" [
中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网4 L3 }' k3 U, Q7 X8 S3 j
! U. |5 V5 W5 J( V& n网通直接查询,可以得到网通服务器的IP
% b& r9 I4 Y' S' R1 @1 H2 k4 ^" B7 Q. |2 P
Sam@Bra:~$ dig shooter.cn ......, ]- i7 }5 [$ O, U7 I& @/ x' ^
;; ANSWER SECTION:
( o4 D4 |1 \+ N3 M4 cshooter.cn. 800 IN A 218.21.130.42& ?/ P- a$ d: Y; g
) v1 P2 ^* [2 l0 I: n1 c网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP' `! D% h. B) B7 a1 l( H' r8 j
8 { g: _ q0 b9 Q! A
Sam@Bra:~$ dig @208.67.222.222 shooter.cn ......
3 U2 I: g: A8 G; G( M;; ANSWER SECTION:/ K. _8 b9 w/ E( @0 Z* l( p" j! W8 b
shooter.cn. 750 IN A 74.207.252.170
* V. ]" M, F- @/ d$ i# L2 o" V* c# M# T2 \
这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。
: a" L F* [7 {2 w/ E9 h% y
+ \3 I+ K t0 w: E国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。 |