问题描述
我公司的公司网络要求我设置网络代理才能访问网络,但是当我在其他地方时,我不需要它。\n Ubuntu 中的代理设置(系统 -> 首选项 -> 代理服务器)允许我创建了可以手动选择的 “locations”。然后我有一个 “default” 位置(没有代理)和一个 “work” 位置(其中有我公司的代理)。
有没有办法让 Ubuntu 根据我使用的连接自动选择 “work” 位置?我以为我可以使用 IP 子网(非常具体)来检测我所在的位置,但我不知道如何设置它……
编辑:我确实需要在系统级别设置代理设置。我所有的网络连接(IMAP、SMTP、聊天等)都需要通过代理。不仅仅是网络浏览器。
最佳回答
我可以想到一种方法,但是设置它会有点晦涩。
基本上你可以使用 PAC 文件
在你的系统上安装一个Web服务器,任何小型的Web服务器都可以,你不需要像apache这样的庞大系统。
使用根据您的源地址匹配的 PAC 指令创建文件 wpad.dat
,然后配置您的系统以使用正确的代理。
在 Firefox 中,将代理配置为指向本地 PAC 文件。它可能类似于 http://localhost/wpad.dat
。
您的 PAC 文件可能看起来有点像这样(未经测试)。请参阅此处了解更多 PAC examples 。
function FindProxyForURL(url, host) {
// If on a internal/LAN IP address, send traffic direct.
if (isInNet(myIpAddress(), "10.10.1.0", "255.255.255.0"))
{
return "PROXY 1.2.3.4:8080; PROXY 4.5.6.7:8080; DIRECT";
}
else
{
return "DIRECT";
}
}
我从未尝试过,也没有在系统上进行测试,但您甚至可以在 firefox 中使用 file://
URL 指定 PAC 文件,这意味着您可以跳过设置 Web 服务器。
当然,还有快速简便的解决方案,但当您在不同地点之间移动时,它确实需要您付出一些努力。安装 Quick Proxy Firefox 扩展,然后只需单击工具栏上的按钮即可打开或关闭代理。如果您愿意使用 Firefox 扩展来处理此问题,您也可以尝试 FoxyProxy ,它支持设置多个代理配置文件,并且您可以轻松地在配置文件之间切换。
次佳回答
在 Ubuntu 10.10 中,.pac 脚本运行良好。正如 Zoredache 所解释的,设置一个网络服务器,在其中放置一个 pac 文件,打开“系统”->“首选项”->“网络代理”并将 “Autoconfiguration URL” 设置为 pac 文件位置。
检查自己的 IP 地址的 PAC 文件示例:\n/var/www/selectProxy.pac:
function FindProxyForURL(url, host)
{
if (myIpAddress() == "192.168.22.63") {
return "PROXY 192.168.22.8:8080";
}
else {
return "DIRECT";
}
}
在网络代理首选项中:URL 为:
http://localhost/selectProxy.pac
第三种回答
作为 Zoredache 答案的补充,您可以使用 /etc/network/if-up.d 中的脚本在 /etc/profile.d/中生成包含代理 shell 变量的代码片段。请注意,这仅适用于新 shell。
此外,此方法可用于生成 WPAD-file,您可以将任何支持此方法的浏览器指向它。