1.大家最关注的,翻墙,防止DNS被劫持。
( f4 v. K9 b! j) {2 i资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果
3 [& r( V+ G/ G$ Q* w5 ]+ a: O2 P正常请求一个被劫持的域名,当然是劫持没商量了: q/ L3 t1 `/ _3 E2 ^1 E- N! R
. l+ d! f w' g" h1 t/ Y
Sam@Bra:~$ dig hen.bao.li4 t y8 X/ {8 N; ~0 s4 J
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li% _7 o- l; X# h/ h8 p
;; global options: +cmd
. z7 y) w( d0 _+ S0 J e1 g0 P. e5 _;; Got answer:0 J( d" I) l" _
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859$ W% f0 F4 P' R# M! g% ~
;; flags: qr rd ra
7 y I, ~- p8 f1 P0 }* c3 W; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0$ b A8 A3 |: T0 J0 l
;; QUESTION SECTION: ;hen.bao.li. IN A# S0 r0 B4 j2 z0 P" T5 M2 B1 l9 v
;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15
9 ?+ f8 W) L) {9 K% \* m- d;; Query time: 0 msec
& R- W' P1 `* Z8 b* ?" h;; SERVER: 127.0.0.1#53(127.0.0.1)( J; z2 n. m: k0 ]9 {
;; WHEN: Mon Dec 7 23:18:48 2009" D* y- r( s" U9 L* n* G# J
;; MSG SIZE rcvd: 44
4 b$ v8 K1 f5 }0 A: W* H5 s# L' C; y5 a+ W3 ?" |" ?" q% x8 R
Sam@Bra:~$ dig hen.bao.li
" @+ a" z W: s/ T; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
- H; U3 l1 q# q5 X;; global options: +cmd: l# F0 B5 E: q" c+ d
;; Got answer:
3 w" P B4 {& X8 C; M% P2 B;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 508592 @: M4 M! l$ c: m, a
;; flags: qr rd ra
- n1 U, d+ {, V2 x; R; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
+ y5 [1 S: [# Q4 P9 {/ n;; QUESTION SECTION:
* c; ~4 x9 @: V, q3 z;hen.bao.li. IN A
4 x5 l7 n( w# ~1 t. L;; ANSWER SECTION:3 ^" y* \1 z" N5 |; \1 `9 _- P: n& V& f
hen.bao.li. 85697 IN A 78.16.49.15- P J) n' }8 f/ u2 `
;; Query time: 0 msec9 C Y0 @0 h m, z- W" d- L
;; SERVER: 127.0.0.1#53(127.0.0.1)1 i: V* s1 z4 ~) u: t
;; WHEN: Mon Dec 7 23:18:48 2009
7 f- j! {0 x; Q5 }) {;; MSG SIZE rcvd: 446 F1 c' ?; ~# k6 U r! M, P
* |1 j- I4 M, d
然后再看用了Google Public DNS后,照样劫持你没商量
* v1 @- a9 Y2 f5 f0 ]5 R1 r! t2 I5 p, B- y4 j/ \1 J+ O+ ? y
Sam@Bra:~$ dig @8.8.8.8 hen.bao.li9 {2 l, ~0 U6 f2 \
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li
9 Y6 i/ d3 r' l2 [; (1 server found)
& E, n+ ?+ s0 F$ ^* y, R- q;; global options: +cmd
/ B( {# ^* Y+ B: L. };; Got answer:
[6 Y- k+ h3 L6 g& t;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 154859 {$ U- T4 g2 \
;; flags: qr aa rd ra( U( {( I' ?( A. U
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 06 d! \8 [7 K1 q: d; [; K2 d0 j& Y
;; QUESTION SECTION: ;hen.bao.li. IN A% N, k Y- j% b' c* F4 g5 V" B
;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15
$ }5 x3 k ^* q+ D& t4 d;; Query time: 75 msec
9 l' B! b' L8 h* v" f;; SERVER: 8.8.8.8#53(8.8.8.8)
$ D7 l; q/ m1 j2 ^;; WHEN: Mon Dec 7 23:20:58 2009
# @9 ^- h; V/ j. L# v;; MSG SIZE rcvd: 54
+ l3 X* Y, N* r5 g; [2 A, I M I# B' R* A* ?/ c
我们看看国外机器得出的真实结果
1 p5 J# Y) S" z0 t! `" j8 a) n! i7 z4 X1 |; Z% t
[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li
! k% U1 G5 X9 z% D+ ~3 j1 ^( \; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li
1 H# \. r6 \) {+ ]; F* t/ [; (1 server found)0 |; L/ J% c e' ^
;; global options: printcmd
7 K; Q' Q( @% |2 w) W;; Got answer:# t. v& V |$ I/ J% Q% E
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845
% f N" Q2 \! P3 K3 A% A$ B;; flags: qr rd ra d9 u- V$ i% H1 c" y. R! O
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
; a' B1 Z$ h( }" p: j& N5 n;; QUESTION SECTION: ;hen.bao.li. IN A
7 y( L' c5 G) c$ B- i. C;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.440 G5 h1 p, s0 y
;; Query time: 252 msec
8 j; Q/ U; E- T, L" `3 ^' K;; SERVER: 8.8.8.8#53(8.8.8.8)4 h$ i% E( Y4 {" h1 D( k
;; WHEN: Mon Dec 7 23:25:12 2009( f" g5 R2 y7 d: u
;; MSG SIZE rcvd: 44# D8 M8 p& X9 Z
; _- N1 H) x0 h9 {: L
可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。; D' x0 g9 j/ k
4 h5 H( R. Y1 N: z- L: K* i' c7 f9 V2.解析速度快, S( n+ ^: y. L" H
& E" R/ i5 N, n" j! k7 r
Google Public DNS解析速度是挺快的,但OpenDNS就未必了
( O8 t9 O* d0 W
% }# {: a; T) A+ V# z8 i9 g5 @Sam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com0 E2 `5 L, E8 }. W5 J; K
; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com9 r: N5 P0 Y; e {3 Q
; (1 server found)
5 E4 u, k! L7 f6 s& L;; global options: +cmd4 C7 P; X! C% a j
;; Got answer:: L% G* u0 `- a" c2 {/ Q$ K [& |% t
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 174044 |9 Z/ H7 P. T( ]( q' B: i
;; flags: qr rd ra, c8 s# |* `1 i$ h- H
; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 08 `6 A# ~/ L& ~% P
;; QUESTION SECTION: ;www.dnspod.com. IN A
, B3 H/ X( \' b4 |) 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
$ j9 k0 r! ], W q; \: C+ n; V" M( r;; Query time: 608 msec
3 a0 |1 I) ^& f5 ?+ r;; SERVER: 208.67.222.222#53(208.67.222.222)+ T" A+ c- K7 e8 G {2 |
;; WHEN: Mon Dec 7 23:29:01 20099 b) y! d. c/ ? t+ }
;; MSG SIZE rcvd: 101! a) r0 Q- s$ C' V0 y
! j \* A; K- v5 V2 b3.最重要的问题,访问网站真的快吗?
' f6 Q1 [& | a$ ]( P, Y' [" ^5 K8 y* _0 A" E9 d
相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。
! a1 j* J2 f- N+ @4 P% K$ P3 B3 g
7 H; d4 R' c* r8 Y% x. h大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。$ L# N, B# j7 g9 G
_2 Y2 D6 r, A/ n _- t' X: h, B; A网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。$ C5 d8 w+ b5 m' Y- c3 F
% ^3 N7 M. M9 G智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。
8 H0 B3 ?8 j) F1 N9 \0 I$ u+ I& U1 Q- I
但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。
0 u2 L1 A& E/ \3 C: h; V. K9 e, V5 j) Z0 e0 Z
如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。6 M$ o) R4 E* d' H( D# s
3 ]% ^+ N; [! v* S/ @. g. p返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。) L; n+ V% M' ^; X; R
$ A3 ~! K) p7 d3 K! O) n; P2 x: }本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。8 q8 I. A. V7 K. G
! `4 D% }4 r/ w6 K) K拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果' J& K. ]% V2 r% h
% l) ~2 H0 l& Q p
Sam@Bra:~$ dig http://www.google.com
& {! x7 S8 ]$ ~* z( m......' V4 a- c5 c9 ~5 c) C0 D; [' C
;; ANSWER SECTION:
w6 o2 A9 Q" n( [http://www.google.com. 48102 IN CNAME http://www.l.google.com.
7 H, Z1 z! o' l' d/ `http://www.l.google.com. 300 IN A 216.239.61.104
3 M0 r' T% ?. m. d) t" I- [* ?
+ d" @* o3 I7 I% X如果我用了OpenDNS的话,那么我得到下面的结果6 w: \, Z+ `$ O% u9 `
, D: Y3 U% }8 P+ Q8 Y1 R
Sam@Bra:~$ dig @208.67.222.222 http://www.google.com
* A0 Y2 d+ P B2 L j8 ~8 @......4 @: n9 d: T* G
;; ANSWER SECTION:! m" o& H8 j: m# [9 E4 x, v
http://www.google.com. 30 IN CNAME google.navigation.opendns.com., I2 p: x( S$ H5 o$ J
google.navigation.opendns.com. 30 IN A 208.67.219.230. A! N- T" z" E {: y
google.navigation.opendns.com. 30 IN A 208.67.219.231, C4 _2 b6 J% U% b# d1 Z
a' W8 ?" ?- c9 _5 h4 R8 eping一下得出的IP地址,看看速度,其实并不快
* [0 F' ^$ ~ K2 D
2 q/ {( f$ u' `2 c& [9 dSam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes7 Q q- M! a. O, n2 n4 d% I
64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms
6 T3 ]; L+ f( V% P4 I64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms' C$ _4 _3 a; {
64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms* ~6 k( w2 B- E) @* P
^C7 i) B3 z2 C# k3 O% z0 _
--- 208.67.219.230 ping statistics ---
% s. F4 r! R5 K( s9 W3 packets transmitted, 3 packets received, 0.0% packet loss
8 B# g# E; S! m) E eround-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms# @& d/ ?7 w2 q' X
4 D f D7 S) }( |% s5 x6 Q我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。
9 A6 x) y2 b# H
; Z; ]6 d1 `' J& _- c- e我网通DNS直接解析# U" ~; B0 J) I
: q2 a6 x B7 J5 m) ^
Sam@Bra:~$ dig kaixin001.com
* M6 h( W6 ?# Z4 X6 v6 a0 L0 ~0 ^......3 }4 \1 X5 T( c
;; ANSWER SECTION:
& V6 O: }" m9 m! F" S& O: Skaixin001.com. 120 IN A 220.181.100.31
+ C2 d5 U+ |( O ukaixin001.com. 120 IN A 220.181.100.32: f1 l# t: h$ C& p
kaixin001.com. 120 IN A 220.181.100.332 ^. C) i$ u5 T+ @6 S$ H3 b
kaixin001.com. 120 IN A 220.181.100.34
3 a$ W- o1 W6 H y: hkaixin001.com. 120 IN A 220.181.100.35
4 F* E* \' s! u/ D. Lkaixin001.com. 120 IN A 220.181.100.30, L' w& q: e* l" T* w7 I3 `
5 G3 z8 Z. Y+ E+ V$ h
如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP
# V1 ]% [- g' b4 N
# @: O$ i: _- b% m8 c+ p3 I$ O, [Sam@Bra:~$ dig @208.67.222.222 kaixin001.com ......6 t# p, O& D4 }' {1 `
;; ANSWER SECTION:/ l/ [6 t6 }. B" N
kaixin001.com. 60 IN A 123.125.58.247
* V: e6 M$ g' B& `kaixin001.com. 60 IN A 123.125.56.246
8 e: n6 N/ m7 Bkaixin001.com. 60 IN A 123.125.56.247$ I7 o1 c- T( V/ H
kaixin001.com. 60 IN A 123.125.56.245
" U5 ], t) G$ \! s2 ckaixin001.com. 60 IN A 123.125.56.2489 ^$ A3 R3 n: e% ]8 P, ?0 \7 @, t
kaixin001.com. 60 IN A 123.125.59.20
6 ]0 O5 A1 u: Bkaixin001.com. 60 IN A 123.125.59.16
0 F, W/ A% B* s/ D$ Q/ }kaixin001.com. 60 IN A 123.125.58.248
" G( v V/ F {# {, pkaixin001.com. 60 IN A 123.125.58.246
" K; t( j0 P, ~) l% P# _kaixin001.com. 60 IN A 123.125.58.245
- Q0 ?# I% w! i& T2 U2 _2 G# d! Y, k" v" n# w3 A$ c/ A6 n- o2 J" V
中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网3 `1 P! z- B2 |4 {8 L4 J
6 O$ g1 ~( ]1 u, ~ c7 i1 }
网通直接查询,可以得到网通服务器的IP) [9 M5 A1 X6 ~- c* R; E4 b
' ]4 m& T9 e1 [+ p& R
Sam@Bra:~$ dig shooter.cn ......
7 v' a6 S9 ` B; P;; ANSWER SECTION:
* q. c+ F( u! sshooter.cn. 800 IN A 218.21.130.42# d! P, G& J6 U4 r( m9 v
7 e- b8 s' C" [
网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP8 ? D; _2 g1 D7 C* M
/ E, b% |; a; [/ s& o" D
Sam@Bra:~$ dig @208.67.222.222 shooter.cn ....../ W& y3 K: Y' [0 h
;; ANSWER SECTION:5 W( A' u3 \+ J2 u4 i
shooter.cn. 750 IN A 74.207.252.170" O2 B$ a9 q9 G, z! ^/ U: b
) X2 r$ w; ?+ s. J) b) g( o8 ~
这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。6 D# N3 g6 C& {* g l
/ F1 i. s' i' O+ C
国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。 |