1.大家最关注的,翻墙,防止DNS被劫持。
" q1 f4 j7 j! J( C9 }9 r. D% l4 W资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果/ Q8 f5 W& ], `7 w6 u& n! d
正常请求一个被劫持的域名,当然是劫持没商量了
. N) a4 N* @& H3 m% ]4 \8 c: l v9 _
7 p. r5 b& `# k) dSam@Bra:~$ dig hen.bao.li
2 _! o% @5 a" | c" G; G: Z$ v; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
0 v; o" f. V: L s9 c3 k;; global options: +cmd% k" C/ k/ j- b/ U3 i! B, O: ?3 x
;; Got answer:( J, B! t4 Q( f2 a( W8 }# l/ [
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 508599 H+ W' a! q& t
;; flags: qr rd ra/ n8 Z1 l' {* b4 u) y
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
+ L# ?* i4 z% w9 J;; QUESTION SECTION: ;hen.bao.li. IN A% _( u4 r. _: h, q' ~ i
;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.154 U8 h: A' H9 f
;; Query time: 0 msec
0 J" V9 E W4 E, T; A;; SERVER: 127.0.0.1#53(127.0.0.1)
2 E' F/ f5 E' ^& X* P$ p5 C1 E;; WHEN: Mon Dec 7 23:18:48 2009
. u7 f0 ?% a1 Q4 @;; MSG SIZE rcvd: 44
g: C* A( e6 o% g( l7 F# w3 |- Z1 D; v, [- k3 b
Sam@Bra:~$ dig hen.bao.li- j9 d: |% y" p" W4 K0 B
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li6 N: G* i8 Y: |
;; global options: +cmd5 D: m# J* q) @! \
;; Got answer:
4 a3 G7 L; C4 O7 B1 v$ B2 _;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859
* g! c; o2 V. P# y U# d: {3 m;; flags: qr rd ra2 c& t7 f* y b* W
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 09 n9 A$ ~+ h, n
;; QUESTION SECTION:4 O/ B( N: n3 f. R
;hen.bao.li. IN A% x# I- L/ X3 v9 I5 W" b: g
;; ANSWER SECTION:* m& C& h I) B, I0 p3 J: g- ]
hen.bao.li. 85697 IN A 78.16.49.158 [( c' U" K# M# n/ n4 b' B
;; Query time: 0 msec4 C9 ~8 B: F9 q2 U" p
;; SERVER: 127.0.0.1#53(127.0.0.1)
6 M8 g0 {( b2 j! L0 T& X;; WHEN: Mon Dec 7 23:18:48 2009 O! M2 e1 a Z( {: s6 G
;; MSG SIZE rcvd: 44
( Y' c% D4 h, m, B/ z
+ e4 q% k4 N( j( [然后再看用了Google Public DNS后,照样劫持你没商量
( p( k7 N) S0 e
' B" m S6 N$ S: M4 ~. GSam@Bra:~$ dig @8.8.8.8 hen.bao.li& A9 Q1 D5 a4 h9 r8 r# T
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li
7 x" x: ]- G e/ p" N; (1 server found)
) v7 q. F% m8 E;; global options: +cmd
# \0 ^5 I: m* S/ V' ?;; Got answer:
# m+ t* ~( D) ?. f3 F" i" c: r;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485! J" Z! X* ]8 Z2 ^( ^' Q3 b
;; flags: qr aa rd ra9 Y/ P" m5 a w$ t+ m" d$ k
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
6 Z5 G0 U. K7 L# o& S;; QUESTION SECTION: ;hen.bao.li. IN A9 B6 e5 k x9 D/ r; j
;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15
* `% B q+ `/ J7 ~6 G* c;; Query time: 75 msec1 ]; T6 P5 w5 ]6 V
;; SERVER: 8.8.8.8#53(8.8.8.8)( A8 q4 X" d/ W! ?
;; WHEN: Mon Dec 7 23:20:58 20097 |9 M5 E5 o8 T V& p8 F& ^
;; MSG SIZE rcvd: 54
3 d3 e+ r, X2 p8 ?
8 Y2 o! N$ N$ M我们看看国外机器得出的真实结果$ ~- a- Z4 J3 R8 w& s
& Q# Q/ ]! l Y/ \; j0 k
[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li
/ M% B+ e2 u& e2 [3 @, B! M6 N3 U; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li T, t \+ f7 P3 C+ }
; (1 server found)
* U X& A% v5 a;; global options: printcmd
6 p/ Q) P$ J v( C' Q;; Got answer:( c+ w, \" y( j5 H/ k. ]& D6 ~( O- g( T
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845: I4 X. u) B `4 {
;; flags: qr rd ra% o; i1 A% A; A0 y
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
0 r: G' h/ y7 h+ F5 y1 ];; QUESTION SECTION: ;hen.bao.li. IN A
7 e. O, C. U1 n0 `. q;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44
1 z3 g4 L) R9 f5 `% H1 x;; Query time: 252 msec
7 f$ w! I+ {5 @;; SERVER: 8.8.8.8#53(8.8.8.8)/ T+ x' O% z9 [/ W' U2 A9 h
;; WHEN: Mon Dec 7 23:25:12 2009
]; n) K8 M" t# }$ A8 p;; MSG SIZE rcvd: 44+ i, v" p$ u! ]1 z4 M: \1 |& O# Y
" t" ^7 @1 Y& h$ e; T可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。3 y9 l. G8 k4 }5 s. s3 r
/ y/ D# c, Q G0 e) y* J: \" x& z2.解析速度快- v% n& M; j2 W/ U X8 Y& F2 }
! L \! d1 `# p# L- p; p4 ~- o. [Google Public DNS解析速度是挺快的,但OpenDNS就未必了
0 h; E1 w1 p1 C4 h! m" U) |) i: P
4 I5 b4 m4 g' K- z, jSam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com
; m/ w; t# n. b" h- o2 X, d; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com
, v y" z: ~6 s* n" Y* m. P; (1 server found)
* t8 r2 O) n* K3 y: M;; global options: +cmd
4 v# Z' J; c% g# g, t) L;; Got answer:" ~" \: j7 t. D( {+ z1 x# O
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404. t& W* J1 q: _5 S
;; flags: qr rd ra7 ^% _- ~+ g0 n- i. i
; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0" t1 F$ L9 H4 i8 u9 V! q( t
;; QUESTION SECTION: ;www.dnspod.com. IN A* c' H. @: `$ m5 |& a/ {9 t
;; 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$ }) K- N; P$ P& Q; ?
;; Query time: 608 msec
+ G$ H$ r/ L4 u- x4 m;; SERVER: 208.67.222.222#53(208.67.222.222)
9 H5 g- |. B# l9 g1 g I;; WHEN: Mon Dec 7 23:29:01 2009
4 B$ x) T3 w& I* G. k;; MSG SIZE rcvd: 101- X5 C s* ^4 V3 S/ J8 p$ M
$ y6 V5 D% b; } D
3.最重要的问题,访问网站真的快吗?
. f6 M4 P, e- s" E( m* Q1 x" j% f9 z9 A+ n3 _( \
相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。- b3 @2 [2 C% i y; i
% y/ _# p3 p7 y+ @# X3 U
大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。
! P7 a3 ?% \( j4 H& V' u
" [ j/ p; V; q2 A$ K$ W0 c网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。& r1 U( e$ e" \# u" r
' t* T5 J' T" i4 f! r* \2 v
智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。
; m3 Z+ E- w% {
c j) n& v8 }' [- _9 G7 u但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。7 W% V* S2 E5 D. D
( y: X# @* N! Y1 s" T6 \2 t如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。
; Y( {6 R$ t) u" a" \6 Z& z4 H
4 x. C9 N, L) e- T, m7 K6 K返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。" O6 N& Z% p k7 U" z6 T
, a1 v. I6 j# g a# }& D8 X本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。& }: |# N: a* |
) [3 z+ V* ]5 \+ W; }' ~
拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果
7 F) a* \2 v( F3 b3 h/ ^" [ g3 J+ s) @6 f8 N. s1 |
Sam@Bra:~$ dig http://www.google.com1 ?8 o- q/ m/ E/ N {2 i: N" S9 `+ R S
......
2 Z. z9 R: p$ u% k0 H3 {;; ANSWER SECTION:
( d7 y b" ~. e2 B8 {5 uhttp://www.google.com. 48102 IN CNAME http://www.l.google.com.
7 y4 ~+ l/ j# S! xhttp://www.l.google.com. 300 IN A 216.239.61.104
* n- ], w1 q1 Z5 D+ Y
( K* `8 h4 h: Y4 P2 i K z如果我用了OpenDNS的话,那么我得到下面的结果
% C' Z& ~( |. U
6 E$ l# z' u4 L& ?1 S( w6 _8 OSam@Bra:~$ dig @208.67.222.222 http://www.google.com
5 E( {# ?! Z B {5 s5 G1 G: L. ~......
7 P& @, p9 z b9 N6 G) p;; ANSWER SECTION:% ~- A. U4 d5 z" s8 k7 p
http://www.google.com. 30 IN CNAME google.navigation.opendns.com.
+ ]1 i/ J7 v# _! x* vgoogle.navigation.opendns.com. 30 IN A 208.67.219.230% S I( z. J3 v9 c
google.navigation.opendns.com. 30 IN A 208.67.219.231& Y: B' o0 [1 w* q7 m! N& t
) G+ E4 E1 k- G' aping一下得出的IP地址,看看速度,其实并不快
! f1 d! Y* ~, Z$ M. x
1 W; M7 g1 t6 u% USam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes' E" \7 j0 z$ f$ H+ g
64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms
/ r; c% b2 T$ ~0 o* p64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms
J1 c8 m3 }+ c c6 u* P64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms
% U. }0 x; b z! r) e& Z^C; s6 M+ [& U+ U* t+ g1 g
--- 208.67.219.230 ping statistics ---: I m% c; x+ v; l5 Z
3 packets transmitted, 3 packets received, 0.0% packet loss& C+ K* Q0 h. J
round-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms
# X2 S4 I, u- |- E' G8 ~+ Z4 q H- h
我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。; l+ W& P- w* F8 s' ~: P
8 t5 F! T: @+ E. T% z! Q' o我网通DNS直接解析
8 i$ V M, L% Y! M8 W* U6 b3 o) d6 A2 L
Sam@Bra:~$ dig kaixin001.com
0 W* @( I( `' P/ U( ?4 t......
3 d3 b0 J. S9 O7 P5 _;; ANSWER SECTION:
! K3 }9 @& Z$ b1 b/ H# M& Fkaixin001.com. 120 IN A 220.181.100.319 h4 J- p7 q- s8 l) ~/ b
kaixin001.com. 120 IN A 220.181.100.32
" p1 N6 v% F) T# Jkaixin001.com. 120 IN A 220.181.100.33
+ e1 k$ D5 {2 g7 C( [kaixin001.com. 120 IN A 220.181.100.34
: f6 G0 c" {5 E5 R8 W2 Z% @kaixin001.com. 120 IN A 220.181.100.355 R+ i) c/ Z# F2 M) Y6 F4 A
kaixin001.com. 120 IN A 220.181.100.30
- ~0 O1 l, T0 W8 r/ A! R8 K: N4 F9 B4 T" l9 U/ K
如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP
+ w& `# [* t3 O' H P
2 e4 D" ^& |2 t3 c, s% ]! ySam@Bra:~$ dig @208.67.222.222 kaixin001.com ......! b. Q3 u5 O, Y( z
;; ANSWER SECTION:
" @/ |1 Z4 J' ?- b: _5 J8 O5 mkaixin001.com. 60 IN A 123.125.58.247
; H& n# `! ~1 [7 k; b# T# h( Vkaixin001.com. 60 IN A 123.125.56.2469 W3 b6 d' C; r( M3 L1 R8 I5 ?* q
kaixin001.com. 60 IN A 123.125.56.247$ m. W8 m' q' @5 O2 Z7 e; C2 S5 b
kaixin001.com. 60 IN A 123.125.56.245) y' q# r/ W9 S4 \
kaixin001.com. 60 IN A 123.125.56.248; h+ [, Y$ y7 [0 }3 v$ o
kaixin001.com. 60 IN A 123.125.59.20
7 \) Y& Y* N3 G8 R/ Fkaixin001.com. 60 IN A 123.125.59.16
7 Q4 [2 d* d# E+ U6 C: Qkaixin001.com. 60 IN A 123.125.58.248
6 l9 V- R- \$ j6 ?; Qkaixin001.com. 60 IN A 123.125.58.246
! l$ ^, `; J. [4 {2 w' u6 w! z, okaixin001.com. 60 IN A 123.125.58.2451 R" S' I0 C: f
9 a9 ^6 P3 \: H7 u中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网3 _4 K; e# g4 g. j: X! x; ~
% y7 \. C0 M" ^. [: R" R网通直接查询,可以得到网通服务器的IP
( ^1 l% g. F* N% ^
, x# {# A/ c& D# y3 cSam@Bra:~$ dig shooter.cn ......( X; g* k3 u( A: | [! [( m* ~: H
;; ANSWER SECTION:1 G$ k+ D k# o$ y( b7 f: }& L5 S
shooter.cn. 800 IN A 218.21.130.42
9 C+ s. }* X+ j; G8 N$ H! u( t0 W, v7 @8 A
网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP
& S6 ^) j( ?9 W+ I: O& u0 n
$ `6 Z ~: [- H `/ P6 b+ bSam@Bra:~$ dig @208.67.222.222 shooter.cn ......1 g8 {1 i2 X; `5 w4 E( h! H" T0 \+ b
;; ANSWER SECTION:0 n3 f1 Q4 z6 T0 [1 ~
shooter.cn. 750 IN A 74.207.252.1707 ^! C r- k0 j; `' L& y+ M6 V
# f, b7 b! i5 ~
这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。
/ T% K: K# X4 c3 i1 k6 x4 s
: T$ m# x9 `6 [! A( W4 i2 N国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。 |