1.大家最关注的,翻墙,防止DNS被劫持。9 _) R; C" b- F$ ^0 y# @
资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果5 N; @3 L+ d" J' Y' H6 K: S
正常请求一个被劫持的域名,当然是劫持没商量了0 r0 E* ?2 i& q/ V
2 P# d; i0 n7 E) f% l/ W
Sam@Bra:~$ dig hen.bao.li
% c) v% @+ W; t) h9 K. E6 g; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li0 Q O$ p: b9 ~
;; global options: +cmd3 r# A) w( N) Q M& k
;; Got answer:
- v3 p6 o: H2 T3 S1 n2 a;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859( o3 d) T- O5 g/ L: ?$ [
;; flags: qr rd ra7 E1 V- L! |$ e8 Y6 a! O0 D2 \
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0# A, z2 z7 x3 E3 w' ~
;; QUESTION SECTION: ;hen.bao.li. IN A
2 {& p# x' K: ];; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15& u7 X' d- X3 \
;; Query time: 0 msec; F& Q. S9 K1 h( v
;; SERVER: 127.0.0.1#53(127.0.0.1)
} b% g% k2 {! B;; WHEN: Mon Dec 7 23:18:48 20091 q5 d" j0 v' F4 [- D! H
;; MSG SIZE rcvd: 44
5 @0 Y" }: p, U7 q/ r' y5 g0 Q6 ~; b3 q3 y* ?
Sam@Bra:~$ dig hen.bao.li
3 B7 @, T, T2 L* c5 W3 K) Y, @; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li) r0 @& J" ^) [& D. [( X
;; global options: +cmd
' X6 V: V* }5 E* F) d! k2 {;; Got answer:. ]9 _! H$ ~: T& D9 n
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 508591 Q% z/ X- y2 s( h, H' X
;; flags: qr rd ra" x" \9 R+ p7 N: D
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
# Q8 W4 t" x- G. c2 t" y# M;; QUESTION SECTION:
0 J. v1 I$ A! b; z" @ I;hen.bao.li. IN A
0 I% \% `7 p4 B4 L- ?;; ANSWER SECTION:- I8 J* g" G+ ^
hen.bao.li. 85697 IN A 78.16.49.15
! Z4 Q& n* g) P3 ^: H" `;; Query time: 0 msec. `" J% k9 o) Z3 V
;; SERVER: 127.0.0.1#53(127.0.0.1)
8 S; c. ~. ^+ y4 U2 W" }4 z% L;; WHEN: Mon Dec 7 23:18:48 2009! [- J0 s6 o+ J8 l- O9 `( i2 u
;; MSG SIZE rcvd: 441 o" X! I2 `& A
& K+ L5 y* l/ M0 {: F+ I& H
然后再看用了Google Public DNS后,照样劫持你没商量
1 v* @( i% q1 |( ^
% S& D9 c) }& ySam@Bra:~$ dig @8.8.8.8 hen.bao.li w8 Z, V1 |0 [
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li& F" [* V% n7 ^1 ? L$ m. B, c
; (1 server found); x$ n0 r6 V1 O* l3 | n4 Q
;; global options: +cmd
1 t! |4 X F" b) f7 V; H0 t2 T! v;; Got answer:) H" y( r2 H" C& w
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485$ T) f6 C8 ~- p, d6 b
;; flags: qr aa rd ra/ g: [8 ^. D( b8 R5 N& N
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0- Y6 y( Z% @$ e q5 R
;; QUESTION SECTION: ;hen.bao.li. IN A
. u$ O- ]" E/ Q6 v" s% ?4 K( H;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15! M* C w, @% L k Z
;; Query time: 75 msec% A2 H' ?* t% G
;; SERVER: 8.8.8.8#53(8.8.8.8)5 L5 h/ }) o& @' Z
;; WHEN: Mon Dec 7 23:20:58 2009
% D' a5 j4 V7 g5 j1 B7 x;; MSG SIZE rcvd: 549 j1 n. t7 Z# k; B E2 Y9 u
$ C. g8 c" Y. X. [! ^! Y
我们看看国外机器得出的真实结果
1 f1 I% b' {! g; ]9 a+ M4 w- n7 q- w. K* S4 f9 L% A
[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li) U2 B4 a$ F$ Z B7 g
; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li5 h9 d+ _: [' Q, z
; (1 server found)4 `5 W6 Z; E, w+ `& D
;; global options: printcmd/ T, H, y; P% ~' C$ V6 a
;; Got answer:' ?. q. l! k! i; ?
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845) |" |, Q1 J3 [, v" I
;; flags: qr rd ra7 _7 q6 D% d+ ^
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 07 D" n: h" [9 {! ?5 ~$ J( \
;; QUESTION SECTION: ;hen.bao.li. IN A) C' s2 D1 V% V, L+ Q6 G h; u" f
;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44; y6 z7 \6 Q* v, j7 w
;; Query time: 252 msec$ W8 U; l5 q( e. M0 Y0 {0 K
;; SERVER: 8.8.8.8#53(8.8.8.8)
+ j- }; }) V( Z0 G4 V& a;; WHEN: Mon Dec 7 23:25:12 2009
r, _0 W3 S' _8 ]5 h;; MSG SIZE rcvd: 44
3 m5 H& W' y( z5 r; _7 G6 f6 i' L: U' p3 Y: Q. q2 m; `
可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。' Q% X7 R3 V4 N' Y. u$ u& q4 j
9 H1 e5 v9 \" K2 c9 W9 R4 h
2.解析速度快6 _: Y- }8 |0 g
# F" r l {: }! r- @ O; @4 ~Google Public DNS解析速度是挺快的,但OpenDNS就未必了
u5 H6 q3 O6 K1 f& k# Z5 C6 D/ _, y( r$ b) t9 Z. r
Sam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com
1 M, ~& h' W. F+ f; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com7 J9 n: M2 U' }+ r d* _- Q
; (1 server found)5 E1 p: N' O& g" ?4 ~
;; global options: +cmd8 a2 A: m( l9 N+ U- F: C
;; Got answer: s' B. Z2 ?" x5 T- W
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404# R6 F' b& F4 H7 b# [
;; flags: qr rd ra/ {4 ^5 q4 k, {, _, m
; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 05 Q3 Q, C% f/ O' |/ a
;; QUESTION SECTION: ;www.dnspod.com. IN A3 Y1 P0 c1 X% }) i
;; 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.1373 m7 c! N/ Z% z' k* g4 S
;; Query time: 608 msec: z. u) ^% C, }! f, P+ S
;; SERVER: 208.67.222.222#53(208.67.222.222)
6 I$ G! R t' H7 S* ] w;; WHEN: Mon Dec 7 23:29:01 20095 N1 h9 [8 P, D( n8 O4 g* u) Z
;; MSG SIZE rcvd: 101
. C- C5 O% `6 u, G* F; [6 z% ?2 F8 p; r% j. V; _6 g
3.最重要的问题,访问网站真的快吗? d' n) j* Z0 e; C
, U0 F7 J. ^# [. v相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。& E5 e6 J1 f) _
P3 L0 I. A! S2 R2 c+ S- j大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。
( A: g0 S/ S7 l5 T9 Q
. I5 W# _8 I+ \1 R, r5 k网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。
( i; K! p: E* [" z1 t' s. _$ ?8 D7 a/ s6 v( u- U% y1 L
智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。
8 {0 i, | y2 O, A& w: f: |' s- y% ]0 f4 {" ~: P0 u
但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。+ A( P3 x7 B5 |+ [. z
: O4 Y9 C6 f% X& Q: T( {, Z
如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。; w5 }1 Q3 u# y7 w1 t
; Y0 i2 d% |# Y- A& k3 d
返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。3 N& M" o7 Y/ m6 r D
; ?/ K6 s; q4 @+ a# h
本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。1 _7 H. t' E9 ~9 o. ^; g
6 Z9 p2 X1 }3 Q, N拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果. Z' K; l& ^7 V1 W
* C1 S; c% E* A' f
Sam@Bra:~$ dig http://www.google.com
& c3 q5 S& X0 |# m......* Z% j- c1 w0 ~ Z- w4 P+ \- v# f
;; ANSWER SECTION:; y d% r) x3 [3 S! y- Z
http://www.google.com. 48102 IN CNAME http://www.l.google.com.7 G. n& y9 I3 G( x
http://www.l.google.com. 300 IN A 216.239.61.104
" A0 q' v" H6 ?: U: ~$ O1 M
: m; n, T" [) c: i3 g; m) Q如果我用了OpenDNS的话,那么我得到下面的结果
+ t; T+ n+ {+ ^+ d# k% h
J3 W9 v- C) @6 ~& wSam@Bra:~$ dig @208.67.222.222 http://www.google.com; f! c5 A8 g C, p; A
......! E6 M9 \1 A U
;; ANSWER SECTION:! _: v2 j7 ]' Y- }; {3 [4 m
http://www.google.com. 30 IN CNAME google.navigation.opendns.com.
% _: e0 d9 y9 ugoogle.navigation.opendns.com. 30 IN A 208.67.219.230/ j3 z% s4 K) g$ I
google.navigation.opendns.com. 30 IN A 208.67.219.2319 J7 z- v3 k) W) s
, A8 f& T1 k" v b4 m( G# Jping一下得出的IP地址,看看速度,其实并不快, X. _/ S% j6 F$ P8 R6 V4 w% z
X* r& M7 D3 M. E
Sam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes4 E% q7 u# s9 C
64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms
6 @" J+ I, i' G$ f2 y9 }9 V64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms' v7 {$ p, `" o1 i0 p+ D b
64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms
E( [( X& a2 F+ r6 Z' \9 e^C5 t' s% T+ T9 A4 S2 m5 H: V
--- 208.67.219.230 ping statistics ---" J* o9 ~' S7 }1 Y
3 packets transmitted, 3 packets received, 0.0% packet loss3 ]- ?: ~; W: {
round-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms
X d4 K' R I1 K
2 |1 e y2 Y7 B: N% M* C我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。
' F& x( k. g7 I2 _9 @8 I, f6 j+ _3 b
我网通DNS直接解析, l# y7 f1 ?" @# ~, |
! |9 O7 H) O) ^! tSam@Bra:~$ dig kaixin001.com
5 E) @+ p& U3 ~......
5 t ]; K9 ]/ _% n+ u, j;; ANSWER SECTION:2 x: N7 X9 B2 }) r4 {& Y5 l2 _( }
kaixin001.com. 120 IN A 220.181.100.31$ o9 O# L& V# z: F# r
kaixin001.com. 120 IN A 220.181.100.32' d9 T& [9 J8 U
kaixin001.com. 120 IN A 220.181.100.330 J$ ]4 y4 c! d) [+ I, ~
kaixin001.com. 120 IN A 220.181.100.34* S0 T" U) J- B: ]6 h0 B6 I" A: c
kaixin001.com. 120 IN A 220.181.100.35
& J( T0 | w3 o6 A2 tkaixin001.com. 120 IN A 220.181.100.305 n" j( k9 i3 x j: F4 }; x& C
# R* k; j w5 B# l: I3 K, \' ^如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP* ]1 X* q) w1 u% y$ K6 l
. `; h9 K% Y$ }9 |5 n$ \# H5 Y
Sam@Bra:~$ dig @208.67.222.222 kaixin001.com ......
+ \0 Q* ^/ q! e# u4 j;; ANSWER SECTION:% v, w% h" N% F
kaixin001.com. 60 IN A 123.125.58.247* p1 X& M! ^: Y% i/ l3 _' i
kaixin001.com. 60 IN A 123.125.56.2468 g* I/ b- f' R& }- J
kaixin001.com. 60 IN A 123.125.56.247
* f; _8 {# l& i; fkaixin001.com. 60 IN A 123.125.56.245/ ^( d. y, ^7 {% j% p: @) }
kaixin001.com. 60 IN A 123.125.56.248
/ R6 V( G" b; o, bkaixin001.com. 60 IN A 123.125.59.20
8 E9 b, D4 l M1 tkaixin001.com. 60 IN A 123.125.59.16
9 w" q3 s0 X9 t) L& @* n1 ykaixin001.com. 60 IN A 123.125.58.2483 D4 _3 f( I/ g% v: i# ]. G3 h
kaixin001.com. 60 IN A 123.125.58.246( y$ j$ r* [0 d! B
kaixin001.com. 60 IN A 123.125.58.2453 I/ O R& N: u) C3 }
. V; w1 z3 o$ k2 ?" r/ ^! K) P) g
中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网
; @ t# B( h* E# F4 r; K1 ^7 L3 W" B+ l1 j/ _
网通直接查询,可以得到网通服务器的IP9 m4 O- ]1 T# c% |0 N3 _$ T
5 }, _+ u6 q& H- g* V" C
Sam@Bra:~$ dig shooter.cn ......! ?& L* ]8 O; `) r
;; ANSWER SECTION:4 o, X& b+ e; }% g- X
shooter.cn. 800 IN A 218.21.130.42
8 s) _' S# z& c5 ]" f- X" W, I
- C1 q6 R1 [: m3 T1 K网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP
! Z4 v. l9 g3 b
5 Z5 g$ Q/ H/ D, ^6 ?- @8 o pSam@Bra:~$ dig @208.67.222.222 shooter.cn ......6 ^, j3 q& R; Y5 o; X }
;; ANSWER SECTION:& K& s/ f2 a2 Q- c4 W D
shooter.cn. 750 IN A 74.207.252.170* m5 z0 Z v1 g
8 l1 W" M5 V5 r y9 ?; Z% ?
这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。
) g. }: V' c# g# j& ^2 }0 i' g% T! {( j6 o
国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。 |