强制 ubuntu 通过代理访问互联网

强制 ubuntu 通过代理访问互联网

我已经设置了一个 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-getaptitude等在与 正常使用时不会遵循环境变量。因此,请分别配置它们;在 中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 来说可能不实用(我还没试过)

相关内容