1.大家最关注的,翻墙,防止DNS被劫持。; h. l8 s1 U0 M# S3 q/ G7 K
资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果
" L4 q7 d+ ]5 m; {" w9 ~1 e$ K, B正常请求一个被劫持的域名,当然是劫持没商量了1 B$ h$ e- L: W- {) ~* }4 i
4 f' ^9 ~2 T, w8 ~6 E6 J& J6 ESam@Bra:~$ dig hen.bao.li
( k6 H0 |( D3 \. ?; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li+ l+ `. R$ n: x5 w" ]; u
;; global options: +cmd# V# M% S5 {9 B6 w% j' [
;; Got answer:
4 v$ p9 h5 E) l: p' P;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859
& T5 D- p, Y% o6 |/ r;; flags: qr rd ra% u/ ?7 E! b/ R5 L
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
7 h3 v% @$ w2 y' [0 K;; QUESTION SECTION: ;hen.bao.li. IN A9 X3 k" A" Y; A- \+ P4 E
;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.153 ~4 B" w+ d- I0 m
;; Query time: 0 msec. a, c2 T2 K4 N' c
;; SERVER: 127.0.0.1#53(127.0.0.1)3 }# A& g U& v) k8 _
;; WHEN: Mon Dec 7 23:18:48 2009
9 v' i0 Z) _$ R7 T* k$ a;; MSG SIZE rcvd: 44
; z+ { s! `) h. P5 X" V" @3 B! R, n6 Q
$ K' o9 `# I, e1 \- J( Z7 o% oSam@Bra:~$ dig hen.bao.li
6 x4 W3 V6 _4 V; Z. B& @; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
1 I) j1 O& w0 x. x% ~8 l;; global options: +cmd3 f. l" `1 i: P A" r/ A6 v9 ^6 ^" g
;; Got answer:: q L9 o/ }! \2 y7 j( y; v
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859- j# x% `; j+ N. \# }: q
;; flags: qr rd ra/ M; a- T. m7 T& I: U0 f+ l
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
- G+ y! ~3 I l2 D. N6 g7 O4 w5 F;; QUESTION SECTION:
: R; d) p* o, ~) m, G2 ?;hen.bao.li. IN A I$ W, T! f7 M g9 m
;; ANSWER SECTION:, W7 H! L6 W9 I
hen.bao.li. 85697 IN A 78.16.49.15
% x9 y% a6 X, M+ I" f! T4 ?$ s. {;; Query time: 0 msec) K2 x; U( e/ J* E- _
;; SERVER: 127.0.0.1#53(127.0.0.1)
9 h6 ~- J" t% M- z& g- G2 O% m;; WHEN: Mon Dec 7 23:18:48 2009
) Y/ D0 A) ^$ j. e* w5 s- O;; MSG SIZE rcvd: 44" r# D8 I7 p3 t
! L) K5 f1 H! L6 I( H! N
然后再看用了Google Public DNS后,照样劫持你没商量$ y/ U4 x, E! n% s
" w" } y J' d2 k6 {6 _# wSam@Bra:~$ dig @8.8.8.8 hen.bao.li7 r0 u+ ~$ _; x1 A% ]* N
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li: a9 R* u2 C' d) _. v
; (1 server found)2 m* i- P4 `1 f. Q: [" O. E: t0 K8 t
;; global options: +cmd
* _- h$ P7 m( g2 f: G) \;; Got answer:& L2 X$ d1 h( ?6 b* p2 m6 N
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485
% E. O, [9 m1 A( @2 W0 M7 v9 q;; flags: qr aa rd ra) _; ~# O( X; r& m/ E- G h; l. e% M! ?: v5 T
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0- c. o; x! r; e* U% n
;; QUESTION SECTION: ;hen.bao.li. IN A
( l- p4 X9 X( r+ j;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15
, X- L! q9 `7 T& @;; Query time: 75 msec
) ^) X5 p. f# L;; SERVER: 8.8.8.8#53(8.8.8.8)9 `! j& B6 o o
;; WHEN: Mon Dec 7 23:20:58 2009
& g$ @* _, i; @9 v;; MSG SIZE rcvd: 546 o6 R! E! z* r8 x& Q$ u+ L* G' ?
. N3 m' \* y% o& L( b6 g我们看看国外机器得出的真实结果
% s2 J6 z6 N/ F; d) Y
$ U. F* ~- X0 r8 U# m U/ r[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li% i- r. F0 U5 M. I: I0 D: K, r# |
; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li! h0 Z- R8 ]+ H- K$ x
; (1 server found)
* d3 ~5 r$ c8 b9 F2 I;; global options: printcmd
2 X5 x! W+ O+ m: p. F# ~: {;; Got answer:
4 F7 a% S* Z; e+ `;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 208456 j' V x7 q7 c# j# Z7 N' G
;; flags: qr rd ra6 J- ]* f f( {' l# O% m" u0 d
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
$ k! C7 q b& @; };; QUESTION SECTION: ;hen.bao.li. IN A+ e a. d2 N* d' q+ Z, e- f
;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44
# C4 m9 W" r0 M;; Query time: 252 msec$ J7 ]2 _, Q0 E; a
;; SERVER: 8.8.8.8#53(8.8.8.8)
5 f! Z) ^# {* u: e. ^ U7 ?$ v;; WHEN: Mon Dec 7 23:25:12 2009' G" e" m8 ?8 R( p6 g7 \1 F
;; MSG SIZE rcvd: 44; p4 q- O( X! B) {9 y
" J9 P- X- K! O: u& U6 L, N: E
可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。) V, R0 E2 r4 N
3 g8 ?% T! ~( f2 o+ e( P7 T' U2.解析速度快
' R; ?" r: g# c+ o( Q6 |
/ C& Y+ D1 u6 h$ q2 BGoogle Public DNS解析速度是挺快的,但OpenDNS就未必了
4 f w6 Q0 c5 A7 j6 O" a! W8 `; P3 x. R8 i5 I. Q2 S2 v. Z
Sam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com
) R% g4 n! p( u; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com
( v3 A/ X* w+ v; (1 server found)! L8 m P( F5 D! e8 B T8 t9 D% U# f
;; global options: +cmd, C& Q& ]' H& }# @/ @# C4 H2 n
;; Got answer:
_, M) X; {* _ K;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404
5 W1 f' y: T+ C9 ?;; flags: qr rd ra
. c9 j$ |- F7 u$ {; d; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
, L8 _1 d9 j+ z, F6 o7 J;; QUESTION SECTION: ;www.dnspod.com. IN A7 Y( p* d {% b/ @
;; 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
4 _9 w0 }. }9 D( g% O* V;; Query time: 608 msec) U. d1 ^. n* R! A5 E
;; SERVER: 208.67.222.222#53(208.67.222.222)5 F: r: W1 \$ K, V+ d# X* K) _+ R
;; WHEN: Mon Dec 7 23:29:01 2009
3 {$ A, t3 X( I6 i9 h6 \ o/ c;; MSG SIZE rcvd: 101
5 O; t$ P6 }# K5 f1 z
5 Q5 H' ?/ I7 t4 }3.最重要的问题,访问网站真的快吗?9 b, {( }" I. g4 ?
9 e: a5 Z' G( P2 S
相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。
6 _# H/ ~; P' e/ M
% s0 \* E% i1 a大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。
1 O v% q7 n7 f8 T$ e( E0 I, {* n! s% F2 `6 d5 e' \
网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。$ i p) G$ L) B O# b' u+ p
. k0 v7 V+ O2 z. F/ @
智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。
$ n& \% ?2 `3 ]5 [: ~: T' U
: {4 I8 s1 e' v' o但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。) L7 K: J$ J+ Y' o
6 [' O( y# Z. v1 _
如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。6 `/ V$ x6 @/ |: \, n/ w& K/ _" K+ ?
& k* M( _& h. u) ?返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。2 k1 B% p6 w* j. e5 W
8 S1 F$ N0 \1 V5 Z0 }
本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。
% h; U1 b, ?( C$ a- y4 \
' w. n( j6 [+ e4 T! Q$ _拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果
: y; Z! m$ r& o2 K+ O3 j
B# p0 H& a+ aSam@Bra:~$ dig http://www.google.com
- L; X1 a2 u, c- P3 i......
- p% t8 S6 T6 ? m; @( A3 s;; ANSWER SECTION:
0 a( q; m4 t/ [8 i6 ghttp://www.google.com. 48102 IN CNAME http://www.l.google.com.! E6 K6 o% i, L$ w# L
http://www.l.google.com. 300 IN A 216.239.61.104
* ~/ N/ r" q; u' z- s7 J/ f T
! y J7 l+ Z% S( X, P. ~如果我用了OpenDNS的话,那么我得到下面的结果
) }% Q% D+ ~1 ?& |$ t
8 p, g/ ]) U m: bSam@Bra:~$ dig @208.67.222.222 http://www.google.com
u4 I- [7 ~2 Y1 d7 _......
5 S6 i6 @. G: t( g;; ANSWER SECTION:. O' ~# o' ^: J3 s9 p# w
http://www.google.com. 30 IN CNAME google.navigation.opendns.com.1 g% Z8 M0 @% n
google.navigation.opendns.com. 30 IN A 208.67.219.230
6 Z6 N4 ?+ T" G& T! D, Igoogle.navigation.opendns.com. 30 IN A 208.67.219.231
# d f, f) _2 A
0 A* X) r$ e/ x, u3 S3 r' ]: fping一下得出的IP地址,看看速度,其实并不快
& t( \. g; f, `
$ \1 {9 C8 g$ O# O n0 ^Sam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes | {+ f: c+ R0 ]
64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms* t3 c7 _. C# W: u5 O
64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms. O' L' j) S* D3 ?6 ?# V& g
64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms
r4 q! u/ z/ `1 b% a^C; b t* d, g: k2 b' o/ b/ f
--- 208.67.219.230 ping statistics ---+ W6 a3 _* Z* q0 z& [- }& W7 |
3 packets transmitted, 3 packets received, 0.0% packet loss
+ G2 O0 b/ c# C1 Z% fround-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms4 r4 \8 `$ g4 O
- v& e; i" K! e- R9 k
我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。
+ C! O) V7 E$ I5 j+ z3 t# W; Z" {1 d, O- M5 l
我网通DNS直接解析
! q: |! x* n6 n3 ?$ H v
8 }: @. L! h/ ]Sam@Bra:~$ dig kaixin001.com
& T% k' G: |( j0 _0 Z0 ~/ n' _......
: {! R \2 [7 v" `- o# P;; ANSWER SECTION:
( `( A3 T: G$ d8 n. bkaixin001.com. 120 IN A 220.181.100.31$ d5 b; x/ O) |3 h
kaixin001.com. 120 IN A 220.181.100.32; c- X$ e5 m# \8 b
kaixin001.com. 120 IN A 220.181.100.33" {: }' w1 M$ G. `
kaixin001.com. 120 IN A 220.181.100.34
" d8 D' \8 {: @+ f2 O" J6 `9 Skaixin001.com. 120 IN A 220.181.100.35
% e* i, A' h/ w' c% C/ n2 U# i3 _kaixin001.com. 120 IN A 220.181.100.30' V7 R* K3 M8 n4 M0 S, D
) u* @# ]/ G6 F1 q7 d, w) F& V如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP
! o% h/ S" X# O5 x) c( K2 P2 c) G8 U& I% a1 o
Sam@Bra:~$ dig @208.67.222.222 kaixin001.com ......( D O1 A, i0 k+ C5 s1 [6 o. Y# [* D
;; ANSWER SECTION:$ N+ w8 l6 B% p
kaixin001.com. 60 IN A 123.125.58.247" f e% Q' @ L7 m
kaixin001.com. 60 IN A 123.125.56.2461 ^5 Z( ]) p& x3 ^- F
kaixin001.com. 60 IN A 123.125.56.2477 y8 o: X: i1 C3 P ^
kaixin001.com. 60 IN A 123.125.56.245
% V* n4 K% b7 s1 w6 o, dkaixin001.com. 60 IN A 123.125.56.248
4 m: q: F# c% ^. @1 ]1 R' [kaixin001.com. 60 IN A 123.125.59.200 |9 c4 b8 N% l2 [
kaixin001.com. 60 IN A 123.125.59.16: s. Z$ z! Q5 `/ K# |& A
kaixin001.com. 60 IN A 123.125.58.248
! F2 o! _+ a& v/ g" Skaixin001.com. 60 IN A 123.125.58.246" |& K& G. b, D
kaixin001.com. 60 IN A 123.125.58.245+ ?- [; w; q1 x& J! Z. N
" y% n- x0 }" F* G9 L5 O+ m中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网
# M3 u# R: r: I/ X9 e: h2 I, B$ T# `1 W& A/ U j- [
网通直接查询,可以得到网通服务器的IP
. M/ B" Z; x% u# Q
& P4 R; x3 s1 R7 ySam@Bra:~$ dig shooter.cn ......, x3 B* E( M6 k1 U: Q
;; ANSWER SECTION:* H% m: B& u& Y5 s: @
shooter.cn. 800 IN A 218.21.130.42
% Z' A9 W- b$ [- |; Q4 d+ l; b; S" z- i5 l1 J2 D
网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP- D3 s8 L! j( y& X! h6 M! h
+ |* W. p# N* V4 Q. r$ k5 s4 F
Sam@Bra:~$ dig @208.67.222.222 shooter.cn ......2 n, C7 r2 I8 U) I
;; ANSWER SECTION:
( C' C; a& b- c# J5 ishooter.cn. 750 IN A 74.207.252.170
+ U1 h- J% f0 A1 [1 K
/ D0 ^% ^& C7 K9 r0 e这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。6 ~, f* q" [3 {) p2 y( W
( o7 h0 `' m1 K7 l" b+ _- |
国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。 |