我公司的公司网络需要我设置网络代理才能上网,但是当我在其他任何地方时,我不需要它。Ubuntu 中的代理设置(系统 -> 首选项 -> 代理服务器)允许我创建可以手动选择的“位置”。然后我有一个“默认”位置(没有代理)和一个“工作”位置(里面有我公司的代理)。
有没有办法让 Ubuntu 根据我使用的连接自动选择“工作”位置?我以为我可以使用 IP 子网(非常具体)来检测我在哪里,但我不知道如何设置它......
编辑:我真的需要在系统级别设置代理设置。我所有的网络连接(IMAP、SMTP、聊天等)都需要通过代理。不仅是网络浏览器。
我可以想到一种方法,但设置它会有点晦涩难懂。
基本上你可以使用PAC文件
在您的系统上安装一个 Web 服务器,任何小型 Web 服务器都可以,您不需要像 apache 这样的庞大系统。
根据您的源地址创建一个包含
wpad.dat
匹配的 PAC 指令的文件,然后配置您的系统以使用正确的代理。在 Firefox 中,将代理配置为指向您的本地 PAC 文件。它可能是这样的
http://localhost/wpad.dat
。您的 PAC 文件可能看起来像这样(未经测试)。有关更多PAC 示例,请参见此处。
我从未尝试过,也没有在系统上进行测试,但您甚至可以使用
file://
Firefox 中的 URL 指定 PAC 文件,这意味着您可以跳过设置 Web 服务器。当然,也有快速简便的解决方案,但是当您在不同地点之间移动时,它确实需要您付出一些努力。安装Quick Proxy Firefox 扩展,只需单击工具栏上的按钮即可打开或关闭代理。如果你愿意用 Firefox 扩展来解决这个问题,你也可以试试FoxyProxy,它支持设置多个代理配置文件,你可以轻松地在配置文件之间切换。
在 Ubuntu 10.10 中,.pac 脚本运行良好。正如 Zoredache 解释的那样,设置一个网络服务器,将一个 pac 文件放在那里,打开 System->Preferences->Network Proxy 并将“自动配置 URL”设置为 pac 文件位置。
检查自己的 IP 地址的 PAC 文件示例:/var/www/selectProxy.pac:
在网络代理首选项中:URL 将是:
作为 Zoredache 答案的补充,您可以使用 /etc/network/if-up.d 中的脚本在 /etc/profile.d/ 中生成一个包含您的代理 shell 变量的片段。请注意,这仅适用于新的 shell。
此外,此方法可用于生成 WPAD 文件,您可以将任何支持此功能的浏览器指向该文件。
这是一个很老的帖子,但我发现了这个。看看: http: //marin.jb.free.fr/proxydriver/
您可以安装为 Ubuntu 提供的 .deb 包。这基本上是一个 shell 脚本,当您的网络发生变化时会更改环境变量。您可以通过编辑在
/etc/proxydriver.d/
我也有同样的问题。请概括任何答案以包括我的情况。
我在家里使用我的笔记本电脑进行无线: -- 总是 eth1 接口静态 IP 地址 (192.168.1.10)
当我上班时,我将其插入:-始终为 eth0 接口动态 IP 地址(10.10.xx.xx)和代理:10.10.123.123 端口 8888
我希望 Ubuntu 根据我使用的接口自动设置 IP 地址和代理。
(我在 /etc/network/interfaces [参见“man interfaces”和 /etc/resolv.conf 无济于事。
我使用 PAC 文件方法,它适用于浏览,但对于许多其他不理解 PAC 文件的应用程序来说效果不佳 - 我猜当应用程序通过 API 请求“代理配置”时,他们只是得到如果您使用的是 PAC 文件 URL,请返回。
对于没有代理支持或不理解 PAC 文件(如 Empathy)的用户应用程序,我使用 tsocks(因为我使用 SSH 隧道来支持代理)。
将 JavaScript 引擎或 PAC 解析器链接到每个支持基本代理配置的应用程序似乎有点矫枉过正。这似乎是一个可以从一些底层平台支持中受益的情况,API 调用实际上解释了 PAC 文件并返回结果,而不是它的 URL。
这是一篇旧帖子,但我来到这里寻找一种方法来做到这一点并找到了不同的答案。我正在使用的答案在于一个名为“whereami”的包中,它要求您在其 detect.conf 文件中定义您工作的子网,然后在 whereami.conf 文件中定义代理服务器。应该工作,我会发布我遇到的任何问题。
祝你好运!