Настройка 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 Где взять данные прокси
- Войдите в кабинет GeekProxy
- Откройте план. У планов с оплатой за IP (датацентр, ISP) адрес, порт, логин и пароль на карточке, а Export отдаёт весь список текстом
- У резидентских планов нажмите Options. Панель Proxy Configuration соберёт строку логина со страной и параметрами сессии и покажет готовую строку curl. Хост, порт и логин копируйте из Proxy List


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.

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.


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: он запускает внешнюю команду, которая выбирает прокси, для машин, кочующих между сетями.

Пароль с @ или : ломает 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 в кабинете и оставьте поля логина пустыми.
Прокси для Linux
Датацентр и ISP с HTTP и SOCKS5 на одних данных доступа, резидентские сессии через шлюз, выдача за секунды.
Заказать