1.大家最关注的,翻墙,防止DNS被劫持。
3 _! r( H) M4 x资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果
* q ?, l5 T1 J- u正常请求一个被劫持的域名,当然是劫持没商量了& U3 M! ?8 t; U
2 D4 a7 v# L% D* Y/ \, m
Sam@Bra:~$ dig hen.bao.li
2 z+ Z& q8 o9 v2 W4 q7 H% M K; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li* ~& u; |% H4 G7 a" f1 ^8 a
;; global options: +cmd
% D! q9 s, K4 S( n;; Got answer:: [. @5 }5 c; D! L* F
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 508598 r( b% ^$ }: \+ }- E$ f
;; flags: qr rd ra
0 J1 ?1 k0 t5 [6 v5 _9 E8 h; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0. t! f3 ~* G1 K/ c0 O5 a6 j
;; QUESTION SECTION: ;hen.bao.li. IN A* @4 O0 i/ o9 D& ^( N" }
;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15/ V6 J b( v8 f& e
;; Query time: 0 msec" T9 Z1 n/ O) G9 L( ]. X/ n
;; SERVER: 127.0.0.1#53(127.0.0.1). d5 Z; l5 Q& a6 T+ `7 ?
;; WHEN: Mon Dec 7 23:18:48 2009
4 |% @8 r" j& [9 M;; MSG SIZE rcvd: 44
! ^- s+ G7 H( h& D: c7 a/ G/ C5 s H) `* j) K' B$ N
Sam@Bra:~$ dig hen.bao.li3 Z# z3 ^4 t( c
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li) A. s3 ?9 \! M- ?; }/ G
;; global options: +cmd
+ o, b- }; N- J. X;; Got answer:/ {( _( M6 X. b
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859
5 j% u: [3 u2 T;; flags: qr rd ra
$ m. r. F' C+ L7 d3 f- E' C; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0( Y5 H3 \8 d- y
;; QUESTION SECTION:% ~3 R3 K' m+ s! B3 S
;hen.bao.li. IN A$ i4 h" d$ t4 N, G1 X
;; ANSWER SECTION:
1 Y8 L9 P9 i( y+ F" x; ohen.bao.li. 85697 IN A 78.16.49.15
3 y1 `+ H$ D0 w m: W ?$ }8 b) Y( R;; Query time: 0 msec! G( Y% ?; F! a8 q [' `3 f2 d
;; SERVER: 127.0.0.1#53(127.0.0.1)
. r0 x- _" z+ G; y Y;; WHEN: Mon Dec 7 23:18:48 2009
" Q4 A: b9 x1 K+ T;; MSG SIZE rcvd: 44; p$ m: P! }7 f
5 }. Y, I1 K5 l3 P; q然后再看用了Google Public DNS后,照样劫持你没商量3 _$ X c( _: t1 Q; j6 K/ @' }
3 n+ C( u R. A cSam@Bra:~$ dig @8.8.8.8 hen.bao.li2 d; M2 E( U+ G( d( q
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li
/ }8 b$ j) p" V4 C+ t; (1 server found)
6 Y2 ?! Z4 `9 Q7 v* Z8 s;; global options: +cmd4 [' [+ V# w- |! a* [6 I" t
;; Got answer:
! K8 z8 {+ A5 @ R4 f7 ]; m! s;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485. o, E& K( j6 Z- U
;; flags: qr aa rd ra, j2 x7 I+ f7 O4 [+ }- ?
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 00 A$ ]" E4 I" P
;; QUESTION SECTION: ;hen.bao.li. IN A% M, v+ e/ G4 `/ n: o; E
;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15" T' I! P( s8 R: H
;; Query time: 75 msec3 O3 x4 @% O* v9 ]+ Y
;; SERVER: 8.8.8.8#53(8.8.8.8)
# K: l4 _6 Y3 ~' }: j2 m;; WHEN: Mon Dec 7 23:20:58 2009
" O; Z- S3 f/ w% W: F! ]0 M;; MSG SIZE rcvd: 54
0 o M4 h% m+ D0 B& g& \ u: P# L3 ^# h Q$ p$ r8 w
我们看看国外机器得出的真实结果6 e. b$ s( y) P; `
" i( K5 Z1 u+ m: r* h( s[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li( M! O1 `, c% F9 w) \7 `
; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li
% r4 j ?' `& k" v3 @* r: d; (1 server found)! l4 `4 u$ u# S F r0 V
;; global options: printcmd: l' S) V' G) m4 A$ ]! a( v0 H; @0 K- K
;; Got answer:
9 ~ b% ^, T7 n, ];; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845' x: k ^* s* L) q" v6 I
;; flags: qr rd ra5 t2 d. n' {7 ^3 {
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0/ h7 m' H5 s9 q. {( w6 E; C
;; QUESTION SECTION: ;hen.bao.li. IN A7 H% b) y7 [! y6 e
;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44
! A6 _0 T1 x( [; h8 \2 l! D;; Query time: 252 msec
1 T9 C4 B8 z5 Y/ n;; SERVER: 8.8.8.8#53(8.8.8.8)
: R2 f O: |$ w9 U;; WHEN: Mon Dec 7 23:25:12 2009: O9 a3 H# c) F( ?% {: @
;; MSG SIZE rcvd: 44$ s: {2 N; T0 n/ h
; G$ E6 B6 U, Q6 W/ T; G) T
可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。
+ B. g& P! b$ d. {( M; m7 A, C4 @
2.解析速度快6 @! N! { X4 o" ~2 q
* M8 b- v" g* @1 ^, Z* @% MGoogle Public DNS解析速度是挺快的,但OpenDNS就未必了
4 S* m0 m4 x# Y/ }
% @0 W6 _1 |; k3 C+ A( U( fSam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com
* E1 O; i: ]3 M5 b) k+ k; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com' i( `* P% i. `$ M2 y& S+ S/ \
; (1 server found)! D, p0 p! Q8 B
;; global options: +cmd+ B' M! P& c6 d, A
;; Got answer:
4 A5 n7 O2 @, \# [! n5 n2 m# s;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404
- p2 H8 {) z+ T. ?9 p4 a" \;; flags: qr rd ra
6 o2 B9 G& A7 ^& P+ |; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
. |: O( d) o" u; P/ B;; QUESTION SECTION: ;www.dnspod.com. IN A
+ I" B& P1 u+ T; d d1 r- H4 z I; H3 ~;; 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
- _, O( U' j" q* k;; Query time: 608 msec
" o- f# ^" u+ k# n2 R;; SERVER: 208.67.222.222#53(208.67.222.222)
. d z U' j' R. n- o: Z8 h;; WHEN: Mon Dec 7 23:29:01 20095 k p; j* S9 ^+ O! K0 M
;; MSG SIZE rcvd: 101
3 C) v. F8 e& y3 s; |6 ~" i. |5 k8 N' J; i. `' V: v+ e# J
3.最重要的问题,访问网站真的快吗?
~% i, I+ L4 W' O n0 ^/ R5 C) N' P$ T p
相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。4 E8 N% c( n$ o, P$ r6 F4 Q/ Y7 p
! v& ^. ?) O+ E+ G大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。
# C2 k, ^& I9 L) ?% `6 Z# G
6 A7 _8 T; u/ a+ j. _$ \网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。
9 I. }( h+ N: i4 g1 [/ `0 { H& B2 b# S
智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。4 |) m8 h" D- W5 ]9 k+ S9 L0 F
! v5 G$ K. Y. q: G7 ~
但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。3 X$ K! t. I r# X! n7 U
3 P; Q- R- E" E' S如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。
3 M$ b1 ~2 b7 C! j& }
* b* o! e2 b4 B( k$ l' p0 \返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。2 i' h% c$ ]# p$ V5 `) p# p
- n9 { P4 r I i( n/ x本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。& |# G: C$ [* p. b; {0 a
( v' b5 ^* [# f- M: ~拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果
; w7 k$ u9 A+ P4 w# W! K0 M. M/ P
Sam@Bra:~$ dig http://www.google.com
' g& `3 I; H4 E4 G% N0 J......
' b. R- K6 `% P2 r. r1 J;; ANSWER SECTION:5 H' g: |% o4 `0 c# \& \
http://www.google.com. 48102 IN CNAME http://www.l.google.com.7 a& G3 s) l% J) j* o7 r0 E9 j$ h
http://www.l.google.com. 300 IN A 216.239.61.104$ q4 ?% T1 f6 V$ |$ k7 I+ x* v5 Y, W
- S6 r2 V- s2 Q' ~如果我用了OpenDNS的话,那么我得到下面的结果
6 w6 j2 {+ b) j! f& a* E2 F2 R [% h `. X& s
Sam@Bra:~$ dig @208.67.222.222 http://www.google.com; ~0 I; A+ V7 G" `2 Z% b$ C1 W
......
5 K. Z8 F. B( y- ]# h/ ~;; ANSWER SECTION:* j, q# a8 K& W t
http://www.google.com. 30 IN CNAME google.navigation.opendns.com. K5 r0 B2 B H! M& D
google.navigation.opendns.com. 30 IN A 208.67.219.230
! V P3 V( t& ?* tgoogle.navigation.opendns.com. 30 IN A 208.67.219.231& d" T }1 Y, T, Y3 M; y
" d& I5 z/ w: U, w- p+ k
ping一下得出的IP地址,看看速度,其实并不快
0 K9 d. A( b* o/ W" ] T! G% L1 t9 U" _. s* B+ O4 W
Sam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes
. b/ a: B3 H! U2 K64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms6 S& y. _7 l; |# k* l! e
64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms
# D4 j4 X" U* p6 Q# E# @* S- y64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms- J& V T/ T: U+ P8 v1 \3 i# X6 Y6 x
^C' q1 C+ U8 ]5 {* Y/ Z3 r
--- 208.67.219.230 ping statistics ---1 p4 C: G6 q) b! p* }
3 packets transmitted, 3 packets received, 0.0% packet loss
; e$ H) r7 a- ?* Eround-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms
, ?6 P; _. G" C% G
4 w' p1 ^ I6 H! A我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。) \+ M8 v* J m: p
/ P; B5 f/ s# C4 \3 @/ j1 G
我网通DNS直接解析
6 U g8 X# P' @0 C/ m: K/ n7 n, t" A. J9 A7 B
Sam@Bra:~$ dig kaixin001.com6 G. M, }7 K+ V9 j5 d0 a# @7 z; K0 D
...... [0 K4 ~. J5 X% j
;; ANSWER SECTION:
1 |- k* g7 `! Zkaixin001.com. 120 IN A 220.181.100.313 @, Q6 m: N+ b
kaixin001.com. 120 IN A 220.181.100.32' F8 g0 n: E. z7 w) J
kaixin001.com. 120 IN A 220.181.100.33# _5 W& c3 G9 B* m {' A1 n
kaixin001.com. 120 IN A 220.181.100.343 c+ n8 m9 {, m5 ^: S0 }
kaixin001.com. 120 IN A 220.181.100.35! S6 A) n. q6 V1 |
kaixin001.com. 120 IN A 220.181.100.30
v x% A$ P# [1 t, M; G+ _3 O2 |: D
如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP9 k* i0 }7 f4 I! d/ H0 L9 V/ x3 U
; C7 ?, W1 x9 e( o" q1 z
Sam@Bra:~$ dig @208.67.222.222 kaixin001.com ......
: s& @% d7 j# X3 O4 f ];; ANSWER SECTION: _7 Q* G+ P2 y M
kaixin001.com. 60 IN A 123.125.58.247
7 l9 `; o& J: A! |% r- bkaixin001.com. 60 IN A 123.125.56.2467 c! B$ z# w6 g5 u
kaixin001.com. 60 IN A 123.125.56.247
+ b( J) q4 d& U' o% s& A) ^: v; Ikaixin001.com. 60 IN A 123.125.56.245& r- d8 Q5 c$ g3 G. ?) u
kaixin001.com. 60 IN A 123.125.56.2484 f0 l3 \6 O7 f% z2 `, `9 U1 T
kaixin001.com. 60 IN A 123.125.59.20
; N3 |9 z4 I! s6 a& ?4 E* Gkaixin001.com. 60 IN A 123.125.59.16' ~1 C. }9 x) K- Z# H
kaixin001.com. 60 IN A 123.125.58.2484 W# g& m/ b/ H! b9 W( Y- D" d
kaixin001.com. 60 IN A 123.125.58.246
L c! D5 N/ v0 I% Pkaixin001.com. 60 IN A 123.125.58.245
7 t. K! A, R, i# g
- O4 Z9 ~4 V! C中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网9 U7 A' O; X+ q7 y, y- t. ^$ @; K, n
) V# m5 V3 ^* `( [- @
网通直接查询,可以得到网通服务器的IP
4 K# t+ k, U5 K" Q' Y1 Z7 T2 Y$ I# }3 e# G6 }$ f1 `% k( e# f
Sam@Bra:~$ dig shooter.cn ......
7 R8 x3 a" D# U- R;; ANSWER SECTION:( f: K9 p, ^) t2 C T0 h3 s, g
shooter.cn. 800 IN A 218.21.130.42! Z2 F' F, [( U0 y
, [6 t9 ~6 }4 ~1 |. L- ^! D1 [网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP& \3 P& \2 o- T
" k, t' Y, V3 Z
Sam@Bra:~$ dig @208.67.222.222 shooter.cn ......
# r$ i5 P8 U6 j* ^$ {% d/ r;; ANSWER SECTION:
' c0 \. V% G: h gshooter.cn. 750 IN A 74.207.252.170- r6 l x) V3 e% f9 P
. ]( N1 C7 {# F
这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。6 o3 h. n$ A+ T! O5 g: N: a7 M
, ~8 O0 P6 e1 l) y+ B6 ?国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。 |