有没有办法在整个系统范围内设置网络代理?


18

如果我想让GNOME应用程序(以及Firefox和Chrome)通过代理访问网络,则只需要使用gnome-network-properties(我必须说一个漂亮而简单的GUI)。对于其他应用程序(例如APT,Transmission,XChat),我必须使用它们的特定方法。

有办法避免这种情况吗?在需要代理(主机名:端口)的网络中,可以打开和关闭某些功能吗?


1
我认为http_proxy变量就是您要寻找的。看一下“ 代理支持”方法
sakisk 2011年

Answers:


11

我认为几乎所有使用网络的linux / unix软件都会尊重http_proxyftp_proxy环境变量。根据您的发行版本的设置方式,该名称/etc/environment将存在并在默认情况下由登录Shell读取。

您可以添加一行

http_proxy=123.45.67.89:1011

这样做/etc/environment很容易,但是对该文件的更改仅在下次启动Shell进程时才生效- 只会在该Shell进程中生效。我认为除了当前的外壳程序外,您无法在其他外壳程序中修改全局变量。


1
...除了Firefox和Thunderbird值得注意的例外,askubuntu.com
a /

它似乎node 没有
Brad Parks

是的,换句话说,重新加载外壳意味着退出,然后再次登录以获取图形外壳。
Himanshu Shekhar

6

我同意使用代理服务器的最佳方法是使用环境变量http_proxy,正如其他答案所指出的那样。不幸的是,并非所有应用程序履行环境变量http_proxy,这就是为什么我仍然使用的tsocks一些程序使用LD_PRELOAD武力的网络连接要经过一个SOCKS代理。


3

除了tsocks(AFAICT仍然要求您在具有正确的工作环境的情况下启动程序)之外,您还应该查看tun2socks。有了它,您就可以建立一个TUN接口(即一个新的网络接口,就像创建VPN一样),并且在那里发送的所有数据包都将被代理到您的SOCKS5服务器。然后,您可以设置系统路由以实际将流量发送到此路由。似乎是一种不错的方法。

(我还通过这篇文章发现了redsocks。这似乎不像对我使用TUN接口那样优雅-例如,对于初学者来说,它根本不处理UDP。)


3

我使用此工具,它基本上是几个脚本,可以从一点开始为不同的应用程序配置设置。

PS:我编写并维护了该工具。


2

没有万能的解决方案。每个程序使用其自己的方式连接到代理服务器。

我在办公室遇到类似的问题。我发现最好的方法是使用VPN连接。连接时,整个系统的网络流量将通过VPN。如果您无权访问VPN服务器,则可以手动运行一个新的VPN服务器,然后将其连接到您拥有的代理服务器。

如果您的应用程序不支持代理,则可以使用socksify之类的东西来包装其网络连接。


因此,您尝试过此方法并失败了?
tshepang

0

我有一个类似的问题,但是对我来说,要完成一个系统范围的代理将解决Linux的内核iptablesiptables在网络层上(在特定地址,端口和协议中)添加和删​​除转发规则是确保系统范围代理的唯一方法,该代理不能被应用层中任何特定于应用的设置所覆盖。


0

这为我工作
vi /etc/environment

http_proxy="http://username:password@proxysrv:8080/"
https_proxy="https://username:password@proxysrv:8080/"
ftp_proxy="ftp://username:password@proxysrv:8080/"
no_proxy=".mylan.local,.domain1.com,host1,host2"


vi /etc/yum.conf

proxy=http://proxysrv:8080
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.