注册
登录
提问时间:2016/7/8 15:39:05
最近尝试用在公司内部搭建一个透明代理缓存服务器,在网上找教程浏览时发现好几家的系统,
都是只用改一下客户机的首选DNS IP 为缓存服务器的 IP,就可以实现透明代理。
如这里:秒开缓存系统快速入门指南
和这里 Fikker 小区缓存

我用秒开系统开放的ISO文件在虚拟机上做了实验。

虚拟机1,网卡用NAT,安装秒开缓存系统,ip设置为192.168.149.250
虚拟机2,网卡用NAT,客户机装Ubuntu,ip设置为192.168.149.132,并安装wiresharp抓包
两个机器的网关都是系统分配的192.168.149.2

虚拟机2 DNS设置为虚拟机1 的ip

虚拟机2上nslookup 查看 qq.com,可以得到正确的ip:

wiresharp 抓包显示,确实通过虚拟机1向alidns请求了:

这里奇怪的是,同时也抓到了虚拟机1的网卡上的数据包。

客户机上Firefox浏览器访问qq.com首页,抓包如下:
可以看到向qq的ip发起了链接,而不是缓存服务器的ip。

但是缓存系统却捕捉到了访问请求,并缓存了图片:

综上,缓存服务器是部署在旁路的,它是怎么做到拦截的?

--------------------------------2015.7.20 15:28 添加------------------------------------------
问题已解决,缓存系统确实返回了假的dns,不过不是首页域名的,而且首页引用的其他外部资源所在的其他域名,如下图中的几个response。

虽然暂时还不知道缓存系统的dns是怎样区分,哪些要返回真实的,哪些可以返回假的,不过肯定是可以做到的。

谢谢 @pig pig 和 @Travis Lee 的回答和指导。
最近尝试用在公司内部搭建一个透明代理缓存服务器,在网上找教程浏览时发现好几家的系统,
都是只用改一下客户机的首选DNS IP 为缓存服务器的 IP,就可以实现透明代理。
如这里:秒开缓存系统快速入门指南
和这里 Fikker 小区缓存

我用秒开系统开放的ISO文件在虚拟机上做了实验。

虚拟机1,网卡用NAT,安装秒开缓存系统,ip设置为192.168.149.250
虚拟机2,网卡用NAT,客户机装Ubuntu,ip设置为192.168.149.132,并安装wiresharp抓包
两个机器的网关都是系统分配的192.168.149.2

虚拟机2 DNS设置为虚拟机1 的ip

虚拟机2上nslookup 查看 http://qq.com,可以得到正确的ip:
… 显示全部
1楼(站大爷用户)

这种缓存系统其实就是劫持。

原理:
1、在缓存服务器上预先配置好一些域名的反向代理+缓存(比如众多视频网站)
2、缓存服务器架设DNS,DNS把这些域名劫持到缓存服务器
3、用户修改DNS为缓存服务器IP,访问这些域名时,实际会访问缓存服务器,如果缓存服务器上有这些资源的缓存,就无须访问真实服务器下载,节省小区带宽,提高速度

另外众多小运营商,还有移动宽带,都会强制劫持部分域名,以减少带宽支出和网间结算费用。
连P2P流量都能缓存,http缓存更成熟了,所有CDN本质上都是这个原理,当然CDN系统远比这个复杂。
2楼(未知网友)

谢邀。

其实就是在网站外面包了一层缓存而已。

用户访问缓存,如果存在缓存则秒开,不存在则需要时间来等待缓存从网站加载。

另外,Apache就有这功能,只是很多人没深入研究导致不知道罢了。
立即注册站大爷用户,免费试用全部产品
立即注册站大爷用户,免费试用全部产品