1
virushuo 2012-05-10 18:31:02 +08:00
奥秘在于这样内外的两台机器有个VPN,然后绑一个静态路由。不过我也自己试验过,就是和朋友讨论过这个是可行的。
|
2
qq286735628 2012-05-10 18:44:12 +08:00
曾经我也在想这个问题,后来发现,现在的DNS,就是这么一个模式,A向B发请求,B返回一个信息给A,A根据信息向C发送请求,C返回实际数据,AC建立通讯。
你上面说的,我向A发请求,A告诉B,B返回给我,有点像回调函数的意思。 |
3
qq286735628 2012-05-10 18:49:46 +08:00
貌似国内80端口对外发数据,严格的时候都必须备案吧~
能不能在DNS上面做手脚,让解析出来的IP带上其他端口号,然后通过.htaccess之类的方法把端口号隐藏起来,不显示在浏览器地址栏。 我自己都觉得好纠结的做法~ |
4
ipoh 2012-05-10 18:51:12 +08:00
教你的人也是一知半解
|
5
manhere 2012-05-10 18:56:35 +08:00
表示之前对这种方法闻所未闻。。。
|
6
binux 2012-05-10 19:06:07 +08:00
不知道如何能透明地做到
|
7
lqs 2012-05-10 21:32:10 +08:00
假设用户(A),国内服务器(B),国外服务器(C),A向C发送请求,C可以把这次TCP连接的相关信息高速B,让B伪装成C(即在B上把发出的IP包的源地址改成C的地址)。计算好相关checksum即可。
|
10
VYSE 2012-05-10 23:23:11 +08:00
这种伪造一TRACERT就发现了吧
|
11
raptium 2012-05-10 23:26:40 +08:00
伪造的话,也不是一般人能玩的,会被 router 丢掉的,ISP 没有义务传送不是自己用户的包
|
12
delphiqin 2012-05-10 23:57:20 +08:00
我对此也是一知半解,大概说一下我对CDN的了解:
你在使用CDN之前,需要先将你的域名A设置成CNAME解析,指向CDN提供商给你的域名B 然后当一个用户访问你的网站时,他会先向你的域名A的DNS发起域名解析请求,然后因为你的域名设置的是CNAME解析,所以会将CDN的域名B返回给用户,于是用户再向域名B的DNS发起解析请求,CDN提供商会将域名B的DNS指向全局负载均衡DNS,此全局负载均衡DNS会根据用户的地理位置(由IP得到)将域名B解析为离用户最近节点N的IP并返回给客户。至此,域名解析完成,用户拿到了CDN节点N的IP,之后,用户向此节点发送请求,获取内容。 如果节点N上没有用户要请求的内容,则节点N向你的服务器(这个需要事先在CDN提供商的后台设置)发起此内容的请求,你的服务器返回后,节点N缓存并返回给用户。 以上说的是内容缓存在CDN提供商的节点上的情况。如果你希望使用自己的服务器做内容缓存,那将CDN提供商的节点换成你的服务器即可。 |
13
dianso 2012-05-11 00:05:15 +08:00
应该是BGP线路
|
14
yelusiku 2012-05-11 00:35:59 +08:00
7楼说的这个像是TCP spoofing
|
15
benzhe 2012-05-11 00:36:58 +08:00
我的理解是,
如果“国内80端口对外发数据,严格的时候都必须备案” ( @qq286735628 ), @virushuo 所说的应该是解决办法。cdn 接受请求后通过 vpn 路由强制走国内服务器线路,这样解决了 tracert 的问题 ( @VYSE ),不需要伪造和修改端口 不过因为是国外 ip , 所以如果“ISP 没有义务传送不是自己用户的包”( @raptium ), 那就木有办法了(不过我觉得应该没有这个问题吧,谁能能力测试一下) |
16
benzhe 2012-05-11 00:44:51 +08:00
上面的方法最终还是由 cdn 返回数据,如果是国内服务器返回数据的话,貌似还是得劫持/过滤什么的...一开始想得太单纯了
|
17
qq286735628 2012-05-11 00:47:49 +08:00
|
18
benzhe 2012-05-11 00:58:58 +08:00
@qq286735628 上面我说的是国外的 cdn 哦
|
19
feiandxs OP |
20
Themyth 2014-05-28 09:34:32 +08:00
我知道怎么做到的,但是这不适合公开。
|