1.大家最关注的,翻墙,防止DNS被劫持。) @4 ~; g$ W6 b
资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果/ n8 V4 H8 B: b0 x
正常请求一个被劫持的域名,当然是劫持没商量了" D& f% e- G+ b" [& Z
1 K+ D9 o4 H1 Z" y3 R3 s9 t
Sam@Bra:~$ dig hen.bao.li
" e W3 ]5 F5 _/ X" l9 _; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
# {' j% n$ H* L6 [;; global options: +cmd
# W: i1 k8 w( _$ y2 o# D;; Got answer:1 f6 U3 H2 ^! @* i$ C
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859; U$ c& y3 ~2 w! N
;; flags: qr rd ra) Q* {& T9 `& E7 Y @6 ?/ h- C, o
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0& l* d% k$ d @# B, |
;; QUESTION SECTION: ;hen.bao.li. IN A4 v( ]9 a6 M/ Z& a
;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15& U8 T% F) I' Z ]5 {! m" x
;; Query time: 0 msec
2 v( E/ H: E6 _) \0 F9 m q5 l( V) X" k2 j;; SERVER: 127.0.0.1#53(127.0.0.1)
* d# T: \" x/ e$ _& X; B7 S;; WHEN: Mon Dec 7 23:18:48 2009% x2 W% p D. h1 A' f
;; MSG SIZE rcvd: 44) a: b" b, H4 x6 a
3 ~1 {+ O7 f$ V. P9 b% P+ X
Sam@Bra:~$ dig hen.bao.li' T$ W$ p- X9 p
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li% ~- k" S( ]. k' @, S1 b
;; global options: +cmd
. C6 N6 p( B S9 v2 |;; Got answer:# v6 ]: t+ U- ^- e( f
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 508590 l1 D6 d" R& D8 @
;; flags: qr rd ra6 J: g% p+ F& E/ Y. p* D
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
8 r5 d+ V# c* X;; QUESTION SECTION:
3 \5 e& ?8 z8 B: ]/ f;hen.bao.li. IN A4 x; ~; A5 |' d: J$ N2 V) l
;; ANSWER SECTION:
7 R7 p u+ h, D" S: ^ ghen.bao.li. 85697 IN A 78.16.49.15
) g3 d+ d9 J: G4 D+ O;; Query time: 0 msec* y' T, e4 L9 T/ v5 G8 r- |% e& h
;; SERVER: 127.0.0.1#53(127.0.0.1)
' x" i- C# {0 F7 u/ d$ c;; WHEN: Mon Dec 7 23:18:48 2009
. y& `# q- o1 g. J;; MSG SIZE rcvd: 44
5 ?- T* c8 @ {
# o( J# t+ F2 |# h1 B* J6 p然后再看用了Google Public DNS后,照样劫持你没商量& m( f; d; t9 O
H. t7 o, Y4 G5 Y+ CSam@Bra:~$ dig @8.8.8.8 hen.bao.li) C1 p @0 V5 S. y2 n
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li
# n ^' L" N7 C; (1 server found)+ [, j& I6 W* c
;; global options: +cmd
* E& j4 K0 {; V2 Z3 `;; Got answer:
. C2 n, ?0 G0 n7 W! j;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485* L0 H8 G1 _% E" e& S1 R' {
;; flags: qr aa rd ra$ \1 c- o+ N9 D) |' p: [/ w9 l- y
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
- R G% r7 u5 m* j4 {( L;; QUESTION SECTION: ;hen.bao.li. IN A
9 I' t8 Y+ E' ?3 z; G% x" t! B' Q;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15
4 _1 K/ J2 e' }) J ];; Query time: 75 msec4 b0 x5 J( f2 b" v/ X
;; SERVER: 8.8.8.8#53(8.8.8.8)
* N& a2 P, ~; N/ q6 q I8 U2 k;; WHEN: Mon Dec 7 23:20:58 2009
8 A" j' h% n, Q) P6 m;; MSG SIZE rcvd: 54& M K- ^+ B! y. `, l1 m
' b) [1 L( I5 C
我们看看国外机器得出的真实结果) ]8 {: q I9 y S& K2 m: P: s. Q1 U+ I
8 U0 ~8 u; }' X+ {[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li
% L4 |) h3 {+ M! v( i; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li& c/ r$ a2 d ?! E) @+ v! {& n
; (1 server found)
7 K* u) u6 L m3 z2 \" [;; global options: printcmd9 ?, H6 Y% \2 M
;; Got answer:
7 w) a- l/ j5 x4 G;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845/ V6 T6 y0 b: I: t; G- {/ j5 v
;; flags: qr rd ra0 ^. N+ `0 n1 |0 g
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0+ x' p0 Z1 @% ?% P" [
;; QUESTION SECTION: ;hen.bao.li. IN A& D, g, s) F) Y G" w: d
;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44
- ?* j+ x6 W6 |; S( \" E# N8 ~# v;; Query time: 252 msec5 } g/ N$ ]) ~9 E$ f, Z/ {+ E
;; SERVER: 8.8.8.8#53(8.8.8.8)
/ B& V7 N' t- d+ H7 u( r; A;; WHEN: Mon Dec 7 23:25:12 2009, c) h! Z0 E; T
;; MSG SIZE rcvd: 44
+ `7 x9 l* C: M% n6 q
! M) u& Y1 f/ P2 a可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。6 S6 k8 U; n! |0 ~- W
7 f& ]1 \1 W3 J2.解析速度快! X3 W2 x" W- d, Z6 A. ]
. `7 F* _2 U C* t* w. Y1 p/ a7 xGoogle Public DNS解析速度是挺快的,但OpenDNS就未必了; J: e' t: {$ j/ N8 l
; a6 K6 u5 E- J1 V4 F8 S' NSam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com* D8 q1 y, X6 [
; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com, `# |1 V l" N$ x6 j
; (1 server found)
2 m' H" Z$ i* s8 i;; global options: +cmd/ n* v! C4 c2 z' z
;; Got answer:
6 i1 g( I7 w7 I( i/ k, Y;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404$ \3 ]( a9 _% v% W( X
;; flags: qr rd ra
) `- |: V1 @! g: j# \2 ]$ d- F0 g' }; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 03 {: [% j0 T2 t( b) M
;; QUESTION SECTION: ;www.dnspod.com. IN A
6 x" z* X0 ~0 G5 |;; 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
% T$ ^: }5 `/ M) w0 @' d;; Query time: 608 msec
0 j h8 s3 @. e. e# ]+ n6 q; b;; SERVER: 208.67.222.222#53(208.67.222.222)
2 b# R% C) p+ ];; WHEN: Mon Dec 7 23:29:01 20098 r3 r5 _# s) ^9 }) u
;; MSG SIZE rcvd: 101/ t% ^' C" o* z ~$ U6 Y8 v
9 F* ]" l3 @3 U9 W$ }% b! n, }3.最重要的问题,访问网站真的快吗?" w: U; [9 U% y+ G7 C
3 b% j$ }, a6 y' B8 f. k0 ~0 N
相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。/ F( h+ x9 z" o- n# `
$ P) l; n1 g' J
大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。
" p; i. i' S! T7 z: I+ l+ ?" E5 ]/ i% W& W" J) X
网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。+ m/ V7 N6 D# }9 j
6 I: j' H, s3 ? {+ b# M5 C3 V智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。
' I% U6 f8 A! F" _: ?1 S* k( u' i5 A( B! `8 v& D. F. Q
但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。* g# _1 W+ Q& h* X; n
: R b8 H0 P: A如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。# B N& y1 S2 p, ?5 x5 c [0 d
% O- e9 u3 l0 @- G5 K
返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。3 D8 z# b. q5 r; [
& C, C+ B, K$ ^2 X& Y本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。
5 r! M- `" Y- u% r
& O& e" P, k5 y% n% n1 v拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果1 x, O5 }, A" l& y4 q
0 y; n. w9 z0 e% R; rSam@Bra:~$ dig http://www.google.com9 r* w, |! o0 T F- n" \$ a
......
$ W/ f1 ~. S2 n9 V' M- n$ p4 v! O;; ANSWER SECTION:
3 o: |, [& G' I' e7 Jhttp://www.google.com. 48102 IN CNAME http://www.l.google.com.4 I0 x$ E/ J$ f# w( h
http://www.l.google.com. 300 IN A 216.239.61.104
' ?7 o& @. ~; v" V0 I5 P+ T, \' F9 y/ g( W- G
如果我用了OpenDNS的话,那么我得到下面的结果
/ m" C1 p9 H0 @9 |/ l8 Z4 S; p) i4 A
Sam@Bra:~$ dig @208.67.222.222 http://www.google.com
* m/ F- w$ D+ y4 x# Z......7 n: |& `8 Q" V X
;; ANSWER SECTION:
! @6 v" L: `6 _3 \http://www.google.com. 30 IN CNAME google.navigation.opendns.com.- C% F' I7 v6 @4 r2 S. U0 M) H
google.navigation.opendns.com. 30 IN A 208.67.219.230
$ R& L, x2 I. L% [google.navigation.opendns.com. 30 IN A 208.67.219.231
( H* r/ m4 S- D. j% C1 a$ `
- L9 [2 d! I' ?" g& `. Aping一下得出的IP地址,看看速度,其实并不快
, r, a( W7 f. c* u$ P; A' P: H+ j
Sam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes
: |& ~3 n' ^3 y: Z# W* h5 b64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms
* }( P5 C/ b: R5 r* f64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms' I2 Y* I9 r9 ?' j* B) ~% p
64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms
1 [' v9 u2 Q5 \, g; ^2 w4 U^C9 S4 c9 _0 j) z! T# l, s
--- 208.67.219.230 ping statistics ---, U3 N% _5 A; @# T, I& y& M% P
3 packets transmitted, 3 packets received, 0.0% packet loss
9 E. R' V0 t! ^/ Q# Jround-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms
1 i# a( U0 i8 G5 M4 E& K g" _: v* J$ @1 e/ e' r* ^- D1 q# E
我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。" Z$ f5 X7 A9 m6 m) j. t& k
+ ?% T$ K ^; c3 g
我网通DNS直接解析
3 r( }5 P$ a E0 Q9 C* V# M# U& ^
7 T" |& M' G2 b( i# i0 SSam@Bra:~$ dig kaixin001.com: a4 g3 V# _8 |, z5 ?2 {- `) ~
...... B, @+ X1 h0 M9 F+ {# q! U( S
;; ANSWER SECTION:/ P/ S' F$ \8 B1 Y
kaixin001.com. 120 IN A 220.181.100.310 l( m* J0 }& W
kaixin001.com. 120 IN A 220.181.100.32, g7 D" C# N5 X, Z
kaixin001.com. 120 IN A 220.181.100.33' V3 k) S5 a9 u8 R! n) W
kaixin001.com. 120 IN A 220.181.100.34% D" F; s2 p" _& R* K! e" o* t
kaixin001.com. 120 IN A 220.181.100.35; O% r* q; C0 c. z9 \1 N7 ^
kaixin001.com. 120 IN A 220.181.100.30
) |5 i$ @1 x/ e2 a) ^9 X9 {* X- @5 z" R4 k# |
如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP, R- f, X1 l! |2 Z( M( o; J; S& n
$ q* T9 k9 X% A& H5 P7 r
Sam@Bra:~$ dig @208.67.222.222 kaixin001.com ......6 H& u8 ]7 I( ?* U& W4 t1 J$ L
;; ANSWER SECTION:
I0 h) m) C4 @% S: u- |kaixin001.com. 60 IN A 123.125.58.247
: Q( i, y. m* W7 y! c7 t9 ^kaixin001.com. 60 IN A 123.125.56.246* w1 g7 m* L: W5 @4 P
kaixin001.com. 60 IN A 123.125.56.247' F" {1 u b& }4 x1 v M* a
kaixin001.com. 60 IN A 123.125.56.245% \. _3 J H% a7 W1 S
kaixin001.com. 60 IN A 123.125.56.248
+ O/ m; ~% f( z, wkaixin001.com. 60 IN A 123.125.59.204 P6 p, T ?% i* a t
kaixin001.com. 60 IN A 123.125.59.16
+ {% X) y# C1 J4 i) u: Mkaixin001.com. 60 IN A 123.125.58.248
0 g/ Y) U( ]. K+ G% B9 {# _kaixin001.com. 60 IN A 123.125.58.246
9 P3 O4 X) P7 n5 ~. S$ d& R' a- Pkaixin001.com. 60 IN A 123.125.58.2450 z; ?2 T, g: w5 z; t' B
, ^9 u7 H% i7 h7 a/ H+ y2 T e中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网; L- \* {9 v5 S3 I, q% \/ @3 z3 V$ n
7 ~+ c; j$ N! c/ |7 H4 J. X3 O网通直接查询,可以得到网通服务器的IP" v2 @; I, D* ^1 B+ i
, O) ]: P+ e$ ~6 i w1 A% ~# k% Y2 GSam@Bra:~$ dig shooter.cn ......# m. |- ]+ L2 ^* G8 k
;; ANSWER SECTION:
# B# \0 _* G% g2 Q2 qshooter.cn. 800 IN A 218.21.130.42
; D: ~. u! X3 ?9 ^
. K8 A# }: i* ?, M" }" Q; F网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP
- p7 Z+ ?3 V& D$ l' c6 z) x! _$ \3 b; A& F
Sam@Bra:~$ dig @208.67.222.222 shooter.cn ......8 m* v' S; k3 n4 e$ j' t, B5 `; i
;; ANSWER SECTION:
+ |7 o( _. s3 B @6 l8 t4 e" qshooter.cn. 750 IN A 74.207.252.170
8 L; P9 e# D' U6 b) e; _) H1 \2 S! J5 j: y& Z
这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。6 r" E- ~/ b5 z( S) _
. |; P( P1 h( w3 S& W# e- t
国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。 |