1.大家最关注的,翻墙,防止DNS被劫持。" S1 z+ w6 v5 c- {8 S
资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果 A! a6 f- S# {% p+ A; I* H
正常请求一个被劫持的域名,当然是劫持没商量了5 K3 E5 y7 u/ {
- u/ P: A# ?2 k4 ^Sam@Bra:~$ dig hen.bao.li$ h& N! e8 C$ @1 W: ^
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li5 q7 O9 p1 J% ~
;; global options: +cmd& Q: v- ?" h* q; {
;; Got answer:6 n1 U7 c/ B& S7 m+ W$ e
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859
8 D. C. c) U7 W' X+ R& b6 ~8 L4 R' N$ A% Y;; flags: qr rd ra. \; j; w% B% E: i+ K7 ]
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0: H; p2 E7 z2 B1 F+ ^$ q
;; QUESTION SECTION: ;hen.bao.li. IN A
/ j4 a8 O8 m% Q' l& |$ @;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15
5 h6 @) O4 H M$ ?! W4 m;; Query time: 0 msec' [& I% ~: l$ r
;; SERVER: 127.0.0.1#53(127.0.0.1)& F7 G6 ?9 M/ M+ c2 ~! j
;; WHEN: Mon Dec 7 23:18:48 2009
" C6 O7 F* T0 |' l* \;; MSG SIZE rcvd: 44( J5 t( _0 F' M. `
6 W! L7 W% T7 } { a# o" o" m1 H* t
Sam@Bra:~$ dig hen.bao.li2 o D: f! o- a- ^; P
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li9 q) g5 G/ v' ?! F" `- j
;; global options: +cmd* |# ~. @( _: Q2 D7 I, Y) y8 Q9 S
;; Got answer:
3 Z9 e/ q7 o) r5 W& T) J; |;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859
; I/ w7 X# o' L/ J2 Z+ Z;; flags: qr rd ra+ X6 r: z" E' x: R4 W* S
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
, A3 Y1 s" j* z/ G;; QUESTION SECTION:
7 V6 G n* {- ]8 P6 D0 V8 V;hen.bao.li. IN A9 O" @1 B# ]. s! q; @
;; ANSWER SECTION:
) ]8 U9 r3 D) H2 i. X2 L1 Fhen.bao.li. 85697 IN A 78.16.49.15
/ Y3 l& a% s9 i' ]$ p& R2 W# w;; Query time: 0 msec
N8 t9 _. i4 G2 R. X;; SERVER: 127.0.0.1#53(127.0.0.1)4 d y$ V- p0 t0 i0 V& Q
;; WHEN: Mon Dec 7 23:18:48 2009
0 h& L- e! E( Q, }8 e( d% q1 S+ L;; MSG SIZE rcvd: 441 L4 M' H v9 z8 Q9 i
: I+ C! N4 V$ g+ P6 d然后再看用了Google Public DNS后,照样劫持你没商量
, Q! g& F4 C7 K+ [- R* J" C a7 s; e- j4 F
Sam@Bra:~$ dig @8.8.8.8 hen.bao.li/ p0 O- m. ?# z% e
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li
% B# `7 j7 S( r/ P* ]) B/ x; (1 server found)7 P1 t3 d7 R1 Z
;; global options: +cmd% e( r" w' H- @
;; Got answer:
; Y' @, h- Y% z$ X( d/ D- {;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485! p/ I D2 [$ |- v- N; d6 W* n
;; flags: qr aa rd ra+ R! m+ L8 T2 ]
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
$ ]% G+ i. b! B9 d;; QUESTION SECTION: ;hen.bao.li. IN A
- J N* A: a5 f) L0 z7 h;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15
- X1 C G4 \; u" I& ^, @;; Query time: 75 msec
& \& M4 v! X+ t; d;; SERVER: 8.8.8.8#53(8.8.8.8)
. Q' W* q+ F6 T" H1 J; }0 s$ l) O;; WHEN: Mon Dec 7 23:20:58 2009$ K' @- F/ l. f+ z. v3 ^
;; MSG SIZE rcvd: 54
' K$ F' n* D) ~3 z4 s5 }1 n
' v, I0 U/ }: L, ` ~我们看看国外机器得出的真实结果
3 S$ C/ v$ {' N. w
4 v2 \" o5 @4 B# n j[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li- O. x e1 ^) O4 a& K
; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li
: m% E) O- D0 X4 z, J; (1 server found): m/ u6 u% @8 Q9 O U+ p9 ~
;; global options: printcmd
" ^( _( I) D; T) w+ W;; Got answer:
+ C1 V- L1 q) ~0 F) i/ r$ I;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845
4 t& L, ^2 T1 j;; flags: qr rd ra
9 F% F1 k2 }# U( V' T8 z; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 02 V8 \! o5 z' `5 h) |1 r' e
;; QUESTION SECTION: ;hen.bao.li. IN A
' F1 L8 _2 h6 W- I6 |;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44
% q$ x4 w8 K9 O;; Query time: 252 msec
7 ?' B9 h& d. s! n, d& d0 H;; SERVER: 8.8.8.8#53(8.8.8.8)
$ \" J. F( x* x* z, m9 O, _2 a# l: m;; WHEN: Mon Dec 7 23:25:12 2009) p/ C* P+ k' h9 T$ o: M
;; MSG SIZE rcvd: 44
& x x7 k2 g1 F! E6 t2 \7 h9 S; \) z" P6 N8 E
可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。' o2 d6 E6 D; J! O Q% T. t
/ Y6 h6 t1 ~! S2.解析速度快: v# l, z1 y) b5 p- `; K3 `( U
8 V9 g/ c$ J$ q, M1 |" g
Google Public DNS解析速度是挺快的,但OpenDNS就未必了) d! d9 v/ A- u2 l
/ k3 z1 w9 \* |7 ASam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com
: e* G4 Z; n# U5 e2 U, H3 J9 r4 a; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com8 |: Z3 @* P* I4 _; ]5 ?
; (1 server found)
! u, W( U' Y& t6 ?8 n2 S2 E, z1 p;; global options: +cmd
* u6 e% `, X" l;; Got answer:, M3 O+ k4 J: x/ ?$ W
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404
9 Q3 Y' U8 }) C% A" P;; flags: qr rd ra
0 h8 w, a+ l) G& \5 u* @9 s; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
8 G: u) d- m B& f2 R;; QUESTION SECTION: ;www.dnspod.com. IN A
6 f. K u: l& m& a! I' e* U& H;; 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* i9 [0 j. V5 ?. `
;; Query time: 608 msec
* Q7 g0 v: J" T5 c( }0 F4 |;; SERVER: 208.67.222.222#53(208.67.222.222)
6 N1 z, Z1 m7 {# x$ M5 U; ?% o* L5 a;; WHEN: Mon Dec 7 23:29:01 2009
, C. d' {5 W. Q( _! l4 B) D;; MSG SIZE rcvd: 101" s. U0 T! [/ _ W+ h/ R: R
8 G5 v4 ` E) _3 r+ n3.最重要的问题,访问网站真的快吗?0 b9 |( M& {; X P
* r" X. w1 v- K" z) ~: \+ }3 `
相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。+ W5 g. e# ~% u1 l% S
z' y& C# I6 R
大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。
' ~' g1 Y! Y, r4 Y3 A
[1 ]% T- K/ W0 N' c5 n网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。
3 d- s, t& B6 G
h8 c: z7 _% T& U( x: u# }智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。
. \4 i# q6 k P$ X' L
8 x. ~8 S7 j+ D' q; b: t$ B5 ~& }但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。$ E" |: f. ]" j# _
, J- T4 h" x" h" Y
如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。& {" t$ E# S+ H0 I: G
( Z! X1 w4 ~% e! W" i. ^) O2 s返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。
9 _4 `) O0 ]- s6 a: v! T( E' K4 {4 K$ U9 q/ m* B. H
本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。( a9 d& @; i9 W( m! @: N: s
: Q. M; B+ z* s1 z( S拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果3 \0 I+ {# o' ~. V; s2 @1 j2 Y' G
' F8 h% V% u3 v) m$ h# m' d
Sam@Bra:~$ dig http://www.google.com& e( w7 h2 H, h+ |
......8 z+ {) s* l- w m; F
;; ANSWER SECTION:- y: k- G2 Z% k& e9 y7 j% R
http://www.google.com. 48102 IN CNAME http://www.l.google.com.
0 |* X8 X- ?0 |$ ~. E+ C$ ~http://www.l.google.com. 300 IN A 216.239.61.104
. I3 Q9 v" j) Q \+ X! K/ ^9 O4 A3 [
, `' t: b' L! H8 O# i5 S! ^$ y如果我用了OpenDNS的话,那么我得到下面的结果
/ z8 t" H: Z$ z
1 D- H* y- \; p5 G% C jSam@Bra:~$ dig @208.67.222.222 http://www.google.com1 A" X8 H& z* u: N; ?
......
# d$ c6 B6 G5 W |$ H;; ANSWER SECTION:
7 x; i* F" h! W2 f0 bhttp://www.google.com. 30 IN CNAME google.navigation.opendns.com.
* Y! ?" K) s, s+ Q6 t' h" ^google.navigation.opendns.com. 30 IN A 208.67.219.2302 x, n: F( O! u/ Y3 c r
google.navigation.opendns.com. 30 IN A 208.67.219.231
8 ?1 S5 G9 J5 {0 u# x5 y& U: ^
9 Z/ J3 s! p9 T4 i+ O- ^4 {* R, Hping一下得出的IP地址,看看速度,其实并不快" e4 |5 k& Z, [$ P# b4 X
3 R3 y' f8 x9 _/ S p: G7 V( }
Sam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes1 Y0 U* o- P! _
64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms9 i/ R% _- @+ Y0 c8 L* @ |% e! s9 i
64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms7 N9 I- B C$ I/ ]& Y
64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms
5 H% Q( ?* n6 ~9 x$ a6 q; h, J^C- W) J5 f8 c) t x2 b
--- 208.67.219.230 ping statistics ---3 r3 r" G3 C8 Y7 S
3 packets transmitted, 3 packets received, 0.0% packet loss8 v! q! n+ R! t2 ^/ t# m
round-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms
: _! Q6 t* w5 ]# H* x1 F5 W$ d1 g* }+ v8 D H
我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。! n$ P- H! |' m
- ~, K ^1 D' D( B( z5 ~* R我网通DNS直接解析* Q: a( A$ [% h. i8 k0 i
+ n8 ^8 B. K* g4 r5 f
Sam@Bra:~$ dig kaixin001.com
' C* R4 [- S/ Z$ g% z; B......- A1 R4 `, Y4 s- b" x& L
;; ANSWER SECTION:' I! F+ ]9 w) |0 H# ?" d7 j
kaixin001.com. 120 IN A 220.181.100.31# Q2 f' J7 b I. d4 Z
kaixin001.com. 120 IN A 220.181.100.32 ^) w% A6 W* ]& N N
kaixin001.com. 120 IN A 220.181.100.33! K6 Z, |! O4 j
kaixin001.com. 120 IN A 220.181.100.34% h- T2 L+ l; Q2 s# U
kaixin001.com. 120 IN A 220.181.100.35
, g' s; P E, r0 r; @4 h# T/ jkaixin001.com. 120 IN A 220.181.100.30
# B Q/ R$ B+ B" S" O! ~- V6 t4 Q& z7 O' {; _
如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP6 k0 J/ U6 v; t6 w" P# j s
) f; Z# H' r1 e1 z6 ~9 N* H1 o. {Sam@Bra:~$ dig @208.67.222.222 kaixin001.com ......
4 \9 f4 j+ a2 E' V+ U# k;; ANSWER SECTION:$ A1 J$ w8 x0 v K# a
kaixin001.com. 60 IN A 123.125.58.2474 c- o- E3 R1 M# P
kaixin001.com. 60 IN A 123.125.56.2464 | a6 x9 B+ ]. N- B) y' F
kaixin001.com. 60 IN A 123.125.56.247
! c0 x* d! i! b, d8 M+ Lkaixin001.com. 60 IN A 123.125.56.245# U# p+ a$ ^: J5 {
kaixin001.com. 60 IN A 123.125.56.248
/ G2 M3 o) d1 b/ L! D* E5 d, ~kaixin001.com. 60 IN A 123.125.59.20
+ I% ?$ D: ]5 R) V& h$ e2 lkaixin001.com. 60 IN A 123.125.59.16
6 R. Z0 S; Z$ q$ @0 z' Bkaixin001.com. 60 IN A 123.125.58.248; J. Y3 j; e" S, ^/ G
kaixin001.com. 60 IN A 123.125.58.246
3 ~ { `+ D- R& Z* \0 Qkaixin001.com. 60 IN A 123.125.58.245
6 I$ H; O3 n0 y4 q- B+ c* Q/ e6 K; H( v/ B+ W
中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网$ X3 i/ C& r$ @( @+ ~
% \: P2 q( d/ B) {2 y$ ]% L9 H. W网通直接查询,可以得到网通服务器的IP& Q5 T% f6 e( R7 `5 u
) Z d+ O/ ]" f- R4 }Sam@Bra:~$ dig shooter.cn ......( I$ w0 I T# D f0 g! u! o: H* ~! W
;; ANSWER SECTION:& S7 Y. Z. ?9 L- Z1 m! P6 b4 v9 ]
shooter.cn. 800 IN A 218.21.130.42$ C9 l1 ?8 T4 R8 v8 z! J
8 V3 ]5 F# F. F0 n8 i& o
网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP
A- U+ z/ N! e& w1 `7 m" l( Q, z: h) N# f# n
Sam@Bra:~$ dig @208.67.222.222 shooter.cn ......; _7 x5 A, i# ^8 Z7 b) K7 x4 G* f
;; ANSWER SECTION:
- N$ Y/ } J# A. u7 x+ @shooter.cn. 750 IN A 74.207.252.170) H" K- p' E& i
/ _2 |. r4 ?& Q/ w( P! I# w
这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。) g& Q" s# n+ n1 f; i- j% U3 ^5 M
5 M) A1 ?+ b w; w国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。 |