当前位置: 首页>>技术教程>>正文


apt.conf 中 SOCKS 代理的语法

,

问题描述

我想将 SOCKS 代理设置添加到 /etc/apt/apt.conf。它的语法是什么?它与 http 和 ftp 语法相同吗?

谢谢。

最佳方案

Acquire::http::proxy "socks5h://server:port";

这对我适用于 Ubuntu 18.04。\n正如手册页所述,apt 支持 socks5h,而不是 socks5,这意味着具有 DNS 解析能力的 socks5 代理。

次佳方案

一种可能的解决方案是使用 tsocks,这是一个可以通过 socks 代理重定向网络流量的应用程序。\n安装 tsocks 包,修改 /etc/tsocks.conf 以设置 socks 代理的地址和端口号,然后运行:

$ sudo -s
# tsocks apt-get update
# tsocks apt-get dist-upgrade
# exit
$

或者

$ sudo -s
# . tsocks -on
# apt-get update
# apt-get dist-upgrade
# . tsocks -off # not really necessary, given the exit
# exit
$

您可以考虑多种选择,以简化和自动化其使用。\n不要忘记前导点,Manpage 有更多详细信息。

编辑:一种更简短的使用方法:

$ sudo tsocks apt-get update
$ sudo tsocks apt-get dist-upgrade

第三种方案

使用下一个配置行对我来说有效:

Acquire::socks::proxy "socks5://server:port";

为了保持 apt.conf 清洁并避免在 Linux 升级时出现问题,我创建了一个新文件(/etc/apt/apt.conf.d/12proxy)并将配置文件添加到其中。

第四种方案

我在 Ubuntu Xenial 的 apt.conf 手册中找不到有关 Acquire::socks::proxy 的任何信息。您可以通过运行支持上游 socks 代理的本地 http 代理(例如 Polipo)来解决这个问题。您需要按如下方式配置 Polipo:

proxyAddress = "::1"
proxyPort = 8118
socksParentProxy = "sockshost:socksport"
socksProxyType = socks5

然后在 apt.conf 文件中设置 http 代理:

Acquire::http::proxy "http://127.0.0.1:8118/";
Acquire::https::proxy "https://127.0.0.1:8118/";

第五种方案

或者您也可以在 /etc/apt/apt.conf 中输入如下内容:

Acquire::socks::proxy "socks://user:pass@host:port/";

第六种方案

在 Debian 中,您可以阅读手册页 apt-transport-http(1) 并查找支持的 URI 方案。如前所述,输入

Acquire::http::proxy "socks5h://server:port";

/etc/apt/apt.conf.d/12proxy

您可以在 apt.conf(5) 中阅读有关 APT-config 的更多常规信息,并阅读手册页末尾提到的 /usr/share/doc/apt/examples/configure-index.gz 中的示例。

这可以与 ssh -D <LOCAL PORT> <USER>@<HOST> 结合使用,以创建到不同系统的 SOCKS 代理,以便 apt 可以使用代理,就好像一切都源自 <HOST> 一样。

如果您使用 ssh -D 0.0.0.0:<LOCAL PORT> <USER>@<HOST>ssh -D [::]:<LOCAL PORT> <USER>@<HOST>(用于 IPv6)来允许其他系统在所有接口上使用 SOCKS 代理。这可能存在安全风险或违反(公司)政策。确保您知道自己在做什么。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14583.html,未经允许,请勿转载。