1.大家最关注的,翻墙,防止DNS被劫持。& |( r' y7 X% f5 v8 Z
资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果% `+ h. j/ ]" Y4 g9 z, \) k. @
正常请求一个被劫持的域名,当然是劫持没商量了: h+ K! f) B8 [3 {( x# m( d
9 @! Y2 n1 j* [1 b
Sam@Bra:~$ dig hen.bao.li* [4 F$ {) `2 S' @9 W$ E h( v
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
2 }) k, D2 b! o. ];; global options: +cmd% B- V: C- a* \2 N6 n' K! v/ n
;; Got answer:; E: p" u/ g. s& f5 }
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859
$ r- W/ M2 X5 W1 G: V9 z;; flags: qr rd ra, B* X C, A. F5 j# ]
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
1 R7 z) S7 U) S! i;; QUESTION SECTION: ;hen.bao.li. IN A# \' I) P3 [* \* g$ Z7 R/ u# }
;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15
3 e9 g% P' w# F7 Z" M;; Query time: 0 msec! r# p% K" ^: Y) @
;; SERVER: 127.0.0.1#53(127.0.0.1)
* i9 A0 y5 h3 Y; Y0 E" T;; WHEN: Mon Dec 7 23:18:48 2009
. j5 t6 V* e; ^& Q- O;; MSG SIZE rcvd: 443 ~! w! Q+ ?' z- p7 H& H
: Q \; `# J9 ~0 o7 JSam@Bra:~$ dig hen.bao.li
0 b& X" \3 x0 x" ]5 Z1 J; O, n" r; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li7 }$ b( }- n% R/ m; K! @5 L. x7 `# O
;; global options: +cmd( ]' Q5 W3 e6 F, v$ C
;; Got answer:
" Z3 [7 e! O+ |' I7 _;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 508596 g+ r+ ^* v; ?) E# v$ U W
;; flags: qr rd ra. J; z: P0 v0 N: h7 Y/ ^- R
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 00 n5 ?( u7 r x8 U
;; QUESTION SECTION:. B/ K8 J9 v3 @! y, N6 j3 n
;hen.bao.li. IN A
; } v5 a- Y T$ C/ q5 X* M;; ANSWER SECTION:
* ^* r4 M2 P, I& Hhen.bao.li. 85697 IN A 78.16.49.15& Z9 Y# t3 e0 A4 k
;; Query time: 0 msec
6 X' O8 z4 L7 s) m5 T' e7 e# M7 Q6 O;; SERVER: 127.0.0.1#53(127.0.0.1)
6 K# Z1 F% W9 ?3 X, a1 \;; WHEN: Mon Dec 7 23:18:48 2009
r' A3 ?; x9 y* J. N;; MSG SIZE rcvd: 44) U) ]+ K% v C. ^
* G! G! s; p7 Y3 u
然后再看用了Google Public DNS后,照样劫持你没商量
& k( V( Y2 l$ G. ]% z- T2 k) K; m, z7 m9 i+ Y8 v( ^
Sam@Bra:~$ dig @8.8.8.8 hen.bao.li
. b* J0 v$ I- P- _7 O/ G- O; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li
( L/ ^ \2 M8 p, B0 h" q; `; (1 server found)
# d R, @' x& `! ]" t;; global options: +cmd
* t% s2 Z! D( _* K& z5 P8 y;; Got answer:
8 L9 e7 [ M8 K;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 154858 y+ d" |9 p9 t
;; flags: qr aa rd ra
% f. b- r( Y0 M) o4 F; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 08 Q: U" S4 D+ Z
;; QUESTION SECTION: ;hen.bao.li. IN A p; k6 v! c- E% q& ?: f4 O
;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15/ [- m8 S) R% i3 q2 Y% ?" X; k" Y8 {" Z
;; Query time: 75 msec
! _7 _1 x( V* |% N+ g;; SERVER: 8.8.8.8#53(8.8.8.8)' {6 `. v3 j8 R: i4 p) Y
;; WHEN: Mon Dec 7 23:20:58 2009
; C0 F8 W: i/ }2 |/ r: r& b;; MSG SIZE rcvd: 54" D- [7 f, f, E2 I9 |& z
x6 n' @6 X' _; B$ W
我们看看国外机器得出的真实结果
0 f: S+ j0 E6 ]: U8 C0 A: {+ v/ O4 J6 ^' [5 Z7 d* n
[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li
" l& {9 Q5 S4 K1 w! t; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li
$ O* L+ j! L% v& f8 J; (1 server found)( M8 F; A3 d" T, [
;; global options: printcmd
6 u+ c$ h# K* O% R;; Got answer:
5 ~ {# O; w+ j ~;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845
' k+ D0 f% K, ~1 R, J$ R;; flags: qr rd ra2 Q: ~2 t( x+ T8 \0 j! ^5 ]0 ~9 A+ R
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0* T3 N6 b5 X; c/ T; ~
;; QUESTION SECTION: ;hen.bao.li. IN A3 D" q5 _6 }9 a, y7 S8 g
;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44
/ O" H( |( u- s, r9 ^;; Query time: 252 msec
4 K. ]+ w1 r0 S* e% q;; SERVER: 8.8.8.8#53(8.8.8.8)
7 V, l2 t- z3 ~# |6 ^/ t! @) R7 P;; WHEN: Mon Dec 7 23:25:12 2009: B, d9 g& q8 i o; X* U& P+ u( T
;; MSG SIZE rcvd: 44
+ B+ T$ [! ^" d. g' u+ e6 r
1 x) N) U* t+ j; w0 l) t9 F可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。
% l& j% n5 J, K, ?- r/ \" s1 i, ^' x2 ^" W
2.解析速度快' q p1 f" v3 n8 D0 U+ @
/ [/ p2 `4 k' c, N- Z5 Z
Google Public DNS解析速度是挺快的,但OpenDNS就未必了
/ P/ j% g4 A8 @. X, ?$ x& \; N
% R# ?$ Z, f- c: w; l& hSam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com, ]7 H0 Z6 L+ |
; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com- S, O8 \/ B2 `3 w- }% G! S
; (1 server found)3 |% X/ V1 @) b2 X3 @
;; global options: +cmd) Y$ g' d: X/ a9 Q J0 p3 f5 f
;; Got answer:
. m; |% {' A) @5 @;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 174043 S6 i# K0 ?- V( [
;; flags: qr rd ra P. B* P& e6 v- g. k9 ?* j
; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 05 q* c d/ A5 F1 S1 a% r
;; QUESTION SECTION: ;www.dnspod.com. IN A
8 `& o+ l; e4 E6 K% Z- w2 C% A;; 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
5 h* s/ v e0 ?( `3 C- E;; Query time: 608 msec
5 n8 B! ?% A# ~4 O;; SERVER: 208.67.222.222#53(208.67.222.222)
7 d* Y, Z' \0 R8 n) b% l6 W( A;; WHEN: Mon Dec 7 23:29:01 20092 a- u6 Y! h9 r' E4 R
;; MSG SIZE rcvd: 101 O3 O6 R$ _1 B* r
7 B; B, g: u' W5 N
3.最重要的问题,访问网站真的快吗?
: q! S: R; S7 O% V& \6 C& R* o4 ~, c% H0 y! Y
相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。
/ s3 _, E& I, I& y' n/ ~+ |. l7 l7 @4 C, g$ M
大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。3 R- p* u1 D6 Z; Q7 [- W
; R) N* x9 H" Z' c3 Q3 \- w网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。
. v! i( y' |0 o$ ]/ L7 t& r" R& e0 E5 D% \
智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。/ r- y4 [& Z/ C
9 w$ m$ f. c8 A; G4 @( v" v# M但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。( c5 k! h, a/ \+ T
4 c5 D8 v5 p& m, ^如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。& b! \& V" @5 U5 d4 e
! G/ n9 p; i0 f! Q, M返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。5 O* C! Z6 B% l, |
% ^/ ?3 k* ?1 q K9 S8 T4 t本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。5 Y9 u4 G% ?% p$ q) y3 g, b
5 I# S2 t* {& g" s, X拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果
" ^/ M# }1 F/ p3 k" a0 R/ r w" ?: h K
Sam@Bra:~$ dig http://www.google.com
- B4 y5 D& q/ ?. X% y5 W6 r5 w......
$ f: _7 p8 W/ y) [! N6 y5 k;; ANSWER SECTION:
4 J: d, p' K: B3 @" ehttp://www.google.com. 48102 IN CNAME http://www.l.google.com.
5 B ^" Q" O3 {6 @4 g% nhttp://www.l.google.com. 300 IN A 216.239.61.104
* y; N! j" i9 L, ^+ P* k2 c/ l8 P/ D4 v3 c- G2 F$ b
如果我用了OpenDNS的话,那么我得到下面的结果
2 G" M# f1 @! \$ w2 d! n& Y" I' m7 }/ N2 l7 n2 |: L- s* B
Sam@Bra:~$ dig @208.67.222.222 http://www.google.com4 D9 [& u, G3 C) W) {& V: t' ^& h
......9 k! _( r9 n" b9 k' l7 t! f
;; ANSWER SECTION:' W6 f2 \. N! v* ^" k8 {
http://www.google.com. 30 IN CNAME google.navigation.opendns.com.
; k" b W0 W4 Q7 V1 h* L* fgoogle.navigation.opendns.com. 30 IN A 208.67.219.2300 I6 }- L3 n5 E2 j4 L
google.navigation.opendns.com. 30 IN A 208.67.219.231
, R7 O! w% ]+ I. i2 P% v3 T/ w) m* r0 ]* F+ i9 M
ping一下得出的IP地址,看看速度,其实并不快/ G) @3 X% R/ @. B/ Q/ e! h+ `. \
; e- G: C$ J9 q
Sam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes& Z$ w2 ^8 [# u9 u7 G
64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms9 Q" W1 [, \" o* f+ z* m
64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms. {, T' w5 V- V R
64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms
1 o& W2 N1 ^; p* D2 ~^C0 W: r9 t2 J J0 _
--- 208.67.219.230 ping statistics ---- Y& X) e# Q( G5 T, N
3 packets transmitted, 3 packets received, 0.0% packet loss
& t0 E2 x4 q' X8 b6 kround-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms/ v& U+ A* z8 W4 c5 D# }: S- E `
* _5 d- S8 c' [3 ^
我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。+ T$ H. Y- ^, Z
/ y, k* s# B' K' U
我网通DNS直接解析; x0 x5 f% G; ]% Q$ A1 D( w
* w2 v& J7 Y0 j) ISam@Bra:~$ dig kaixin001.com
+ `/ I5 B% Z) q8 ]5 d. ?2 W......
' o" g( ]. j1 _1 Z. T& e;; ANSWER SECTION:
% ?% `* U0 i0 j5 M4 ?' ^$ v* I$ ]kaixin001.com. 120 IN A 220.181.100.31& Q _: ^* s9 T% \& ^9 p
kaixin001.com. 120 IN A 220.181.100.32
% p# P/ }: B0 b/ u& ]% |" T7 g. n8 Fkaixin001.com. 120 IN A 220.181.100.33
+ o" W! q8 Q! o* Y8 \' Nkaixin001.com. 120 IN A 220.181.100.34: a8 z& D- ~1 D5 ?: A( S
kaixin001.com. 120 IN A 220.181.100.35
8 i I" H7 S: Zkaixin001.com. 120 IN A 220.181.100.30. R% A/ @5 \3 A2 l
1 c4 @6 Q& Y; c( K
如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP7 ~- g5 `+ T; C0 h$ v5 o: p
) r1 {( q1 K- BSam@Bra:~$ dig @208.67.222.222 kaixin001.com ......0 Q" z* y- L2 a. R. m S( B2 F" V( q
;; ANSWER SECTION:
) X" a, }* r1 b2 z n2 L9 @kaixin001.com. 60 IN A 123.125.58.2471 ]# |, S" I! ~% |* T$ b$ H
kaixin001.com. 60 IN A 123.125.56.246
4 ~$ v3 { c7 W$ G8 g* a& @, Akaixin001.com. 60 IN A 123.125.56.247
, [8 A1 f' L5 ykaixin001.com. 60 IN A 123.125.56.245
' ?' Y# t3 H# r. B+ D/ Mkaixin001.com. 60 IN A 123.125.56.248
4 C% d1 m! q$ ^6 O9 f2 g3 {kaixin001.com. 60 IN A 123.125.59.209 K5 _ @* l' ^; S- g
kaixin001.com. 60 IN A 123.125.59.16
, O5 i; @7 m3 Q5 O% E, p; @kaixin001.com. 60 IN A 123.125.58.248+ g V2 a; `% i. h( `! U( c0 H
kaixin001.com. 60 IN A 123.125.58.246
) H; ^1 h0 M/ c6 Ikaixin001.com. 60 IN A 123.125.58.245& n h. a( C! M. V6 C G5 ]; U
! l$ F9 j! l$ `8 {7 J2 L
中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网
' \2 h9 G' Y- x) }8 [# k6 B
7 H- L$ p! j! I _5 T7 H网通直接查询,可以得到网通服务器的IP
4 j6 }4 C$ N* H
5 }' l8 ~/ ]( Y1 n2 j7 W8 YSam@Bra:~$ dig shooter.cn ....../ j! j' b& F4 C- l5 G
;; ANSWER SECTION:1 X% T, @3 k, }0 h( x4 R K
shooter.cn. 800 IN A 218.21.130.424 P9 k7 q/ X3 l; @
0 C1 Y3 Y5 s5 W/ D
网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP
X% ?/ l2 m0 A3 T8 j0 @
4 b- }8 J/ L: z8 t, oSam@Bra:~$ dig @208.67.222.222 shooter.cn ......
5 w% c" a- G4 b% i;; ANSWER SECTION:
: q: C7 S& h7 W. r* C" F' Hshooter.cn. 750 IN A 74.207.252.170! K0 Q* H& s1 R7 K5 g
( ? r R3 |9 Q) t) M
这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。$ _* \% e# Y/ G
* F9 J# V+ D1 u" Z: A; A: t国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。 |