我已经设置了一个 squid 正向代理来缓存所有互联网请求。我有一个公共 IP 并打开了端口 3128。现在我只需要设置我的 ubuntu 服务器以强制所有互联网连接使用 IP 地址和端口号通过此代理。
我知道这个命令会让 ubuntu 通过代理访问互联网,但我被告知它不是永久的。
export http_proxy="http://proxy.example.com:8080"
我需要使用哪个命令来强制 ubuntu 通过这个代理,无论重新启动或会话如何?
谢谢
答案1
你必须设置一些设置/etc/environment
使其永久生效:
- 使用(或您喜欢的编辑器)打开该
/etc/environment
文件vi
。此文件存储在启动时初始化的系统范围变量。添加以下几行,并进行适当修改。您必须同时使用大写和小写字母,因为(不幸的是)某些程序仅查找其中一种:
http_proxy=http://myproxy.server.com:8080/ https_proxy=http://myproxy.server.com:8080/ ftp_proxy=http://myproxy.server.com:8080/ no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com" HTTP_PROXY=http://myproxy.server.com:8080/ HTTPS_PROXY=http://myproxy.server.com:8080/ FTP_PROXY=http://myproxy.server.com:8080/ NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com"
apt-get
、aptitude
等在与 正常使用时不会遵循环境变量。因此,请分别配置它们;在 中sudo
创建一个名为 的文件,并包含以下内容:95proxies
/etc/apt/apt.conf.d/
获取::http::proxy "http://myproxy.server.com:8080/"; 获取::ftp::proxy "ftp://myproxy.server.com:8080/"; 获取::https::proxy "https://myproxy.server.com:8080/";最后,注销并重新启动以确保更改生效。
答案2
所提出的解决方案在一般情况下不起作用——它假定一切都会承认并使用环境变量。
为了使此功能适用于 HTTP,您需要设置 ua“透明代理”,这通常需要 IPTABLES nat 规则来捕获和重定向流量。看看这里如何做到这一点。
对 HTTPS 执行同样的事情是可行的,但您还需要在 SQUID 中另外安装一个 CA 并在 Ubuntu 框中接受它,以便它可以拦截流量。
这对于 FTP 来说可能不实用(我还没试过)