如何配置所有客户端使用代理而不更改其配置

如何配置所有客户端使用代理而不更改其配置

我想为我的网络配置内容过滤器。我已经配置了 squidGuard 并使其正常工作。我想让所有客户端都使用它。这包括我无法控制的客户端(BYOD 等)。如何让所有流量都通过代理?

答案1

另一个选项是使用 dhcp 选项 252 并将 URL 设置为自动代理配置脚本。或者,您也可以设置 URLhttp://wpad/wpad.dat使用代理设置。或者您可以同时执行这两项操作。DNS 方法通常更受支持。

这取决于能否以这种方式设置 dhcp 服务器和支持自动代理配置的客户端的选项。Windows 和 Mac 客户端应该可以正常工作。据报道,iPad 可以正常工作,但我个人在这方面没有具体经验,也不确定 Android 是否可以使用。PAC 文件的格式如下

  function FindProxyForURL(url, host) {

// If the hostname matches, send direct.
    if (dnsDomainIs(host, ".intranet.domain.com") ||
        shExpMatch(host, "(*.abcdomain.com|abcdomain.com)"))
        return "DIRECT";

// If the protocol or URL matches, send direct.
    if (url.substring(0, 4)=="ftp:" ||
        shExpMatch(url, "http://abcdomain.com/folder/*"))
        return "DIRECT";

// If the requested website is hosted within the internal network, send direct.
    if (isPlainHostName(host) ||
        shExpMatch(host, "*.local") ||
        isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
        isInNet(dnsResolve(host), "172.16.0.0",  "255.240.0.0") ||
        isInNet(dnsResolve(host), "192.168.0.0",  "255.255.0.0") ||
        isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0"))
        return "DIRECT";

// If the IP address of the local machine is within a defined
// subnet, send to a specific proxy.
    if (isInNet(myIpAddress(), "10.10.5.0", "255.255.255.0"))
        return "PROXY 1.2.3.4:8080";

// DEFAULT RULE: All other traffic, use below proxies, in fail-over order.
    return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080";

}

查看http://findproxyforurl.com/example-pac-file/这个例子出自哪里。你的可能要简单得多。

答案2

配置您的路由器以使用您的 squidguard 机器作为“透明代理”。您没有提到您使用什么路由器,但如果它受支持,网络上可能会有一个教程,介绍如何配置它以与代理服务器一起使用。

答案3

您可以将 squid 配置为透明缓存代理。这实际上是应用了一条 fw 规则,将所有数据包从 Web 端口 80 转发到 squid 端口。

squid 的示例配置。

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
acl lan src 192.168.1.1 192.168.2.0/24
http_access allow localhost
http_access allow lan

要激活的 Iptables 规则。

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

如果你使用 squid 身份验证,你必须做出牺牲,因为这是一种拦截网络通信的方式。来源是这里

相关内容