Настройка GeekProxy в Linux

В Linux нет одного рубильника для прокси. Панель GNOME Settings обслуживает настольные программы, переменные окружения кормят curl и большинство консольных утилит, а у apt свой конфиг. Типичные задачи: парсинг и проверка выдачи из нужной страны, тесты API с другого региона, QA. Разбираем все три механизма и говорим, кто из программ какой читает.

Понадобится: активный план GeekProxy и данные прокси из кабинета. Терминальная часть на минуту, панель ещё на две.

Купить прокси

1 Перед началом

Три механизма, три аудитории. Путаница между ними и есть главная причина, почему прокси «не работает» на Linux, так что карта до любых кликов:

  • Панель GNOME Network proxy пишет ключи GSettings в org.gnome.system.proxy. Их читают программы GNOME и GTK, включая GNOME Web
  • Переменные окружения вроде https_proxy читает curl и много других консольных утилит. Панель их не экспортирует, а они не меняют панель
  • apt читает http_proxy тоже, а сверху имеет собственную опцию Acquire::http::Proxy

Авторизация тоже различается. curl и apt принимают логин и пароль прямо в URL прокси, SOCKS5 в том числе. В схеме GNOME ключи для логина есть только у HTTP-прокси, у SOCKS их нет вовсе. Для настольных программ спокойнее режим белого списка IP в плане.

Символы в пароле важны для URL. @ внутри пароля превращается в %40, двоеточие в %3a, потому что curl декодирует часть с логином и паролем как URL.

Что понадобится

  • Активный план GeekProxy (датацентр, ISP или резидентские)
  • Данные прокси из кабинета: хост, порт, логин, пароль
  • Рабочий стол GNOME (Ubuntu, Fedora, Debian) для раздела 3, любая оболочка для остального. curl 7.86 или новее, если хотите CIDR-диапазоны в NO_PROXY
Ваши данные доступа
  • ПолеОткуда взять
  • ПротоколHTTP / SOCKS5
  • ХостIP или имя шлюза из кабинета
  • Портиз кабинета
  • Логиниз кабинета
  • Парольиз кабинета

2 Где взять данные прокси

  1. Войдите в кабинет GeekProxy
  2. Откройте план. У планов с оплатой за IP (датацентр, ISP) адрес, порт, логин и пароль на карточке, а Export отдаёт весь список текстом
  3. У резидентских планов нажмите Options. Панель Proxy Configuration соберёт строку логина со страной и параметрами сессии и покажет готовую строку curl. Хост, порт и логин копируйте из Proxy List
GNOME, Network Proxy, режим Manual
Кабинет GeekProxy, страница Subscriptions: планы ISP со ссылкой Export, планы Residential Flex и Turbo с кнопками Options и Add GB
Кабинет GeekProxy, Residential Flex
Подписка Residential Flex, панель Proxy Configuration: континент, ASN, ZIP, регион, ОС устройства, тип прокси и TTL сессии, ниже готовая строка curl

3 Панель GNOME Settings

Откройте обзор Activities и начните печатать Network. Нажмите Network, чтобы открыть панель, затем выберите Network proxy в списке слева. Справка GNOME даёт три метода. None это прямое подключение. Manual это где вы задаёте адрес и порт для каждого проксируемого протокола. Automatic берёт URL, который указывает на файл конфигурации.

Выбирайте Manual. Протоколов четыре: HTTP, HTTPS, FTP и SOCKS. Для HTTP-порта GeekProxy заполните строки HTTP и HTTPS одним и тем же хостом и портом. По схеме прокси протокола используется, только когда задан хост и порт не ноль, так что пустая строка просто выключена.

За панелью стоят ключи GSettings. org.gnome.system.proxy mode принимает none, manual или auto. ignore-hosts по умолчанию localhost, 127.0.0.0/8 и ::1. use-same-proxy, включённый по умолчанию, означает «использовать HTTP-прокси для всех протоколов». Только у HTTP-прокси есть use-authentication, authentication-user и authentication-password. Покажет ли ваша версия панели эти поля логина на экране, обещать не берёмся, и если их нет, переведите план в режим белого списка IP.

GNOME Settings, Network proxy
Окно Network Proxy в GNOME в режиме Manual: заполнены адрес и порт HTTP прокси, ниже список Ignore Hosts.

4 Переменные окружения и curl

