【发布时间】:2020-01-27 04:43:45
【问题描述】:
所以我在我的 ec2 实例上安装并运行了 squid 代理服务器。我的任务是让任何 pc 客户端在访问某些站点时仅连接到代理服务器,并将使用常规 wifi 连接进行其他所有操作。诸如白名单之类的东西,或者仅对某些特定网站使用代理而不使用其他任何东西。
这样的事情有可能实现吗?
非常感谢任何帮助或指导。
干杯!
【问题讨论】:
所以我在我的 ec2 实例上安装并运行了 squid 代理服务器。我的任务是让任何 pc 客户端在访问某些站点时仅连接到代理服务器,并将使用常规 wifi 连接进行其他所有操作。诸如白名单之类的东西,或者仅对某些特定网站使用代理而不使用其他任何东西。
这样的事情有可能实现吗?
非常感谢任何帮助或指导。
干杯!
【问题讨论】:
如果squid只用于网络,你可以看看pac(proxy auto configuration)。
创建一个如下所示的 pac 文件 xxx.pac,并将其部署在一些简单的 Web 服务器上。
function FindProxyForURL(url, host) {
// use proxy for specific domains
if (shExpMatch(host, "whitelist.com")) {
return "PROXY squidip:port";
}
// by default use no proxy
return "DIRECT";
}
然后将 pac url http://simple-web-server/xxx.pac 设置为 Internet 选项 -> 连接 -> 局域网设置 -> 使用自动配置脚本
【讨论】:
要强制对特定域使用代理,您可以在配置中使用 acl 和 never_direct 示例:-
acl vkdomain dstdomain xyz.com
never_direct allow vkdomain
以上配置会一直代理xyz.com。
对于白名单,您可以使用 acl 来创建文件并插入您需要代理的所有域。
示例 - 用于代理所有域和子域,例如 example.com、xyz.com。创建文件 whitelist.txt 并插入以下文本
.example.com
.xyz.com
现在在你的 squid 配置中使用下面的 acl 作为白名单
acl whitelist dstdomain "/path/to/whitelist.txt"
以上配置将代理example.com和xyz.com的所有域和子域
【讨论】: