采用旁路非镜像方式部署的缓存系统,通过改客户机dns ip 却实现了访问拦截和代理,是如何实现的?
最近尝试用在公司内部搭建一个透明代理缓存服务器,在网上找教程浏览时发现好几家的系统,
都是只用改一下客户机的首选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:

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

这里奇怪的是,同时也抓到了虚拟机1的网卡上的数据包。
客户机上Firefox浏览器访问
http://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就有这功能,只是很多人没深入研究导致不知道罢了。