1.大家最关注的,翻墙,防止DNS被劫持。
, C. ?* e) j7 Y/ ^8 ?1 q5 a; i P资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果
; |+ g' r! J0 H正常请求一个被劫持的域名,当然是劫持没商量了
+ c6 u+ z, i; S3 h' l, G6 @7 g
( a5 K+ g- F% W+ k- ~1 ySam@Bra:~$ dig hen.bao.li1 s4 S# w4 K4 p, h- h+ H
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
) I; ~3 P( y3 o2 m4 W;; global options: +cmd; w5 Z9 t0 N7 [+ K& W
;; Got answer:
4 N) ], w2 ^/ f4 e! t, d$ H;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859: ] j3 [8 C, r% o$ O
;; flags: qr rd ra5 O: @' B) n0 L4 u0 K/ @
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0$ ` g; C0 B2 f: U& `
;; QUESTION SECTION: ;hen.bao.li. IN A
* s, ], {8 D3 k2 ^;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15
- `5 b" R0 l [;; Query time: 0 msec
4 B- P- o) K" \;; SERVER: 127.0.0.1#53(127.0.0.1)
( |) O! F" |5 e+ H" w; P6 P;; WHEN: Mon Dec 7 23:18:48 2009! K g% m F/ ?, s: O. U- O
;; MSG SIZE rcvd: 44# x. ^+ Q4 `2 _- B9 G! d% s3 l
" R' G4 E* C) I2 x
Sam@Bra:~$ dig hen.bao.li
3 ` u' J! o, Y4 k7 `5 F+ A; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li) h" E3 W& _% n- t+ H
;; global options: +cmd. E$ G5 z" j" ^; T( k
;; Got answer:3 Z+ N, T T+ P7 H$ V/ b
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859, L3 G: r0 K' F: e/ o
;; flags: qr rd ra6 a/ d. V, b( V
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
. J8 |% b. P& o. a;; QUESTION SECTION:
U* R$ e! O( y/ Y;hen.bao.li. IN A
# V- B3 ?' b; x;; ANSWER SECTION:6 o9 x6 M6 ^: g% [* U* R# W. [
hen.bao.li. 85697 IN A 78.16.49.15
1 x! I" [( h/ R. S" J$ e- _;; Query time: 0 msec
# L% r& x4 ~/ k, O;; SERVER: 127.0.0.1#53(127.0.0.1)0 m: k4 ?* {) G" d% n& p
;; WHEN: Mon Dec 7 23:18:48 2009
; R# t6 {" G. `8 o: G, X;; MSG SIZE rcvd: 44
" F) L: N- J" O( o
% R6 C) ^ z ]/ y2 f& D! I% Q* R" r然后再看用了Google Public DNS后,照样劫持你没商量
$ [* q9 c3 h' m0 X# _- J
, k- N+ s0 p9 _" Y9 s0 ASam@Bra:~$ dig @8.8.8.8 hen.bao.li: c# Z' L8 z7 Z
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li
# Y; t9 ]- ~7 v7 Q+ u1 e; (1 server found)
5 Q& J; p9 b1 o3 S5 E;; global options: +cmd% W, M9 v( l2 j& t' W2 G: H
;; Got answer:$ C! W+ Q3 ]( z; R( R
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485% r) v. E, Y! W& ^3 r& X
;; flags: qr aa rd ra; y, r- y7 j, A7 F
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0! R: u. Q5 p" n# z9 S. ^
;; QUESTION SECTION: ;hen.bao.li. IN A
2 I3 R& ~7 w3 l' t$ @;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15
8 A' ? E; ?3 o& w1 T. L: I, W; ];; Query time: 75 msec
2 C& ~, W# ?, ]( s. ~;; SERVER: 8.8.8.8#53(8.8.8.8)
( H# e1 y. g" _5 x& j" S" q;; WHEN: Mon Dec 7 23:20:58 2009
1 F$ R7 ^( e. s5 D' q! V;; MSG SIZE rcvd: 54% J1 Z$ C* D+ ] s9 E! `
) z# n* \9 m$ \4 u我们看看国外机器得出的真实结果
' L+ t& H# M/ U3 M C# f5 C r, h% d$ H R6 Y$ t
[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li4 D1 c. q, E9 d$ L, J8 g
; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li2 N/ _8 j' X% J7 J }
; (1 server found)
& Z- K& n1 F h& Q# B" U( Z9 q;; global options: printcmd9 f" I( X7 r7 D5 f- Z% N1 E
;; Got answer:
6 R( @9 a- [7 `# ]% D* R;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 208458 g( q% T+ n9 V7 T4 m
;; flags: qr rd ra
' O/ s( E4 L) K5 {. V( S; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0' W) p/ v) Z# L! i/ E) W- \
;; QUESTION SECTION: ;hen.bao.li. IN A
1 Y; i) j0 B E;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44
3 j( q/ t9 X; D! t9 K7 f;; Query time: 252 msec+ O( e7 h \+ n: r
;; SERVER: 8.8.8.8#53(8.8.8.8)" V9 L8 h2 \* X2 S8 C+ e$ n2 B- ^
;; WHEN: Mon Dec 7 23:25:12 2009
8 n( ^$ Z( p u% r;; MSG SIZE rcvd: 44
( R; h' P) r& X( r" ^0 V$ h* S4 L& ^6 v
可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。
, j7 ~4 p( q* x6 a) ^$ H3 O* Y5 Y6 U3 V# K3 |9 w
2.解析速度快. B# q% o, p4 N4 M
1 V! b0 B, E/ B. |0 V: ?/ C5 s
Google Public DNS解析速度是挺快的,但OpenDNS就未必了
6 O4 V/ I! }# @! n; f+ D3 h" L1 |
Sam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com
& O6 t" f3 k$ n0 g; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com# [4 q3 c; G f) @+ h
; (1 server found)
, L9 z. m$ T* m4 d6 q* E;; global options: +cmd- x% ]5 z; K, l3 h3 D7 [
;; Got answer:
! Q% o8 s" Y/ X4 ]4 N8 n+ m# D4 ~( _;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404
, V. A' K. J' f2 s; \;; flags: qr rd ra& S- z y# t( @# p1 Z
; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
5 Z. W$ D. ~$ q$ O;; QUESTION SECTION: ;www.dnspod.com. IN A3 ]8 O3 }3 J) b( o2 r
;; 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
" a* b: t7 Y w8 ?) u5 y;; Query time: 608 msec0 {0 [9 w" t8 Z, m+ Y/ v
;; SERVER: 208.67.222.222#53(208.67.222.222)$ K* u' L" Y4 y- t# K3 X
;; WHEN: Mon Dec 7 23:29:01 2009+ {/ k! [8 a& m! y6 M5 o7 y4 ?* a
;; MSG SIZE rcvd: 1011 I4 F7 v" o+ ~+ u7 M& _
: A" f) q3 ~8 W7 L) g/ f
3.最重要的问题,访问网站真的快吗?
# w0 c7 }# Y: V8 D9 _0 c: B" b9 {$ z) w1 x+ Q+ F' s
相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。
$ j1 _; M! d* _3 c7 Y' o% G- q3 b" F. R6 A4 w) u/ y
大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。
+ o% m2 w8 s1 E4 f, o, e
4 y6 y: Y9 U* ]- a网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。
% X% H m. C- K) \! X8 E# ]( q; [. ^' i9 V
智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。
, ]4 I: `1 `$ A! K' N& T4 k% G9 s K. P( x
但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。
# n8 V H! @/ c: Y1 H5 f+ ?/ q0 m; W' {1 |) E+ k1 j) _
如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。
% n: d2 s! G! N3 L- b! ^: E$ O3 {5 O4 w
返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。
9 `6 N0 W( j4 O1 {/ B# X4 g$ W/ f
9 E' p+ L! q% i" _本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。
4 L5 N( N1 v9 L/ _/ [4 Y
9 ` w+ i# _7 l, j4 f0 s: P7 z- j# t拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果2 X% A* S2 B" m! E
/ @4 U& w. D+ ]6 n. ]
Sam@Bra:~$ dig http://www.google.com* b- Q+ P ?) k- k0 x& J
......
- {* ?* ?2 ]; j/ K;; ANSWER SECTION:
% J7 _$ l% }& K8 {+ chttp://www.google.com. 48102 IN CNAME http://www.l.google.com.8 _, J- F% x& X2 b( I
http://www.l.google.com. 300 IN A 216.239.61.104
1 J8 l4 q8 |* g0 ?& \) {" V+ ?( S% S& `1 |
如果我用了OpenDNS的话,那么我得到下面的结果) m% n: S# w2 p( t8 y
4 ~+ _) U. S2 MSam@Bra:~$ dig @208.67.222.222 http://www.google.com
2 C% o# e i* c+ u6 J......
# t1 ]& p% N' r5 o" A* l;; ANSWER SECTION:$ M% b5 A0 j. P: L. C% D; r
http://www.google.com. 30 IN CNAME google.navigation.opendns.com.2 } Y! [' R! y' f! U$ f' ~
google.navigation.opendns.com. 30 IN A 208.67.219.230" l' `0 J" U# T
google.navigation.opendns.com. 30 IN A 208.67.219.231
% k( R9 _) x( i+ }; ], F+ Z0 m. o6 r& ?# H0 e) e. M
ping一下得出的IP地址,看看速度,其实并不快
( U1 ]+ Y) ?* W1 a
/ h6 ^# U% P4 v/ J7 h* N$ `Sam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes- ~# g' t# N8 T
64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms
& C7 Y' G) F2 G, S64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms7 o* A/ A3 ~% ]9 v/ i5 Z7 m6 H
64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms
$ W- R2 E# l( K6 W% n/ T0 |^C7 B' b0 r9 E4 X* \4 } ` i) L
--- 208.67.219.230 ping statistics ---
. R1 y$ {8 Z/ B6 N" \; ?3 packets transmitted, 3 packets received, 0.0% packet loss+ X4 b2 {" n g$ W
round-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms' y$ |; y2 h, |! Z2 f5 f
. F1 B- J, a) w! z7 J3 Q3 L! w6 {
我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。" _4 G7 ~* [+ T& [1 \; g( J/ j
5 f6 i: j, J2 _
我网通DNS直接解析" l: \/ t, H- N
9 t7 h- @( x+ I# r8 [) _" R. fSam@Bra:~$ dig kaixin001.com* P2 C3 u# j ]/ ? ?3 s9 p
......" Q; e) g2 ^: A$ q" e1 g+ e5 T) H
;; ANSWER SECTION:# z1 @6 q2 o. z S* j+ Y
kaixin001.com. 120 IN A 220.181.100.31
& C+ O+ e+ `1 T# {# bkaixin001.com. 120 IN A 220.181.100.32% l9 n- Q6 s; B* Q
kaixin001.com. 120 IN A 220.181.100.33
$ Y0 d8 L1 a6 i9 o$ B" a* Z* _kaixin001.com. 120 IN A 220.181.100.348 X/ Z u$ o: t5 J! a+ v1 R
kaixin001.com. 120 IN A 220.181.100.358 {, g3 ~) {. P4 c
kaixin001.com. 120 IN A 220.181.100.30' J6 H1 B3 Y* ]7 f+ p" X
( _% A: F& e7 h如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP
1 O X$ f# A L( D& O' X; b1 D2 X/ a' y6 x0 k+ H
Sam@Bra:~$ dig @208.67.222.222 kaixin001.com ....... { u4 H* Q/ @# g/ J: i
;; ANSWER SECTION:1 x+ Z, I6 E) a3 C
kaixin001.com. 60 IN A 123.125.58.247
7 M9 |% E4 c6 o/ {% X a+ a- Vkaixin001.com. 60 IN A 123.125.56.246
" Z0 Z" N6 s* j/ I; a7 ~+ F6 Nkaixin001.com. 60 IN A 123.125.56.2474 J& f2 [6 }0 b( c. q: ?
kaixin001.com. 60 IN A 123.125.56.245
$ o; w+ x4 q" m0 Q' ]. Rkaixin001.com. 60 IN A 123.125.56.248
. l% s# T+ \* x# ?7 Gkaixin001.com. 60 IN A 123.125.59.204 u7 S/ {; d( J* P0 ~* J
kaixin001.com. 60 IN A 123.125.59.16# s+ r d# I+ a' F3 D7 L/ I
kaixin001.com. 60 IN A 123.125.58.248
" `4 R) A) t3 wkaixin001.com. 60 IN A 123.125.58.246" {3 v7 f; r5 O2 I; U! V" ?+ h
kaixin001.com. 60 IN A 123.125.58.245
+ a1 W( m9 ?% V1 t- L. s% [4 J' t/ K9 L! h6 d' ]
中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网
1 A7 \: ^& {1 _4 _9 [, ]
/ ^1 u3 V* k q( S- E {2 t" P0 o网通直接查询,可以得到网通服务器的IP
$ c6 a0 S6 K" V/ M) D* l& k2 C) f- Y h% d- |) X
Sam@Bra:~$ dig shooter.cn ......
; q. b7 W# Q: C$ K \;; ANSWER SECTION:9 ]1 j% Z t6 U2 c5 g J
shooter.cn. 800 IN A 218.21.130.42
; p# b! Y" A( L) G
! H) w' f, k( G% ?$ b) w网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP
- Z9 V* V" I$ N* b v7 ?- T" C$ J; ]7 ? t
Sam@Bra:~$ dig @208.67.222.222 shooter.cn ......) X6 T& r' J4 X$ \5 J% U% P* m; N
;; ANSWER SECTION:
- Y1 G+ H6 S! x& O0 oshooter.cn. 750 IN A 74.207.252.170
* @# ~& ]5 ?) j) c/ A0 O+ t# b2 k( O
这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。
: D0 I9 {$ c& U+ E/ R) J9 s& j( S
国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。 |