squid 能达到和 sniproxy 类似的效果吗?单 HTTP 的话

2016-01-22 04:38:58 +08:00
 function007

因为内网 squid 上有缓存,想利用起来,让它来监听 80 端口, sniproxy 负责 443 。 squid 的设置支持实现类似效果吗?

@ryd994 请问你在 https://www.v2ex.com/t/181289 提到的 squid interception 可以给一下资料的传送门吗?十分感谢。我只搜到了对单个后端的反代,任意域名的 http 请求反代没找到任何资料。。

3855 次点击
所在节点    问与答
7 条回复
function007
2016-01-22 04:40:59 +08:00
我戳,正文里是不能艾特人的么 @ryd994
ryd994
2016-01-22 05:40:14 +08:00
善用 Google : http://wiki.squid-cache.org/SquidFaq/InterceptionProxy
主要就是
http_port 3128 intercept
iptables -t nat -A PREROUTING -s 内网网段 -p tcp --dport 80 -j DNAT --to 缓存服务器 ip:3128

sniproxy 类似:
iptables -t nat -A PREROUTING -s 内网网段 -p tcp --dport 443 -j DNAT --to 缓存服务器 ip:端口

务必仔细考虑防火墙规则,确保请求来自内网,不要变成公共代理
function007
2016-01-22 11:15:52 +08:00
@ryd994 报这个

FATAL: Bungled squid.conf line 4982: http_port 8072 intercept
Squid Cache (Version 2.7.STABLE8): Terminated abnormally.

是不是我版本太老了不支持这个特性。。

squid 是搭在本地内网机器上的,作为上层 privoxy 的缓存。 sniproxy 监听服务器 127.0.0.1 ,用 qTunnel 对内网端口和 sniproxy 端口做的映射,两个都不存在公共代理的问题。
本来是准备运行两个 qTunnel 进程,把内网设备的 80 和 443 转到服务器上 sniproxy 的相应端口去,然后内网的 DNS 把需要走那边过的域名直接解析到那台设备上。因为那台设备同时也运行有带缓存的 squid ,就想着能不能让它来负责 80 口的请求,可以少跑个进程顺便有缓存速度肯定快一些。。
ryd994
2016-01-22 14:09:04 +08:00
@function007 centos 都 3.3 了你哪搞来的 2.7 ……
intercept 换成 transparent
function007
2016-01-22 14:23:32 +08:00
@ryd994 我是 x86 的 XP 啊, 3.5 只有 64 位的, 3.3 需要的 cygwin 装不下,我就只能用 http://squid.acmeconsulting.it/Squid27.html 这玩意了。。

transparent 查到是透明代理的参数,结合防火墙规则把请求全部转给监听端口,然后把那台设备设为网关。我想做的是让 squid 像 sniproxy 一样做一个任意域名的反向代理,测试中用 transparent 参数监听 80 口然后直接把域名解析过去会自身死循环然后报 too many connects 。
ryd994
2016-01-22 14:27:48 +08:00
@function007 一回事啊,只要能把连接劫持过来,结果一样
你不要把自己也劫持了啊……
function007
2016-01-22 14:56:17 +08:00
@ryd994 “你不要把自己也劫持了啊……”这句把我点醒了,第一次发现自己竟然可以 SB 到这种地步。。

死循环是这样产生的:
我在 A 上设置了 http_port 80 transparent ,在 A 上的 hosts 里把 www.ip.cn 的 ip 解析到了 127.0.0.1 ,然后用 A 的浏览器去访问 www.ip.cn 测试。。请求在发到 squid 的时候都是对的,问题是 squid 在进行反代获取内容的时候, www.ip.cn 这个域名被本地的 hosts 又指向了自己。。

刚刚试了下在 B 设备上改 hosts 然后连接 A ,发现它工作的很好。。

麻烦你了不好意思。。十分感谢你的耐心解答。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/252519

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX