sintaxis para proxy SOCKS en apt.conf

23

Quiero agregar la configuración del proxy SOCKS a /etc/apt/apt.conf. ¿Cuál es la sintaxis para ello? ¿Es lo mismo que la sintaxis http y ftp?

Gracias.

Ubuntuser
fuente

Respuestas:

31

Una posible solución puede ser usar tsocksuna aplicación que pueda redirigir el tráfico de red a través de un proxy de calcetines. Instale el tsockspaquete, modifíquelo /etc/tsocks.confpara establecer la dirección y el número de puerto de su proxy de calcetines, y ejecute:

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

o

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

Puede pensar en varias opciones para simplificar y automatizar su uso.
No olvide el punto inicial , la página de manual tiene más detalles sobre esto.

Editar : una forma más corta de usarlo:

$ sudo tsocks apt-get update
$ sudo tsocks apt-get dist-upgrade
enzotib
fuente
11
Parece que tsocks no está instalado por defecto, así que necesito ejecutarlo sudo tsocks apt-get install tsocks. Jajajajajaja ...
fikr4n
1
Puede usar curl para descargar tsocks, instalarlo y luego usar :)
neutrinus
3
Además: a partir de apt 1.3 ~ rc1 (versión de Debian, no estoy seguro exactamente qué versión de Ubuntu, aunque supongo que no es hasta Zesty), puede usar Acquire::http::Proxy "socks5h://hostname:port/". Vea el registro de cambios en anonscm.debian.org/gitweb/?p=apt/apt.git;a=blob;f=debian/…
derobert
1
Bueno ... eso es gracioso. ¡Para hacer que apt-get trabaje necesita ... apt-get something!
Equidamoid
2
una pequeña corrección a la línea @derobert: Acquire::socks::Proxy "socks5h://hostname:port/";hace el truco. Http no lo hace : pruébelo con Tor y verá una respuesta estándar "Tor no es un proxy http", por lo que httpse reemplaza por socks- ¡y funciona!
Alexey Vesnin
17
Acquire::http::proxy "socks5h://server:port";

Esto funciona para mí en Ubuntu 18.04. Como dice la página del manual, apt5 admite socks5h, no socks5, lo que significa proxy socks5 con capacidad de resolución de DNS.

苏永刚
fuente
1
Esto es correcto y de hecho parece funcionar en Ubuntu 18.04. Aunque es posible que también desee incluir Acquire :: https :: proxy y Acquire :: ftp :: proxy (con el mismo valor).
Hamy
1
agregar una regla de proxy Acquire::https::proxy "socks5h://server:port";a un apt.conf.darchivo (como /etc/apt/apt.conf.d/12proxy) funciona bien. Sugeriría seguir https a menos que sea necesario.
codegenki
También para un servidor proxy que requiere autenticación, esta línea se modifica como Acquire::http::proxy "socks5h://user:pass@server:port";. La regla anterior funciona bien en Ubuntu 18.04. Aquí socks5himpone la resolución de DNS en el servidor proxy.
codegenki
¿Alguien sabe si esto funciona en Ubuntu 16.04?
Becko
no funciona el 14.04
razieh babaee
8

Usar la siguiente línea de configuración me funciona:

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

Para mantenerme apt.conflimpio y evitar problemas en la actualización de Linux, creé un nuevo archivo ( /etc/apt/apt.conf.d/12proxy) y le agregué el archivo de configuración.

Bit-Man
fuente
¿Qué significa el número inicial en el foler?
Kris Roofe
Es solo la orden de ejecución del script
Bit-Man,
Esto está mal. Esto no funciona
dedunumax
¿Qué te falló @dedunumax? Cualquier error? ¿Cualquier pista?
Bit-Man
1
Debe ser Adquirir :: http :: proxy y también calcetines5 h para resolución dns en el lado del proxy
ZAB
4

No pude encontrar nada en Acquire :: socks :: proxy en el manual apt.conf de Ubuntu Xenial. Puede solucionar esto ejecutando un proxy http local que admita el proxy de socks aguas arriba, por ejemplo Polipo. Debe configurar Polipo de la siguiente manera:

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

y luego configure el proxy http en su archivo apt.conf:

Acquire::http::proxy "http://127.0.0.1:8118/";
Acquire::https::proxy "https://127.0.0.1:8118/";
Mos
fuente
3

O puede poner en su /etc/apt/apt.conf algo como esto:

Acquire::socks::proxy "socks://user:pass@host:port/";
mrkbbk
fuente
2
Esto no parece funcionar en Ubuntu 12.04
Shnatsel
Funciona en 13.10.
isaaclw
44
Estoy bastante seguro de que esta es una sintaxis incorrecta, significa "proxy todas las URL que comienzan con socks: // a través de socks: // user: pass @ host: port /". Realmente, debería ser esto:Acquire::http::proxy "socks://user:pass@host:port/";
Hans-Christoph Steiner
@ Hans-ChristophSteiner: Esto establece una conexión con el host y el puerto indicados, pero la conexión no utiliza el protocolo de calcetines. Parece un protocolo proxy HTTP, pero no lo verifiqué con un proxy http real.
Seth Robertson
En este punto, estoy seguro de que Acquire::sockses para configurar el proxy para las URL que comienzan con socks://. Por lo que significa que no necesita un proxy para acceder a Internet, y aptno utiliza ningún sustituto de ftp://, http://o https://.. aptsólo es compatible con servidores proxy HTTP, es decir Acquire::http::proxy "http://localhost:8118.
Hans-Christoph Steiner
0

En Debian, puede leer la página de manual apt-transport-http(1)y buscar esquemas de URI compatibles. Como se respondió antes, poner

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

en

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

Puede leer más sobre APT-config en general apt.conf(5)y leer los ejemplos /usr/share/doc/apt/examples/configure-index.gzmencionados al final de la página de manual.

Esto se puede combinar ssh -D <LOCAL PORT> <USER>@<HOST>para crear un proxy SOCKS en un sistema diferente para que apt pueda usar el proxy como si todo se hubiera originado <HOST>.

Si usa ssh -D 0.0.0.0:<LOCAL PORT> <USER>@<HOST>o ssh -D [::]:<LOCAL PORT> <USER>@<HOST>(para IPv6) para permitir que otros sistemas usen el proxy SOCKS en todas las interfaces. Esto puede ser un riesgo de seguridad o una violación de la política (corporativa). Asegúrate de saber lo que estás haciendo.

AdamKalisz
fuente