1.大家最关注的,翻墙,防止DNS被劫持。
1 \7 A+ I. ?6 ~资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果
0 C; K0 u& p. m正常请求一个被劫持的域名,当然是劫持没商量了
# `+ v- E- q0 ~7 K- ~) a! P! N8 p5 B, F/ P* N$ [# D
Sam@Bra:~$ dig hen.bao.li
! T$ h8 E) P6 v6 s! v; N6 c7 \; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
' v j. t) D$ Q6 H& X8 I2 U& r( P;; global options: +cmd" ?4 H" {3 h/ g6 u3 F4 T, I
;; Got answer:( |- [# W- V1 i9 F, A
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859
$ Z$ u5 m: ~! u3 X! X4 f8 T;; flags: qr rd ra
1 h0 k0 S1 O1 F, S/ D6 H; ?; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
+ D, @) I2 r2 z) z' |;; QUESTION SECTION: ;hen.bao.li. IN A
T9 U2 b9 E9 y5 j& D;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15
+ j9 f2 j/ M% J2 h2 a E;; Query time: 0 msec
u' U& M. e& s! };; SERVER: 127.0.0.1#53(127.0.0.1)
9 W* J+ u/ a# j4 ~;; WHEN: Mon Dec 7 23:18:48 2009
( U7 p( s# s2 x;; MSG SIZE rcvd: 44
% [8 Z0 U& P' `
+ c$ G# h* Y3 `" k: ]- h/ q& OSam@Bra:~$ dig hen.bao.li% V+ _& E1 a+ C/ @5 q3 ] O
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
+ D$ a1 w8 w5 Z, a4 s$ E6 ~* P. C;; global options: +cmd# z4 o3 E/ W* j t0 P7 f6 Q, g' x
;; Got answer:) x4 ]# |* U. W6 |: d
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859+ ] U7 }+ h0 I3 X) A" M. ]3 {% ?
;; flags: qr rd ra& h4 B5 }3 {2 w
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0( l$ U; p/ p: Z T; a
;; QUESTION SECTION:
6 C5 W! x9 u' h4 Y;hen.bao.li. IN A
& w6 V7 W- l- r( @% G2 s7 d;; ANSWER SECTION:5 p% C* n. ~& |" ^& j
hen.bao.li. 85697 IN A 78.16.49.15
7 D# m/ m' Y7 e4 ]( v1 c4 ]1 J;; Query time: 0 msec
+ s% u& [ S- ^& w4 e;; SERVER: 127.0.0.1#53(127.0.0.1)2 Z" k4 _4 m0 ~* S$ q
;; WHEN: Mon Dec 7 23:18:48 2009& l( x0 c. N3 a
;; MSG SIZE rcvd: 44
& _" v0 _7 E. h/ O/ Y5 Q2 |/ b( S7 m5 P1 [7 h
然后再看用了Google Public DNS后,照样劫持你没商量- u+ _. g+ j; G% c/ B5 {& v
. j, D' D# E& o+ RSam@Bra:~$ dig @8.8.8.8 hen.bao.li9 ?9 W: Y2 W& V! _: b X7 H I
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li6 [2 S6 c! v( N
; (1 server found)
5 `2 V& Y; }" \0 L;; global options: +cmd: w; u; \) [ T8 V4 q) ~
;; Got answer:
2 F) u' O+ }9 R;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485/ v' t! c2 }* N% ~/ N# G+ W: d3 I0 q
;; flags: qr aa rd ra4 I; P: p3 ]( E/ X
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
, a! _; h& r/ l \+ H9 Z+ o;; QUESTION SECTION: ;hen.bao.li. IN A3 a# t* w9 e: X6 Z8 |6 L
;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15
3 e4 j0 I( Y6 W;; Query time: 75 msec
* D% @) ] J% C9 C6 W;; SERVER: 8.8.8.8#53(8.8.8.8)
1 b+ i7 ~ L+ X: g6 T/ d u" B;; WHEN: Mon Dec 7 23:20:58 20097 k+ x' }# O' y
;; MSG SIZE rcvd: 541 R+ w% S$ Y8 J: D9 w7 `
2 S" r7 l8 E: W6 _2 Z
我们看看国外机器得出的真实结果6 z* ^% |3 J. K' b
( q" Z2 ?, C* n) r& P
[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li
9 W* F) K5 S1 a% b; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li. X5 y, f" n# i, v5 C. Q. r
; (1 server found)) ?2 ^! Z& s+ J. i* N
;; global options: printcmd
0 Q0 m4 z; b, e1 G4 ]! r" H;; Got answer:" M4 f- n0 q; s) ]& b7 V& J
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 208459 O9 q- K6 x& D7 O u; b
;; flags: qr rd ra' M5 E/ Y+ H; V2 f5 J D
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0$ d4 \, \7 o- l4 [; b8 }
;; QUESTION SECTION: ;hen.bao.li. IN A. m; `) K; o. d! i2 g
;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44
5 z/ ^9 ~! K) Y7 T) E;; Query time: 252 msec
9 B2 p) `6 c3 T b;; SERVER: 8.8.8.8#53(8.8.8.8)
: N: ~* C8 ~( g4 s4 s9 {1 b- h;; WHEN: Mon Dec 7 23:25:12 2009
" Y* [( Y; C$ w" g% };; MSG SIZE rcvd: 44
4 x @2 S: ]- D( L6 h
1 [' y" t$ L. P* R! \2 W可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。% R( M/ Q; L t6 b# \' ^
* H7 W) \8 o1 }' s/ C: L7 a2.解析速度快& G. w0 _1 R& x/ Q8 O1 M* }* Z
& o2 v) D8 G% eGoogle Public DNS解析速度是挺快的,但OpenDNS就未必了
: M8 |; J% W, ` B: |- N" {% O i+ q4 ?0 H9 v
Sam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com/ k0 W5 a' M7 S) a
; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com
& [: t" D5 d5 j% f$ Q( ]! N0 X; (1 server found). i8 S( p2 c: V$ _, P
;; global options: +cmd
; y3 n# D* I4 w5 s;; Got answer:9 g5 P, e# v0 S9 p- U% V' }
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404
. b# J+ Q4 S' r- Z2 l" Y;; flags: qr rd ra
+ F( w" D- y+ G6 ]5 e; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
3 F6 k$ C2 w3 o$ \% |;; QUESTION SECTION: ;www.dnspod.com. IN A
2 o+ r7 C) S% J# L0 V& W;; 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
; V. a- K5 M8 E3 Y5 K;; Query time: 608 msec( W+ r c" [+ N- U T
;; SERVER: 208.67.222.222#53(208.67.222.222)6 g4 {& F8 X& k
;; WHEN: Mon Dec 7 23:29:01 2009/ q; X8 t, v& k# ?/ z
;; MSG SIZE rcvd: 101* s% g" z. H& N3 a( z6 b0 r. V
, w' }$ `+ k/ h$ s* p- u) Z3.最重要的问题,访问网站真的快吗?" a& a1 L/ o: |- |
6 W' N* L1 Y6 J6 @
相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。0 H6 R1 f3 R1 T$ @# t2 o5 {6 _
4 u3 Q+ Q6 ?6 ]/ H% Z# ]
大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。, R7 z% V: Z3 X
# w! [8 U$ s9 F3 T6 A# F$ p网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。
: j6 X6 H" y+ [7 g$ v- ]& I5 s/ m% w" n
智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。
+ N9 n# }! [: w+ h# ~0 P: B( o {3 g7 n& u
但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。
! b: ]- p8 T* A
/ F' f$ D5 J# E; e+ |如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。$ W. T# @, f8 T- j# ]; L0 b( L
) F- H$ |& c, R* k2 h) Z( k返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。
/ p7 @5 N* B% z# G6 D1 ]8 q) C1 L5 y' F! {* b. ~, d; }3 R6 v! ~9 W- c
本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。1 v0 Q3 G) N7 }
3 a; N; Q6 C/ J( ?拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果- i9 W8 Y- q/ K& b; }2 W
% \5 U* O; G8 @! QSam@Bra:~$ dig http://www.google.com, B& B8 w5 @3 ?" J; g
......* k) J. C0 F' W3 w) M# `8 k2 b
;; ANSWER SECTION:
% N6 ^5 _+ ^7 s, R5 Khttp://www.google.com. 48102 IN CNAME http://www.l.google.com.' t5 b- o6 I" k' }& b
http://www.l.google.com. 300 IN A 216.239.61.104
8 E1 H7 r: g* Y+ d/ g
" J# Z8 O( U8 P X5 s如果我用了OpenDNS的话,那么我得到下面的结果
. d# d: G+ A0 f) \
* p5 b7 D3 |5 L Z$ ?+ ? kSam@Bra:~$ dig @208.67.222.222 http://www.google.com5 X3 l D; F( I+ B8 h9 w
......# K+ a8 H0 _6 P# {" q x6 Y
;; ANSWER SECTION:
) R6 s; w2 }# Q6 s7 Ihttp://www.google.com. 30 IN CNAME google.navigation.opendns.com.
' B: O5 P# A1 [2 b4 |- S$ y1 j" }google.navigation.opendns.com. 30 IN A 208.67.219.2307 q- \- [' y: ^6 ~
google.navigation.opendns.com. 30 IN A 208.67.219.2311 t& G3 P, F% e
1 V4 e- P0 d6 V! l
ping一下得出的IP地址,看看速度,其实并不快
& [ a$ c1 P4 @9 C! e }. w
( b* z& ?, r& T7 ^; jSam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes& Q, j% W( o- j" [; G7 ^
64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms7 u' ~ V' T4 [: A
64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms
/ v( N8 T) R @! c, t64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms# G" C- \) R, v ^; }% r
^C
, v. b8 ?" U' `6 u6 w--- 208.67.219.230 ping statistics ---% A" { }* m, Q2 q6 g
3 packets transmitted, 3 packets received, 0.0% packet loss
% y: z J3 q! W' W# Ground-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms
" R/ L- g/ ]& J) U; j6 {0 {$ I, t' U7 H: |3 `3 o4 _/ g. ~# ?
我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。
, I, o; e, R" M0 u+ W( k. K4 B$ Y4 W2 N2 J
我网通DNS直接解析6 k; E8 f, W4 a% Y
5 ?9 K) s! a1 @$ }Sam@Bra:~$ dig kaixin001.com
/ b0 R- I; c8 Z......
' V& ~+ U; y4 m/ F# b;; ANSWER SECTION:( h2 {3 A1 \9 T! N
kaixin001.com. 120 IN A 220.181.100.314 p& U3 Y. {% o( o. j
kaixin001.com. 120 IN A 220.181.100.32
, M3 G3 Q& x; b' N5 ]. Q% xkaixin001.com. 120 IN A 220.181.100.33
, O8 b5 t- k+ H( bkaixin001.com. 120 IN A 220.181.100.34
4 {% O, L7 P/ h' o! K" L6 Gkaixin001.com. 120 IN A 220.181.100.355 W2 a' Z, U p# D4 r" @8 P
kaixin001.com. 120 IN A 220.181.100.30
& S) u q. ~, P1 q+ w" p" P) d' z: @% N6 F8 G0 v: v# {* m
如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP
, P9 E5 r0 @, C" H" `% c
6 J+ p* H' \4 @: pSam@Bra:~$ dig @208.67.222.222 kaixin001.com ......
% Z) b0 x }* J B$ d( K- n;; ANSWER SECTION:8 t% y( p: D, K9 Y3 h8 e4 Q
kaixin001.com. 60 IN A 123.125.58.247
3 d' i" {5 @1 s0 ?) s4 I1 L2 ^) hkaixin001.com. 60 IN A 123.125.56.2465 Y3 ]0 w' h5 X
kaixin001.com. 60 IN A 123.125.56.247
; ~3 x6 l, R8 ~0 T) F3 i$ ?8 h* r1 Ukaixin001.com. 60 IN A 123.125.56.2457 U3 z( l4 E8 k) x) r
kaixin001.com. 60 IN A 123.125.56.248
* \; F3 O i7 B* R# Ikaixin001.com. 60 IN A 123.125.59.20
% N# D/ ^+ O) |6 H Y/ akaixin001.com. 60 IN A 123.125.59.16
4 }+ g2 ?8 M% R Lkaixin001.com. 60 IN A 123.125.58.248
/ R! W8 g9 E+ t4 hkaixin001.com. 60 IN A 123.125.58.246
4 k8 w3 Q& a& t& f% ?kaixin001.com. 60 IN A 123.125.58.245& u' \: L4 b, z8 P
1 Q$ q8 N* n' c# ~0 \3 }: A
中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网; M( S& ^0 p2 C) D! r! Q1 t! }: a* Q! \
6 f2 J+ _" ~7 D- B* `& Y
网通直接查询,可以得到网通服务器的IP
$ d9 r& W0 ~, ^6 p, y) b( g
2 b8 o) p/ l: w' I; q! tSam@Bra:~$ dig shooter.cn ......$ P8 d- C5 D( S9 m1 @' S; F2 V/ `1 v
;; ANSWER SECTION:( B: S% K# | S* J U1 p
shooter.cn. 800 IN A 218.21.130.42; t" R/ u/ E& b# P I) i$ x7 K
5 O4 J4 n2 F/ L4 X9 ~
网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP
8 ~- {3 u: U; k" q2 K4 P. h2 }9 N E% v1 I$ e* T) s7 w1 @, E: v
Sam@Bra:~$ dig @208.67.222.222 shooter.cn ......
: H* `" b" v9 T" x) c;; ANSWER SECTION:
. g9 C0 o8 K8 S6 W% ashooter.cn. 750 IN A 74.207.252.170
% U+ M) ]: H3 Z
. s$ G3 B1 j; @这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。
' S& z+ B) c5 [' J/ T! w' ^* R$ v8 x% x7 n- s% H
国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。 |