我在 Debian 服务器上有一个 IPTables 防火墙,后面有一堆主机伪装。在上游网络中,我无法直接访问互联网,我需要通过代理服务器才能访问网站。
我希望防火墙后面的主机自动通过代理服务器,而不需要每个主机自己设置代理(主要是因为我希望能够单点更改代理地址,因为我有不同的代理用于不同的网络场景)。
有没有办法让 IPTables 强制端口 80 和 443 上的所有传出流量通过代理?如果没有,我可以使用其他一些现成的软件来获得我需要的行为吗?
我在 Debian 服务器上有一个 IPTables 防火墙,后面有一堆主机伪装。在上游网络中,我无法直接访问互联网,我需要通过代理服务器才能访问网站。
我希望防火墙后面的主机自动通过代理服务器,而不需要每个主机自己设置代理(主要是因为我希望能够单点更改代理地址,因为我有不同的代理用于不同的网络场景)。
有没有办法让 IPTables 强制端口 80 和 443 上的所有传出流量通过代理?如果没有,我可以使用其他一些现成的软件来获得我需要的行为吗?
至少有两种方法可以做到这一点:
第一个选项使用WPAD机制:
在您的 DHCP 服务器配置中,您必须包含选项 252(例如,对于 dhcpd):
你的 proxy.pac 只是一个 JS 告诉浏览器代理什么(例如):
第二种选择是使用iptables透明地重定向 http 流量(例如):
是的,你可以,它被称为透明拦截代理。只需将流量重定向到 squid 并将其配置为充当透明代理。
顺便说一句,在客户端上手动部署代理配置是有好处的。如果有任何东西直接与您的代理对话,您就知道有些奇怪。并且您可以不通过 IP 而是通过主机名来定义代理,因此您可以更改引用该主机名的 IP。