синтаксис для SOCKS прокси в apt.conf

23

Я хочу добавить настройки прокси-сервера SOCKS в /etc/apt/apt.conf. Каков синтаксис для этого? Это так же, как синтаксис http и ftp?

Спасибо.

Ubuntuser
источник

Ответы:

31

Возможным решением может быть использование tsocksприложения, которое может перенаправлять сетевой трафик через прокси-сервер socks. Установите 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
$

Можно продумать ряд вариантов, упростить и автоматизировать его использование.
Не забывайте начальную точку, у Manpage есть больше подробностей по этому вопросу.

Изменить : более короткий способ использовать его:

$ sudo tsocks apt-get update
$ sudo tsocks apt-get dist-upgrade
enzotib
источник
11
Кажется, tsocks не установлен по умолчанию, поэтому мне нужно запустить sudo tsocks apt-get install tsocks. Хахахахахаха ...
fikr4n
1
Вы можете использовать curl для загрузки tsocks, установки, а затем использовать :)
neutrinus
3
Также: Начиная с версии apt 1.3 ~ rc1 (версия Debian, точно не знаю, какую именно версию Ubuntu, хотя я предполагаю, что это не до Zesty), вы можете использовать Acquire::http::Proxy "socks5h://hostname:port/". См. Список
derobert
1
Ну ... это смешно. Чтобы получить подходящую работу, вам нужно ... apt-get something!
Эквидамоид
2
небольшая поправка к линии @derobert: Acquire::socks::Proxy "socks5h://hostname:port/";делает свое дело. Http вовсе не - попробуйте с Tor и вы увидите стандартный ответ «Tor не является HTTP - прокси», поэтому httpидет заменен socks- и это работает!
Алексей Веснин
17
Acquire::http::proxy "socks5h://server:port";

Это работает для меня на Ubuntu 18.04. Как говорится на странице руководства, apt поддерживает socks5h, а не socks5, что означает прокси socks5 с возможностью разрешения DNS.

苏永刚
источник
1
Это правильно и, похоже, действительно работает на Ubuntu 18.04. Хотя может потребоваться включить Acquire :: https :: proxy и Acquire :: ftp :: proxy (с одинаковым значением).
Хэми
1
Добавление правила прокси Acquire::https::proxy "socks5h://server:port";в apt.conf.dфайл (вроде /etc/apt/apt.conf.d/12proxy) работает просто отлично. Я бы предложил придерживаться https, если не требуется иное.
кодегенки
Также для прокси-сервера, требующего аутентификации, эта строка изменяется как Acquire::http::proxy "socks5h://user:pass@server:port";. Вышеуказанное правило отлично работает в Ubuntu 18.04. Здесь socks5hприменяется разрешение DNS на прокси-сервере.
кодегенки
Кто-нибудь знает, работает ли это в Ubuntu 16.04?
Бекко
не работает 14.04
razieh babaee
8

Использование следующей строки конфигурации работает для меня:

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

Чтобы сохранить apt.confчистоту и избежать проблем при обновлении Linux, я создал новый файл ( /etc/apt/apt.conf.d/12proxy) и добавил к нему файл конфигурации.

Bit-Man
источник
что означает начальное число в фолере
Крис Руф
Это просто порядок выполнения скрипта
Bit-Man
Это не правильно. Это не работает
dedunumax
Что тебе не удалось @dedunumax? Любая ошибка? Любая подсказка?
Bit-Man
1
Это должно быть Acquire :: http :: proxy, а также socks5 h для разрешения DNS на стороне прокси
ZAB
4

Я не смог найти ничего о Acquire :: socks :: proxy в руководстве по apt.conf для Ubuntu Xenial. Это можно исправить, запустив локальный http-прокси-сервер, который поддерживает прокси-серверы верхнего уровня, например Polipo. Вам необходимо настроить Polipo следующим образом:

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

а затем установите http прокси в вашем файле apt.conf:

Acquire::http::proxy "http://127.0.0.1:8118/";
Acquire::https::proxy "https://127.0.0.1:8118/";
Mos
источник
3

Или вы можете вставить в ваш /etc/apt/apt.conf что-то вроде этого:

Acquire::socks::proxy "socks://user:pass@host:port/";
mrkbbk
источник
2
Похоже, что это не работает в Ubuntu 12.04
Shnatsel
Работает в 13.10.
Исаакль
4
Я почти уверен, что это неправильный синтаксис, это означает, что «прокси все URL, которые начинаются с socks: // через socks: // user: pass @ host: port /». Действительно, так и должно быть:Acquire::http::proxy "socks://user:pass@host:port/";
Ганс-Кристоф Штейнер
@ Hans-ChristophSteiner: это соединение с указанным хостом и портом, но соединение не использует протокол socks. Это похоже на протокол прокси http, но я не проверял с реальным прокси http.
Сет Робертсон
На данный момент, я уверен, что Acquire::socksэто для настройки прокси для URL, которые начинаются с socks://. Так что средства вам не нужен прокси - сервер для доступа в Интернет, а также aptне использует прокси - серверы для ftp://, http://или https://.. aptподдерживает только HTTP прокси, то есть Acquire::http::proxy "http://localhost:8118.
Ганс-Кристоф Штайнер,
0

В Debian вы можете прочитать man-страницу apt-transport-http(1)и найти поддерживаемые схемы URI. Как ответили раньше, поставь

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

в

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

Вы можете прочитать больше о APT-config в целом apt.conf(5)и прочитать примеры, /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 на всех интерфейсах. Это может быть угрозой безопасности или нарушением (корпоративной) политики. Убедитесь, что вы знаете, что делаете.

AdamKalisz
источник