Переменные описаны в мануале curl, и правила там строже, чем люди ждут. http_proxy существует только в нижнем регистре. Остальные, HTTPS_PROXY, ALL_PROXY, NO_PROXY и протокольные вроде FTP_PROXY, можно писать в любом регистре, и при двух вариантах побеждает нижний. Формат значения [protocol://]<host>[:port], а выставленная переменная действует так же, как ключ --proxy.

# HTTP-прокси с логином и паролем, для http и https целей
export http_proxy="http://LOGIN:PASSWORD@IP:PORT"
export https_proxy="http://LOGIN:PASSWORD@IP:PORT"

# или SOCKS5 как запасной вариант для всех протоколов, DNS резолвит прокси
export all_proxy="socks5h://LOGIN:PASSWORD@IP:PORT"

# хосты напрямую; "*" в одиночку значит все, CIDR работает с curl 7.86.0
export no_proxy="localhost,127.0.0.1,10.0.0.0/8"

curl https://ipinfo.io/json

Такие export живут только в текущей оболочке. Где хранить их постоянно, зависит от дистрибутива и оболочки, а этот гайд остаётся в терминале.

Для разового запроса переменные не нужны, прокси передаётся curl напрямую:

# HTTP-прокси (без схемы значит http://)
curl -x http://LOGIN:PASSWORD@IP:PORT https://ipinfo.io/json

# SOCKS5, имя хоста резолвится на стороне прокси
curl -x socks5h://LOGIN:PASSWORD@IP:PORT https://ipinfo.io/json

# то же самое, логин и пароль отдельным ключом
curl --proxy-user LOGIN:PASSWORD --socks5-hostname IP:PORT https://ipinfo.io/json

# пустить часть хостов мимо прокси (маска только *, CIDR можно)
curl -x http://LOGIN:PASSWORD@IP:PORT --noproxy "localhost,10.0.0.0/8" https://ipinfo.io/json

Схемы, которые curl понимает в -x: пусто или http:// для HTTP-прокси, https:// для TLS до самого прокси, дальше socks4://, socks4a://, socks5:// и socks5h://. Без порта curl подставит 1080. Разница между двумя последними в DNS. socks5:// резолвит имена на вашей машине, socks5h:// отдаёт это прокси. Берите с h.

Терминал, переменные прокси и curl
Терминал с экспортом http_proxy и https_proxy и вызовом curl к ipinfo.io/json
Терминал, curl через SOCKS5
Терминал с curl и строкой прокси socks5h с логином и паролем

5 apt

Мануал apt-transport-http говорит это одной строкой: переменная окружения http_proxy поддерживается для системной настройки, и no_proxy уважается с той же целью. Так что export из раздела 4 уже покрывает sudo apt update в той же оболочке, если sudo пропускает переменные.

Аккуратнее через собственную опцию apt. Создайте файл в /etc/apt/apt.conf.d/ с содержимым:

Acquire::http::Proxy "http://LOGIN:PASSWORD@IP:PORT/";

# одно зеркало напрямую, без прокси
Acquire::http::Proxy::archive.example.org "DIRECT";

Формат URI scheme://[[user][:pass]@]host[:port]/, схемы поддерживаются http, https и socks5h, последняя это SOCKS5 с удалённым резолвом DNS. Особое значение DIRECT означает «без прокси для этого хоста». Не хочется держать пароль в конфиге, apt умеет читать данные доступа из apt_auth.conf. Есть ещё Acquire::http::Proxy-Auto-Detect: он запускает внешнюю команду, которая выбирает прокси, для машин, кочующих между сетями.

Терминал, конфиг прокси для apt
Терминал показывает файл из apt.conf.d с опцией Acquire::http::Proxy и адресом GeekProxy

Пароль с @ или : ломает URI и в опции apt, и в curl. Кодируйте проценты или уносите данные доступа в apt_auth.conf.

6 Проверка работы

Выполните curl https://ipinfo.io/json с экспортированными переменными или с -x. В поле ip должен быть адрес прокси, а не ваш. На ISP и датацентровом плане это адрес из кабинета, на Residential и Turbo любой адрес из пула в выбранной стране. Панель GNOME проверяйте тем же URL в GNOME Web или другой GTK-программе, curl про панель ничего не скажет.

Запустите curl дважды на ротационном логине Turbo и получите два разных адреса. На sticky-логине или во Flex внутри TTL сессии адрес стоит на месте.

7 Какой продукт GeekProxy подходит

Скрипты и консоль это стихия датацентра IPv4 и статического ISP: экспортируйте как https_proxy или как socks5h:// в all_proxy, curl полностью тянет SOCKS5 с логином и паролем. Residential Turbo идёт через имя шлюза с сессионным логином, когда нужен постоянный выход. До Residential Flex достучаться как http://LOGIN:[email protected]:8888 (или usf, asf), и только TCP для curl и apt не проблема. Пользователю панели GNOME проще всего HTTP-порт ISP или датацентра с белым списком IP. UDP-утилиты через переменные окружения не ходят в принципе.

8 Частые проблемы

Панель настроена, curl показывает мой IP

Так и должно быть. Панель пишет GSettings, curl читает переменные окружения. Экспортируйте https_proxy в оболочке или передайте -x.

HTTP_PROXY большими буквами игнорируется

По мануалу curl http_proxy бывает только в нижнем регистре. Остальные переменные принимают оба, и при двух вариантах старше нижний.

curl не подключается, или 407 после смены пароля

Проверьте пароль на @ и :. Кодируйте их как %40 и %3a или используйте --proxy-user, он берёт пару отдельно.

Сайты видят IP прокси, а DNS уходит локально

Вы взяли socks5://. Переключитесь на socks5h:// или --socks5-hostname, чтобы имена резолвил прокси.

apt ходит через прокси, а одно зеркало не должно

Добавьте строку на хост Acquire::http::Proxy::hostname "DIRECT"; под общей. Опция на хост перебивает общую для этого хоста.

Настольные программы просят логин прокси, а вписать некуда

Схема GNOME хранит данные доступа только для HTTP-прокси, у строки SOCKS ключей для логина нет. Переведите план в режим белого списка IP в кабинете и оставьте поля логина пустыми.

Не получается? Напишите нам в Telegram, Discord или в чат на сайте. Обычно отвечаем за несколько минут.

Прокси для Linux

Датацентр и ISP с HTTP и SOCKS5 на одних данных доступа, резидентские сессии через шлюз, выдача за секунды.

Заказать

We use cookies to improve user experience. By clicking "Yes, I agree", you consent to this use of cookies.

Привилегия первых: В честь глобального запуска [мы даем скидку 50%+] на все датацентр тарифы. Эксклюзивное предложение для наших стартовых партнеров.