首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在同一台机器上通过squid代理强制来自webserver/PHP的传出请求?

如何在同一台机器上通过squid代理强制来自webserver/PHP的传出请求?
EN

Server Fault用户
提问于 2013-04-23 09:09:40
回答 1查看 1.6K关注 0票数 1

我有一个Debian挤压VPS配置为一个nginx web服务器。出于安全原因,我阻止了除Debian更新服务器之外的所有传出连接(这将阻止坏脚本调用home)。PHP也在单独的用户下运行。我的问题是:

各种CMS-s和PHP/Perl/Python应用程序需要访问其他服务器上的web服务(即进行传出HTTP连接)。我已经在相同的VPS上安装了squid,并且希望通过白名单允许的域来使用它作为透明的过滤器/代理。

我知道如何通过代理强制所有输出端口80连接,但这会导致代理自己的请求被重定向到自己(即无限循环)。我也不能为iptables使用ipt_owner模块,因为VPS公司明确地告诉我,他们不会安装它。

是否有另一种聪明的方法可以在同一台机器上强制所有其他HTTP传出请求通过squid代理,同时允许代理自己的请求退出?

如果有帮助的话,我还安装了csf。

谢谢!

EN

回答 1

Server Fault用户

回答已采纳

发布于 2013-05-06 06:26:14

好吧,回答我自己的问题:

Squid允许您在其传出数据包上设置TOS。设置为tcp_outgoing_tos。因此,使用允许的IP或域创建acl并设置(例如,tcp_outgoing_tos 0x10 whitelist )。

来自其他应用程序的数据包通常具有TOS 0x0。

现在按照squid自己的教程http://wiki.squid-cache.org/ConfigExamples/Intercept/LinuxLocalhost#iptables_配置中的步骤进行操作,但是我们不匹配包的所有者,而是匹配TOS。

代码语言:javascript
运行
复制
# handle connections on the same box (SQUIDIP is a loopback instance)
iptables -t nat -A OUTPUT -p tcp --dport 80 -m tos --tos 0x10 -j ACCEPT
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination SQUIDIP:3127

在使用csf时,我们可能还需要在过滤器表的输出链上接受这些数据包。把规则放在链子的开头。

代码语言:javascript
运行
复制
iptables -I OUTPUT -p tcp --dport 80 -m tos --tos 0x10 -j ACCEPT
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/501825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档