免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3923 | 回复: 3
打印 上一主题 下一主题

[proxy] 在非局域网环境下squid配置透明代理的问题【已解决】 [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-11-12 17:11 |只看该作者 |倒序浏览
本帖最后由 jiufei19 于 2015-11-14 14:57 编辑

大家好,我在配置squid透明代理(由于实际需求的限制,不能像在标准局域网下那样使用proxy)时遇到了一个让人疑惑的问题,一直无法解决,希望得到大家的帮助,下面我描述下我遇到的问题:

------------

网络拓扑
------------

客户端浏览器--------------squid proxy ----------------web server(www.abc.com

》squid proxy不是客户端机器的网关!!!
》客户浏览器以透明代理方式进行工作,即不进行任何显式的代理配置,假设要访问http://www.abc.com
》客户端浏览器的域名解析得到www.abc.com的IP就是squid proxy的IP
》在squid proxy上配置透明代理模式,则当squid的版本为2.6时,在squid proxy上进行必要的iptables的配置后,客户端的访问可以被正确转发到web server,因此透明代理成功
》在squid proxy上配置非透明代理模式,则当squid的版本为2.6时,在squid proxy上进行必要的iptables的配置后,客户端的访问不能被正确转发到web server,非透明代理不成功

》当squid版本升级为3.x以上后,由于高版本的squid的配置文件修改为同时支持透明和非透明两种模式,于是我按新的配置文件规则进行了设置,但是结果始终都无法像版本2.6那样在透明代理模式下正确工作了。

从实际的抓包和返回的错误可以看到,似乎是高版本的squid proxy始终不对客户端发来的请求进行代理转发,这究竟是怎么一回事呢?

论坛徽章:
24
天蝎座
日期:2014-05-13 18:05:59IT运维版块每日发帖之星
日期:2015-11-26 06:20:00操作系统版块每月发帖之星
日期:2015-12-02 14:57:54IT运维版块每月发帖之星
日期:2016-01-07 23:01:56IT运维版块每周发帖之星
日期:2016-01-07 23:04:2615-16赛季CBA联赛之青岛
日期:2016-01-23 07:58:272016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之北控
日期:2016-03-23 14:20:06IT运维版块每日发帖之星
日期:2016-04-01 06:20:0015-16赛季CBA联赛之吉林
日期:2016-06-28 13:51:54IT运维版块每日发帖之星
日期:2016-07-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-23 06:20:00
2 [报告]
发表于 2015-11-13 08:14 |只看该作者
你搞清楚透明代理和普通代理的区别了没。
1.所谓的透明代理打只是不去修改IE里面那个代理设定,实质工作原理是让用户的数据包都发送到代理服务器上。要不要iptables参合进来,是要看你的代理服务器端口是怎么设定的
如果你的代理服务器端口直接设为80,iptables根本就不需要他进来参合,没他的事
如果你的代理服务器本身还额外提供了web服务,必须用3128或其他端口,这个时候才需要iptables做端口重定向。
言外之意:squid的透明代理有没有iptables都没关系。重点是你的实际工作环境决定。

2.而普通正向代理的话就必须在用户端的IE里面设定代理服务器,这样所有的WEB数据包都会被squid处理,他们之间通信是有一个协议,完全不需要什么iptables在那里瞎参合。


3.最后再告诉你3.0和2.6区别。2.6能成功,3.0就肯定能成功。但是重点就是代理服务器的老版本和新版本配置支持透明代理模式方法是完全不同的,你肯定把老的方法用到squid3.0版本去了,那肯定没用呗。

透明代理(squid2.7以上版本)
http_port 代理服务器端口 transparent 

squid2.7以下版本需要这样更改
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on






论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00
3 [报告]
发表于 2015-11-13 20:00 |只看该作者
回复 2# woxizishen

虽然斑竹的说明并没有解决我的问题,不过仍然非常感谢斑竹的指导。我经过进一步的试验,初步得出的结论就是squid的不同版本在代理实现上有了一个根本性的变化,所以才会产生我所描述的现象。


   

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00
4 [报告]
发表于 2015-11-14 14:57 |只看该作者
本帖最后由 jiufei19 于 2015-11-14 15:04 编辑

回复 2# woxizishen

经过今天的再次试验,终于发现不同版本上的写法会导致我所描述的现象。通常很多资料针对squid 3.1+,都是按如下写法来进行代理配置的:

http_port 3128                #3128继续用于正向代理
http_port 3129 intercept   # 透明代理


然而这样的写法总是会产生我所说的那个问题,无法成功代理转发。经过今天的试验,google了一些文档,发现应该如下写,即可完成squid 3.5等高版本的代理转发:

http_port 80 accel vhost allow-direct

这里故意将squid的监听端口改为80了,并且将squid作为反向代理来使用,这样就完美解决了我所描述的问题。之前我一直是按“正向”那种思维在思考,而实际上我的需求可以被看成是标准的反向代理,于是按反向代理就ok了!

再次感谢版主!


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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP