如何使我的代理设置根据我所连接的网络而改变?

如何使我的代理设置根据我所连接的网络而改变?

我公司的企业网络要求我设置网络代理才能访问网络,但当我在其他地方时,我不需要它。Ubuntu 中的代理设置(系统 -> 首选项 -> 代理服务器)允许我创建可以手动选择的“位置”。然后我有一个“默认”位置(没有代理)和一个“工作”位置(其中有我公司的代理)。

有没有办法让 Ubuntu 根据我使用的连接自动选择“工作”位置?我以为我可以使用 IP 子网(非常具体)来检测我的位置,但我不知道如何设置它...

编辑:我确实需要在系统级别设置代理设置。我的所有网络连接(IMAP、SMTP、聊天等)都需要通过代理。不仅仅是 Web 浏览器。

答案1

我能想到一种方法,但设置起来会有点模糊。

基本上你可以使用聚合氯化铝文件

在您的系统上安装一个 Web 服务器,任何微型 Web 服务器都可以,您不需要像 apache 这样的庞大系统。

创建一个wpad.dat包含根据您的源地址匹配的 PAC 指令的文件,然后配置您的系统以使用正确的代理。

在 Firefox 中,配置代理以指向您的本地 PAC 文件。它可能类似于http://localhost/wpad.dat

您的 PAC 文件可能看起来像这样(未经测试)查看更多PAC 示例

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";
  }
}

我从未尝试过,而且我也没有在系统上进行测试,但您甚至可以使用file://Firefox 中的 URL 指定 PAC 文件,这意味着您可以跳过设置 Web 服务器的步骤。

当然,也有快速简便的解决方案,但当你在不同地点之间移动时,确实需要你付出一点努力。安装快速代理Firefox 扩展,只需单击工具栏上的按钮即可打开或关闭代理。如果您愿意使用 Firefox 扩展来处理此问题,您也可以尝试福克斯代理,支持设置多个代理配置文件,并且您可以轻松地在配置文件之间切换。

答案2

在 Ubuntu 10.10 中,.pac 脚本运行良好。正如 Zoredache 所解释的那样,设置一个 Web 服务器,在其中放置一个 pac 文件,打开“系统”->“首选项”->“网络代理”,并将“自动配置 URL”设置为 pac 文件位置。

检查自身 IP 地址的 PAC 文件示例:/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

答案3

作为 Zoredache 答案的补充,您可以使用 /etc/network/if-up.d 中的脚本在 /etc/profile.d/ 中生成包含代理 shell 变量的代码片段。请注意,这仅适用于新 shell。

此外,此方法还可用于生成 WPAD 文件,您可以将任何支持该文件的浏览器指向该文件。

答案4

我有同样的问题。请概括所有答案以涵盖我的情况。

我在家里使用无线笔记本电脑:--始终使用 eth1 接口静态 IP 地址(192.168.1.10)

当我去上班时,我将其插入:-始终为 eth0 接口动态 IP 地址(10.10.xx.xx),以及代理:10.10.123.123 端口 8888

我希望 Ubuntu 根据我使用的接口自动设置 IP 地址和代理。

(我已经在 /etc/network/interfaces 中弄乱了 [参见“man interface”和 /etc/resolv.conf 但无济于事。

相关内容