1.大家最关注的,翻墙,防止DNS被劫持。2 U; k/ `5 Q2 j2 \& {) o: w
资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果
' i: r8 N4 y" B: a正常请求一个被劫持的域名,当然是劫持没商量了
v" Y& G' e8 ?$ b) g- \! V
$ i% B4 N K5 d- F/ r% h8 `Sam@Bra:~$ dig hen.bao.li
% f6 [5 I9 Y$ T# U8 w; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
4 `! L+ h+ v2 v8 \9 ^3 |* I;; global options: +cmd
: R0 ^$ C( G+ U* f5 W5 D) H7 C;; Got answer:; V2 A$ W% b2 }2 a& B* J
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859' f! X: ~! y$ s2 D- f& V( R
;; flags: qr rd ra9 E3 N' `7 H- B/ F3 x$ [4 ]: b
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
c/ U. U* o3 u0 p;; QUESTION SECTION: ;hen.bao.li. IN A. [. M$ U! ^" w
;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15
! w1 _4 J- L+ R;; Query time: 0 msec
: r2 h" O' T7 T* W7 z- O* _;; SERVER: 127.0.0.1#53(127.0.0.1)8 b0 [0 D( K2 j5 l! g; u
;; WHEN: Mon Dec 7 23:18:48 2009
5 Q; v j2 X: U* ?' ^6 Y;; MSG SIZE rcvd: 44. h! z3 r# G: p4 c* I& K
! n5 e; P% t6 L# B% k
Sam@Bra:~$ dig hen.bao.li" \( I7 }% p8 A3 Y9 r' r+ y! S
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li) Y7 W/ x6 t$ z& w
;; global options: +cmd" z0 |# `+ v. X; Z$ s7 w/ @4 P" X
;; Got answer:
- V8 ?" @1 D8 ^;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859 L) n: y b9 u- Z) h
;; flags: qr rd ra
% D/ y( g `3 P6 v" U0 Z; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
8 `/ m+ x9 K* b8 y/ I- x& _5 j) j) m: c;; QUESTION SECTION:
+ X7 x0 e0 i( ?" a) h/ k) g* q; d& n;hen.bao.li. IN A3 T6 `7 S1 X. }6 z8 b
;; ANSWER SECTION:8 d4 g2 y% X0 W/ F1 ^/ X
hen.bao.li. 85697 IN A 78.16.49.15
( T6 ^' S9 Q: y; T( b;; Query time: 0 msec
, |# p+ E. G( \;; SERVER: 127.0.0.1#53(127.0.0.1)
7 {9 w: y- j- ~/ v6 U) l;; WHEN: Mon Dec 7 23:18:48 2009
9 ]$ t+ t6 U3 g: ~+ d& z" w;; MSG SIZE rcvd: 446 U# e( }" r& t K
5 ^" A2 c. R( d) u0 g
然后再看用了Google Public DNS后,照样劫持你没商量
% F- d' M4 c$ s3 k" E, e2 Z' ]: C$ h6 ]6 [( T: ]
Sam@Bra:~$ dig @8.8.8.8 hen.bao.li
5 T; K5 S& U& W( P `- m; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li/ \* A* M- X8 \
; (1 server found)2 { a$ ?+ h% s, X6 M
;; global options: +cmd
4 J# E6 C+ g6 `2 x- u0 Z: ?;; Got answer:
! w4 q# R0 X, `: h8 \;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485( j3 n; I- o: t" u, \; q9 ~# [+ @
;; flags: qr aa rd ra
3 |) g- |9 q" n# b3 S. ^2 W" B; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
9 h$ G) L; Q$ T6 o* z+ T;; QUESTION SECTION: ;hen.bao.li. IN A
$ F" ?" C. G. F3 u5 a;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15* H& ?" B, u' Q2 t- N8 g! K; m
;; Query time: 75 msec
4 S' E0 s; V" V0 H$ C: j! u _1 i;; SERVER: 8.8.8.8#53(8.8.8.8)# I) @6 o! }/ l
;; WHEN: Mon Dec 7 23:20:58 2009
: S5 i* V: k! z3 g1 P;; MSG SIZE rcvd: 54
: ?. _6 Q, ^5 @, x( R( ?+ ?: b, \9 L- V: L P
我们看看国外机器得出的真实结果
9 H7 Y. I: b: J4 b& j: K+ X/ g* P2 R# t+ b
[root@WS-10267 ~]# dig @8.8.8.8 hen.bao.li
) F4 Y8 K/ X% v; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li( Y$ {7 `4 D+ o7 r) H6 I
; (1 server found)
( E5 z# F: g4 Y. P7 Y' L;; global options: printcmd1 J+ ~7 S& u# b( \3 m' i8 X6 M
;; Got answer:
8 c' x* C; w! l! o$ D2 T;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845; l4 M+ W" n) A `/ A) `% X
;; flags: qr rd ra
4 ^2 r m) A j! Z& V ~; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0/ _# b; A* \& P% _# d. R, ]( }
;; QUESTION SECTION: ;hen.bao.li. IN A
0 B2 s' Z2 O& i% |, a;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44/ [- ^8 X$ A1 M. T
;; Query time: 252 msec
T5 P. u! a( q% j;; SERVER: 8.8.8.8#53(8.8.8.8)
7 Z) Y% ^" Z; {+ i, {. n;; WHEN: Mon Dec 7 23:25:12 20092 y7 F. Z. R! \; c2 j6 i' z
;; MSG SIZE rcvd: 44
. V: R5 s& ?1 c/ s m4 W% m. H& K9 Y, p$ n
可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。
: \' T- ~6 _# g, Y8 t% f* g& P! j% a
2.解析速度快+ m# f5 a4 G( X
1 k& {0 E+ m3 ?% a& Q% q
Google Public DNS解析速度是挺快的,但OpenDNS就未必了: J a3 D' B6 d7 C% n7 e$ u" i! u
6 X* x! {: w# E. lSam@Bra:~$ dig @208.67.222.222 http://www.dnspod.com, R' ~4 h* L- x( N
; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com
8 U- q5 w4 l! s* [3 Z; (1 server found)
3 r) Y+ i1 S, Z/ B2 T; y9 l;; global options: +cmd
4 O C2 ?* z$ }( U( g;; Got answer:0 u0 N' ]. ^ n
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404
F2 _4 C3 {5 p;; flags: qr rd ra6 z; j" V J+ ^7 K8 q! E
; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0' U% ^* B* H# a
;; QUESTION SECTION: ;www.dnspod.com. IN A4 T9 l/ {$ @8 H& l2 f# z% ?- F
;; 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
/ L+ K$ z! k0 H4 s5 l;; Query time: 608 msec$ }* ^& V6 R8 J# R. ]" a
;; SERVER: 208.67.222.222#53(208.67.222.222)( f$ b4 o; C4 [
;; WHEN: Mon Dec 7 23:29:01 2009
- w# B0 ]* e C;; MSG SIZE rcvd: 101/ b v |9 }* V0 P# g
4 G; X g% ~* K5 ]$ ]- f* N0 P
3.最重要的问题,访问网站真的快吗?: C/ K* P9 R0 J' k' i% {
@ O& N; E8 p& C4 o# K相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。& Q3 B. ]' b3 g7 N' s
# d; w8 H! A9 f3 d
大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。
/ N2 b8 R) w* Z9 Y6 L
9 B: _) h; U+ \& z/ k# U# M网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。
) O$ e1 V# y0 W3 Y6 Y
U7 Z( t7 f% Q4 E0 @智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。: y& y. Z5 D r1 H# I4 F9 _. }
% p0 m. u7 P6 n3 h) w1 y但如果这个时候,用户用的是OpenDNS或者Google Public DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。& K! w5 I, x1 ?3 x4 H& l+ _( R( ]
" x0 R$ | h) `& x& h3 C
如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。
7 P3 S3 _3 Q t( L. z5 c( }/ B* C7 Q# Y0 k. e0 ^
返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。. ~1 | o/ |- ^* r V0 i
- K1 D) ?% O! q) Z% I! T% T本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。
% v7 T2 ^3 r6 w8 ?5 _$ U* W8 ] x8 V1 u0 {- y5 M" B; x
拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果
- z3 y9 ~0 |; J. X9 E# J, g9 `- \! U9 }+ A% U
Sam@Bra:~$ dig http://www.google.com! _9 e) f$ J* o) J, S9 t
......# `; R0 S3 a1 g8 D) x( p# [6 l
;; ANSWER SECTION:
4 [% g. F" A* v" r7 T7 ] ?; ihttp://www.google.com. 48102 IN CNAME http://www.l.google.com.
& h: _4 z! u$ C8 l. zhttp://www.l.google.com. 300 IN A 216.239.61.104: [3 P6 }$ t6 f0 C+ v& h' B
& D2 o8 Z' P- @7 l. p
如果我用了OpenDNS的话,那么我得到下面的结果9 {4 ~' @. Y4 Y! i% Z% B
4 z" U0 c8 t4 @Sam@Bra:~$ dig @208.67.222.222 http://www.google.com
- \. i4 V- c4 A" h6 L....... b- e/ |% u4 u, A Y
;; ANSWER SECTION:" h4 z: a; L# }2 Z G" U8 Z
http://www.google.com. 30 IN CNAME google.navigation.opendns.com.
* @/ B2 `9 g# {9 Cgoogle.navigation.opendns.com. 30 IN A 208.67.219.230
- T9 [: p4 M& mgoogle.navigation.opendns.com. 30 IN A 208.67.219.2313 }; p4 m' k# c
% s3 [# d9 G# Z$ P! l- @. qping一下得出的IP地址,看看速度,其实并不快
9 w3 P+ q$ y( E u1 A4 k" p4 a7 O7 M: }" m: e
Sam@Bra:~$ ping 208.67.219.230 PING 208.67.219.230 (208.67.219.230): 56 data bytes
$ r5 H) [' W0 C O) G7 y7 B64 bytes from 208.67.219.230: icmp_seq=0 ttl=51 time=213.828 ms% V# Q3 F1 Z r2 W/ m
64 bytes from 208.67.219.230: icmp_seq=1 ttl=51 time=213.779 ms
0 d1 W7 E* |, E; ?# n# ]64 bytes from 208.67.219.230: icmp_seq=2 ttl=51 time=214.716 ms- K: \0 O, u, H4 T! p
^C
Z- E6 } b7 {# J& n--- 208.67.219.230 ping statistics ---( s3 H' G: e8 {- U/ ?9 B% k. C! w
3 packets transmitted, 3 packets received, 0.0% packet loss0 B: Y: S W, j" y
round-trip min/avg/max/stddev = 213.779/214.108/214.716/0.431 ms
& h& x" }+ F0 ?0 w6 Y( v; x; Q
% d6 g# T# i. R |我们可以再看看kaixin001.com的,如果我是网通用户,用了OpenDNS或者Google Public DNS,那么我会被解析到kaixin001的电信IP去。当然,kaixin001的电信机房线路很好,网通用户访问其实影响不大。
; P# `) S2 Z) U4 O1 O3 _" [7 W% G* x2 B+ J! ] ~. c
我网通DNS直接解析
- {9 o! _! h0 A3 |0 x- T1 S& j' F. F6 u% m
Sam@Bra:~$ dig kaixin001.com7 {0 K8 Y7 W* X
......) P8 _8 f) d# H
;; ANSWER SECTION:9 C9 v6 N8 [' p7 k0 f2 l9 o
kaixin001.com. 120 IN A 220.181.100.31
* f. F+ Y) b. `% Z; O( B- Gkaixin001.com. 120 IN A 220.181.100.32
3 M: l8 Z' ]% P2 m& v% D0 r' Zkaixin001.com. 120 IN A 220.181.100.33# o% w6 D F* X3 o1 {0 q# f
kaixin001.com. 120 IN A 220.181.100.34% M2 i& t7 b h3 }
kaixin001.com. 120 IN A 220.181.100.35
z* ]" f! o3 N6 t/ Q5 h) z6 D" ikaixin001.com. 120 IN A 220.181.100.30; |! C- T" r% V2 ~6 r1 k& |( g
' x. S+ w. }) k6 y; u
如果我换用了OpenDNS,我得到的是kaixin001在电信服务器的IP
$ d' R6 ?4 z; u8 P, \1 J- U5 s
( c {' z& n9 H# Q3 m+ R# T% @Sam@Bra:~$ dig @208.67.222.222 kaixin001.com ......# J9 o* k. Q# {
;; ANSWER SECTION:! k# k, z- S3 }
kaixin001.com. 60 IN A 123.125.58.247
' }9 @# g2 ^+ n% }2 ikaixin001.com. 60 IN A 123.125.56.2467 U0 E( ^3 E+ Q4 N3 k. M5 S
kaixin001.com. 60 IN A 123.125.56.247
+ e+ s: j4 B9 @7 {7 h7 @kaixin001.com. 60 IN A 123.125.56.2455 Z$ r0 H4 m% A7 F' {
kaixin001.com. 60 IN A 123.125.56.2485 b ^, p+ I! O( f( O' `6 @
kaixin001.com. 60 IN A 123.125.59.20& A( V3 e; ?) V3 U! S
kaixin001.com. 60 IN A 123.125.59.16
5 \# J' F* _; T$ ] z }# v- l0 Ukaixin001.com. 60 IN A 123.125.58.248
( F/ o; Y7 L7 g' T1 f/ Nkaixin001.com. 60 IN A 123.125.58.246
7 V3 |# I# j$ T! u7 j6 J* {) `kaixin001.com. 60 IN A 123.125.58.245* n1 L g$ `6 \, A" q5 J! F
% G, [# {8 ^5 E) s7 [, s
中小网站就没这么幸运了。中小网站没有太多的钱去买昂贵的BGP线路,只能用很低廉的智能DNS方案,比如我们经常去找字幕的射手网
' T4 Y- h H; \) H5 D N' F- I) }, u# w5 [; {" s( K5 [, A* o
网通直接查询,可以得到网通服务器的IP! s2 m/ L6 Q/ \' a( g8 S
% {; f0 x9 E. y, `6 Y9 h% P" YSam@Bra:~$ dig shooter.cn ......
1 `% q8 v& \# y; v" z8 M;; ANSWER SECTION:
: F& P- w# ^- ] _8 X; Eshooter.cn. 800 IN A 218.21.130.42
u# c, \& ~- ?, A K( i
# P: T7 x4 W- J; q* o* E3 k' Y网通套用OpenDNS进行查询,得到的是射手在国外服务器的IP
2 U2 j! t1 |8 ~1 T- p
' q% z4 V9 }6 C5 j$ e3 L; K# s. P! N9 ISam@Bra:~$ dig @208.67.222.222 shooter.cn ......# f% y) o* C5 }* D- _
;; ANSWER SECTION:) g# c# k6 q( `
shooter.cn. 750 IN A 74.207.252.170
9 h! m' H2 M- H& Y( {7 s0 w3 F4 z0 g4 T2 `) ]: o* b% h" S# Q+ N
这样,你就“被出国”了。用了OpenDNS或者Google Public DNS后,你访问的将是一个速度并不快的射手网。+ q- H4 c* @6 @" _* x* t
' V1 {1 v! l5 T! B* q9 d4 o国内类似射手网这样的中小网站有几十万甚至上百万,不少游戏运营商也采用这样的方案。虽然他们不一定有国外的服务器,但如果你被解析到并不属于自己网络的服务器上,访问速度或多或少都会受到影响。所以,如果你最近访问网站速度有所下降,或者玩游戏的时候经常掉线,那么你就该把DNS给换回来了。 |