找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3875|回复: 3

[其它] 浅析透明代理的重定向过程

[复制链接]
发表于 2009-12-15 11:46:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 bob2016 于 2009-12-15 11:48 编辑

浅析透明代理的重定向过程


网络地址转换有两种特殊的形式:重定向和伪装。伪装的有书上也称为PNAT/PortNAT。
伪装是src-nat的特殊形式,它不需要定义to-address(源地址即转换成的地址),伪装后地址自动转换为外网接口地址。
重定向是dst-nat的特殊形式,它也不需要定义to-address(即目的地址转换成的地址),而是自动转换为内网接口地址。
注意重定向中to-ports是很重要的,to-ports的值是路由器响应请求的服务端口。如web proxy的服务端口3128,当然web proxy服务要提前配置好。


这次要详细说明的是透明webproxy用到的重定向dst-nat。

透明webproxy实际使用了路由器的两个功能:重定向和webproxy,没有重定向,路由器的webproxy功能也不可能是透明webproxy。

下面的说明也许容易让很多人晕头转向,所以准备好笔墨,一边读一边写写画画,这样利于理解。

不论是一般的dst-NAT还是重定向dst-NAT,目标地址都会被修改。关于地址转换的信息(包括被转换前的原始目标地址)被保留在路由器的内部表中。例如有一些client-ip请求访问google-ip:80的数据包,数据包经过重定向后目标地址google-ip被自动转换为路由器的内网接口laninterface-ip,端口被转换为webproxy的端口3128。转换前的原始目标地址google-ip和转换后的laninterface-ip的对应关系现在已经转换到内部表中了。下一步就是由webproxy来处理了,webproxy读取内部表中的原始目标地址google-ip,然后才能找到google的服务器。

现在回过来想一下,为什么在透明webproxy的重定向中不需要定义to-address而是将目标地址转换为内网接口地址?假设重定向中的to-address定义的不是路由器自身内网接口地址,而是指向另一个webproxy服务器的ip,这种情况我们分析一下client-ip能不能访问google-ip:80。client-ip访问google-ip:80的数据包经过第一个路由器的重定向功能,数据包的目标地址由google-ip转换成了另一个webproxy服务器的IP,于是经过改变目标地址的数据包转到了另一个webproxy服务器,而这另一个webproxy服务器并不能看到转换前的目标地址(即google-ip),所以也就不能访问google服务器。最终client-ip不能访问google-ip的网页。所双说,透明webproxy的重定向必然定向到路由器自身的内网接口地址才能有效。

官方文档也提到,新的http协议标准支持在高层协议中保存原始目标地址(如google-ip),虽然上文提到的"另一个webproxy服务器"无法查看数据转换前的目标地址,但可以深入数据包的内部查看高层协议中保存的网页服务器IP地址。但老协议标准不能在高层协议中保存原始目标地址,为了让webproxy服务器能获取重定向前的原始目标地址,重定向还是应定向到路由器本身内网接口地址,也就是说重定向和webproxy服务要做在同一个路由器中,这才能做到真正的透明webproxy。
routeros
发表于 2009-12-24 07:19:28 | 显示全部楼层
好文章,,学习一下
routeros
回复

使用道具 举报

发表于 2010-3-3 22:48:55 | 显示全部楼层
那请问,这意思是不是说,我内网如果多做一台LINUX+SQUID的代理服务器。想要在ROS 3.x里,把tcp:80给重定向到那台服务器IP和3128端口,是根本不可能实现的?
routeros
回复

使用道具 举报

发表于 2010-10-16 22:43:18 | 显示全部楼层





    等待专家解答。。。。
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-22 00:25 , Processed in 0.045409 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表