我有一个 vpn 服务器,支持 HTTPS、L2TP、OPENVPN 和 PPTP。我想在服务器上设置代理,这样来自 vpn 客户端的所有连接都将使用该代理。
我为其创建了以下 bash 脚本文件,但代理不起作用。
gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.http enabled true
gsettings set org.gnome.system.proxy.http host 'cproxy.anadolu.edu.tr'
gsettings set org.gnome.system.proxy.http port 8080
gsettings set org.gnome.system.proxy.http authentication-user 'admin'
gsettings set org.gnome.system.proxy.http authentication-password 'admin'
gsettings set org.gnome.system.proxy use-same-proxy true
export http_proxy=http://admin:[email protected]:8080
export https_proxy=http://admin:[email protected]:8080
export HTTP_PROXY=http://admin:[email protected]:8080
export HTTPS_PROXY=http://admin:[email protected]:8080
如何为服务器创建全局代理并让所有 vpn 客户端自动使用它?
答案1
问题是,在 UNIX 上没有全局代理设置。在 Windows 上,Internet Explorer 配置中有一个代理设置,该设置旨在供其他所有程序使用,但没有规定它们也必须使用它。
而你最大的问题是,你根本无法保证不会安装某些软件,从而(甚至是故意地)避免这种代理设置。
对于这样的问题,存在所谓的“透明代理”。这意味着,你重定向要代理到代理服务器的协议数据包,没有 这 知识/影响客户端。客户端不会看到您正在做什么 - 它们只会连接到外部 IP,甚至不知道它们实际上只连接到您的代理服务器。
您实际上需要执行两个步骤:
1:首先,通过一些有针对性的iptables
规则,你应该重定向传出的 http/https 到您的 http/https 代理服务器(位于或不位于您的网关/vpn 机器上)。
2:您设置了一个 http 代理服务器,该服务器能够充当透明代理。当客户端使用 http 与代理进行通信时,它们使用的协议略有不同,因此透明代理需要代理端的明确支持。但两者差别不大。
Squid 对透明代理的支持非常好,尽管从其他所有角度来看它并不是我一生中发现的最好的软件。
Apache 不是一个代理服务器,而是一个 Web 服务器,尽管它也可以执行代理功能,并且可以通过一些小配置技巧实现透明代理功能。
总而言之,谷歌是你的朋友。我建议的关键词:transparent http proxy gateway linux