1.大家最关注的,翻墙,防止DNS被劫持。8 u A+ f2 b. B' K
资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果# F* X2 V8 U ]& y
正常请求一个被劫持的域名,当然是劫持没商量了
8 q' u* Y! O( P9 q- Y& X( E) g8 p9 J2 E6 J j! Y, {
Sam@Bra:~$ dig hen.bao.li
5 S/ B- o `( Q8 u; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li6 I$ D7 y/ v& H! z
;; global options: +cmd
; o1 e6 }# C+ L5 P7 F) Y1 ^;; Got answer:) _7 m/ F/ e3 g( e; W* [, j7 y
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859
) b0 x; R" k$ j" |8 t3 ];; flags: qr rd ra
+ \$ X7 N; F- f4 q: \& _; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
* v+ P4 y2 {+ G& K2 j;; QUESTION SECTION: ;hen.bao.li. IN A$ h' {) n+ }) _ b# n# P6 g
;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15
* h7 K* E% ?$ i$ p;; Query time: 0 msec6 K* `. ?: j! h6 ^
;; SERVER: 127.0.0.1#53(127.0.0.1)% s2 ?1 P3 ^& y! z& E$ I
;; WHEN: Mon Dec 7 23:18:48 20097 W& O( |( U- a% d/ k6 g
;; MSG SIZE rcvd: 44
) \* U4 e# l) L# p* f8 ^$ D
2 L3 O6 F0 y. ~ y0 \8 \& HSam@Bra:~$ dig hen.bao.li
{4 P6 a. Y& T; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li' x, B! W5 @$ K' }7 {
;; global options: +cmd
- S4 T5 D# z$ ~& g2 @# N3 i;; Got answer:3 H0 ~/ I* C) D9 N) P& H1 W/ t
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859" M/ E6 y" H b
;; flags: qr rd ra
8 Z2 g c+ s- M) A# b6 S" k; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0# W7 P3 u* \) |9 @- b
;; QUESTION SECTION:
; ^( |; J: u7 p7 o;hen.bao.li. IN A
5 A v: y: v' t3 I" U% E;; ANSWER SECTION:/ ^' g2 i5 O& N4 ?( q4 L4 I# S2 S
hen.bao.li. 85697 IN A 78.16.49.15
4 Q0 ~) L/ S4 R7 ^. J- E;; Query time: 0 msec- r' S% c3 T, @( a
;; SERVER: 127.0.0.1#53(127.0.0.1)
' } {# R% j( [! };; WHEN: Mon Dec 7 23:18:48 2009* Q8 O' _) e$ g
;; MSG SIZE rcvd: 44
1 w2 S- M, @8 s* b$ i$ C0 H* X: C/ M4 q: p
然后再看用了Google Public DNS后,照样劫持你没商量$ f" d0 E) Y/ Y4 J% M; G7 A
. \1 S- g& f0 V5 X, S4 N: h/ zSam@Bra:~$ dig @8.8.8.8 hen.bao.li. |+ K9 n8 B N8 h- \4 u
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li
7 L: W$ C: x6 z" Z5 g; (1 server found)
" `8 }4 g# B; y5 \- };; global options: +cmd6 @5 J2 F" ]9 u1 j
;; Got answer:
. b8 X6 H2 G* R* @3 g. A;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485
, E- Q K, H" n7 M( D;; flags: qr aa rd ra/ u5 p2 S' j b2 s: C
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
O& G, M3 V% C! b- C* u, U" L;; QUESTION SECTION: ;hen.bao.li. IN A1 t6 Y: c$ z; o, z0 T- e! e* M
;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15' j! [ z: }6 Q: k7 R$ x% p ~$ t! G
;; Query time: 75 msec
" j1 [4 T o! Z;; SERVER: 8.8.8.8#53(8.8.8.8)
; e k) p% O0 y! ];; WHEN: Mon Dec 7 23:20:58 2009
; U7 N# {9 [2 j2 T% `6 x. o;; MSG SIZE rcvd: 54
, h' |. A4 i, u! C/ c4 V& ^% Q) T2 {3 K& `1 ~, A) P" t
我们看看国外机器得出的真实结果
+ w: H& b: p/ n" E, a6 Q
) \1 N5 \$ i- [6 V# D[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li. E k. { s2 M# U$ d3 N
; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li
0 S" F9 S6 H* X: C8 ]" `; (1 server found)
1 y5 D# J. m' F;; global options: printcmd
* D, Y; B+ V# ?- o1 n9 d( I: U2 B0 M( t;; Got answer:
: Q4 w/ a, }& m% D;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845( j( A B1 u9 O' ^$ L! f' k
;; flags: qr rd ra
& d e+ @: _% \( a/ s. U0 j; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
) k1 A# Q3 |9 G! |5 _;; QUESTION SECTION: ;hen.bao.li. IN A: S# N) {, Q) h1 g3 P) F2 T
;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44 D2 t- ?/ A- H+ w& Q5 F
;; Query time: 252 msec6 K- R& g/ \ g/ G
;; SERVER: 8.8.8.8#53(8.8.8.8)
3 _, V- ] N% q- z5 F/ f6 C4 m;; WHEN: Mon Dec 7 23:25:12 2009) k f+ ]3 d4 G4 _. _9 F8 D
;; MSG SIZE rcvd: 44
m) e5 e# R. T- O+ i% X6 J7 C
7 u; {! t! Z8 U- G" [* E可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。
3 F* c4 R* S6 p0 k3 X$ F' V, }* J
5 G8 x- n; p$ T; l2.解析速度快
0 V [" P" N0 @' q+ ^# r6 O, x. p% L" v- A+ `; ^, Y6 z6 Y5 x
Google Public DNS解析速度是挺快的,但OpenDNS就未必了. k( w5 J$ m) n9 L$ G/ u; `
5 O- u/ l/ e# d+ O* p$ i8 fSam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com6 `1 g, S( A4 ?* O. p
; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com
8 _8 l5 m8 \" m; (1 server found)# G- h B- V l
;; global options: +cmd
3 f% T+ _6 I- p2 w5 q;; Got answer:
5 L) @7 N+ a1 w8 d;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404 N i5 C0 [1 ?
;; flags: qr rd ra
& I4 `6 R" I2 U/ o( ?% ?1 B* U; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0+ Q" D4 R* B( e- q2 D
;; QUESTION SECTION: ;www.dnspod.com. IN A& P" o. {* T* U5 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.137
8 ^. b9 R. P4 B. E9 q. ];; Query time: 608 msec
6 M/ x s) e |7 Z;; SERVER: 208.67.222.222#53(208.67.222.222)
) C- l2 W2 i' W8 W- X8 N8 O$ C5 D* W;; WHEN: Mon Dec 7 23:29:01 2009* X: P2 p# W4 E' T- f. P
;; MSG SIZE rcvd: 101% r' x$ D3 ]2 B' Z' F+ u9 B/ F
% }, m/ E0 D( G3.最重要的问题,访问网站真的快吗?
9 K4 |/ X5 t! t& r/ ]% S7 Z
" C! ^" M, }% c3 u相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。
# W5 E( y- [1 F0 q/ |& ~+ l" }& A" Y& O8 W
大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。
. B, u- L+ Q+ b: k. O. h' M W6 I
0 z6 G0 o( T$ ] T网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。
3 e" O9 m' W$ h
) |: _" ~/ t* j. f% x智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。
& h) [; w& J0 z8 o$ x9 @! r$ H! I. B/ |5 l9 q
但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。
6 m( D2 c( ?+ C! G5 V; `1 j) U6 ~: F3 A( k$ N
如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。
2 a, g8 A. b% o0 {0 s L+ [* ` d( s* Y$ [( e
返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。
6 R( b) k/ c% U: |5 z' l7 _: @- Z _, g3 D! u5 T2 Q
本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。4 p- T6 B% Y$ b1 Y# \
# t, ~( v9 \1 @* }) d9 ?& U拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果, Z- m# Z3 w2 p
' i& \/ r" s$ P5 l* }
Sam@Bra:~$ dig http://www.google.com
, ?' G. o+ K; {- I$ @/ z) {$ e4 H......8 a+ `! I5 z( j. j" F0 ?
;; ANSWER SECTION:
, G' }- l; q6 ~http://www.google.com. 48102 IN CNAME http://www.l.google.com.
; d* [ |- p: X8 g: ]% v" _http://www.l.google.com. 300 IN A 216.239.61.104
1 F' D4 N3 A1 e9 T
- x. g0 A9 ?8 m9 O5 g2 H7 p如果我用了OpenDNS的话,那么我得到下面的结果
8 X5 h& s9 i, I: _
; P" s2 ~$ b* ]% }Sam@Bra:~$ dig @208.67.222.222 http://www.google.com' Z7 _; P8 W! o$ b7 P
......
3 g6 v, c& B6 V. l8 Q7 Z;; ANSWER SECTION:
0 N0 J' W1 s' I1 U1 fhttp://www.google.com. 30 IN CNAME google.navigation.opendns.com.2 i: F1 c: f) k6 u0 m2 `: X
google.navigation.opendns.com. 30 IN A 208.67.219.2303 |% t& n! S* E+ J% r! j( C9 S1 @
google.navigation.opendns.com. 30 IN A 208.67.219.231
% k8 h; N; k1 K* G) L* E& G
9 _- ^( ?4 r8 [ping一下得出的IP地址,看看速度,其实并不快1 ?( i0 i o k9 q1 F
1 ?3 Y2 G8 Y& x7 w* W
Sam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes
- D( C, m7 [- M( }. l64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms
" H( n" P. h9 T# D/ Q* ], p6 m6 N% E& _2 V64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms
4 \0 }( m J- h. b64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms. w7 E+ j6 h. B& }
^C
& p6 t' @ s4 G3 \--- 208.67.219.230 ping statistics ---/ V7 Z: A" t' H/ E
3 packets transmitted, 3 packets received, 0.0% packet loss6 \% U. Z5 D4 c; i5 S ?. T
round-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms
* z5 O' o g- j5 q" `2 Q7 ^
* X- I5 {7 X8 l9 z我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。
7 z" n% O/ E9 M* w" R6 D
: S0 c* ~2 U. c3 E$ o4 y. u我网通DNS直接解析- r" N& F4 X9 n5 B' \2 S
S6 T% f# V) o8 n \# CSam@Bra:~$ dig kaixin001.com
8 c9 w `/ ?/ @5 S- X' P* f......
/ e" K8 a t7 p. h. ~3 B" [6 i;; ANSWER SECTION:
9 h9 Q, e1 v0 y! z5 Lkaixin001.com. 120 IN A 220.181.100.31
1 p' ^, f) ~9 Tkaixin001.com. 120 IN A 220.181.100.32
* \9 W# D+ |4 Rkaixin001.com. 120 IN A 220.181.100.33/ `1 P$ D% N! |/ r+ Y3 m0 \
kaixin001.com. 120 IN A 220.181.100.34
$ y6 v' w/ U( V- q; Qkaixin001.com. 120 IN A 220.181.100.35
& h9 ?, i1 S# G/ q: z- x- tkaixin001.com. 120 IN A 220.181.100.30
" u! t! m. f. D! A. R! }& e1 v& Q- h
如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP3 h5 c7 \/ C0 S7 V$ |
l* I% M! D; x- O7 Z4 W
Sam@Bra:~$ dig @208.67.222.222 kaixin001.com ......; e/ d, B) v' e- A
;; ANSWER SECTION:! N! f/ E! G! x9 h9 F& O) s
kaixin001.com. 60 IN A 123.125.58.247
' x- B8 d$ I$ Z( A+ c5 nkaixin001.com. 60 IN A 123.125.56.2465 T" s+ ~& u$ }( r: R4 T0 a
kaixin001.com. 60 IN A 123.125.56.247
. m# e7 w0 K! ]# ?' }kaixin001.com. 60 IN A 123.125.56.245
( b$ n) O( B; Xkaixin001.com. 60 IN A 123.125.56.248
2 @4 `3 N8 R2 f5 Ikaixin001.com. 60 IN A 123.125.59.20
' Y& H+ a3 I& m5 ukaixin001.com. 60 IN A 123.125.59.16& _: G# A9 b# I+ f9 K5 ]& H
kaixin001.com. 60 IN A 123.125.58.248
( S# [* Z% @, K4 |2 ]" ukaixin001.com. 60 IN A 123.125.58.246
/ @6 I+ M1 I! X1 E' u! F1 E; \kaixin001.com. 60 IN A 123.125.58.2450 e7 G. ^* ~+ q7 A
' a# I. P+ O( g0 H% T" d' P* r. f
中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网
: i" k d' [0 `# ]; E9 ]) p2 e9 Y' U8 O2 G$ M: v( x3 e
网通直接查询,可以得到网通服务器的IP
! Y6 K* V! [5 t: C+ e6 t* [
n4 i$ ^. E( ]9 j0 l/ OSam@Bra:~$ dig shooter.cn ......
* G8 | T2 y. b7 g' o;; ANSWER SECTION:: m& X) k; Y1 u; H% p& Y7 t* u$ Q
shooter.cn. 800 IN A 218.21.130.42
* |) E5 I9 [$ h$ j9 c$ r& d" d: K! k$ e) |- H% @& P, k- u
网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP
# h6 n( B( i! o7 n8 R) ^# g' S7 G7 S) M' r1 K+ H4 @
Sam@Bra:~$ dig @208.67.222.222 shooter.cn ......, u) K3 A. Y2 I
;; ANSWER SECTION:
) E3 w, v9 C9 t+ {* D* |9 Gshooter.cn. 750 IN A 74.207.252.170& I) j1 K% [) l% k7 Z9 z# }/ L! [
# ~* d2 ?) k! X) c3 o* P这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。
, Z$ V. w. E% d, t2 {
. i! ^7 J6 O9 b( l国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。 |