Это руководство объясняет развертывание безопасного (HTTP-over-TLS) прокси-сервера на любом основном дистрибутиве Linux с помощью dumbproxy. Это руководство предполагает, что утилита curl присутствует на сервере и у вас есть root shell. Убедитесь в отсутствии ошибок на каждом шаге, прежде чем переходить к следующему.
HTTPS-прокси здесь — это HTTP-прокси, работающий через TLS-защищенные соединения, а не просто «незашифрованный» HTTP-прокси, который может пересылать и HTTPS-соединения. То есть такой HTTPS-прокси вводит дополнительный TLS-уровень между прокси-клиентом и прокси-сервером, обеспечивая конфиденциальность соединения с прокси. Такие прокси подходят для непосредственного использования в браузере и других программах. Так называемые «VPN-расширения» для браузеров фактически используют такие TLS-защищенные прокси.
Зачем и для чего?
- Почему стоит выбрать HTTPS прокси?
- Почему стоит использовать dumbproxy?
- Шаг 1. Прикрепить доменное имя
- Шаг 2. Установите dumbproxy
- Шаг 3. Настройте dumbproxy
- Шаг 4. Запустите dumbproxy
- Настройка клиентов
- Маршрутизация всех браузеров в Windows через HTTPS-прокси
- Использование в Firefox
- Вариант 1. Встроить файл PAC в настройки.
- Вариант 2. Расширение браузера.
- Использование в Chrome
- Вариант 1. Вариант CLI.
- Вариант 2. Расширение браузера.
- Использование с другими приложениями
- Использование с Android
Почему стоит выбрать HTTPS прокси?
- Хорошо подходит для доступа к заблокированному контенту без перенаправления всего системного трафика. Может использоваться выборочно для выбранных приложений, сайтов, доменов и т.д.
- Стандартный протокол, который выглядит как HTTPS, потому что он и есть HTTPS. Хорошо подходит для обхода брандмауэров и других видов стен.
- Другие решения вроде shadowsocks довольно часто оказываются скрытыми внутри TLS-соединений (например, с помощью плагинов simple-tls или v2ray-plugin). В таком случае нет особого смысла использовать shadowsocks для скрытия соединений — проще использовать обычный HTTP-прокси внутри TLS.
- Поддерживается основными браузерами без дополнительного программного обеспечения. Другие программы, поддерживающие обычные HTTP-прокси, могут быть подключены с помощью адаптера plaintext-to-TLS, как этот.
Почему стоит использовать dumbproxy?
Это довольно простой прокси-сервер, который разработан для сегодняшних реалий. Он работает на множестве различных платформ и может быть развернут с помощью всего одного бинарного файла.
С другой стороны, dumbproxy имеет ряд преимуществ:
- Может скрывать 407 HTTP-ответов, чтобы спрятать прокси от обнаружения активными зондами (по умолчанию отключен).
- Легкие потоки позволяют ему обслуживать достаточно большое количество соединений одновременно с конфигурацией по умолчанию, что является преимуществом по сравнению с 3proxy и tinyproxy. В сочетании со скромным использованием памяти на соединение, это позволяет dumbproxy предоставлять хороший сервис даже на виртуальных машинах с низкими характеристиками.
- Простое управление доступом: файл базы данных пользователей и паролей автоматически перезагружается при обнаружении изменений.
- Поддержка HTTP/2.
- Поддерживает аутентификацию с помощью TLS сертификатов (вероятно, практичнее будет использовать его с steady-tun на стороне клиента).
- Сервер позаботится о сертификатах TLS, выдавая их по протоколу ACME (например, используя Let’s Encrypt или BuyPass).
Шаг 1. Прикрепить доменное имя
Домен необходим для бесперебойной работы TLS. Вы можете либо получить (купить) какой-то домен и прикрепить его к IP-адресу вашего VPS, либо воспользоваться бесплатным доменным сервисом. В последнем случае родительский домен вашего домена должен быть указан в публичном списке суффиксов. В противном случае могут возникнуть проблемы с ограничениями скорости Let’s Encrypt для верхнего домена этого сервиса. В данном руководстве мы используем сервис бесплатных доменов freemyip.com, который предоставляет пользователю бесплатный домен без какой-либо регистрации.
- Посетите страницу https://freemyip.com/.
- Выберите красивое доменное имя и заявите его.
- Сохраните URL, который вы получите обратно.
- Выполните следующую команду на вашем сервере:
curl 'URL'
, гдеURL
— это тот URL, который вы получили от freemyip. Обратите внимание на одинарные кавычки вокруг URL!
Вы можете проверить, был ли этот шаг успешным: пропингуйте доменное имя, оно должно разрешиться в IP-адрес вашего VPS. Если этого не происходит, подождите пару минут и повторите попытку.
Шаг 2. Установите dumbproxy
Предполагается, что архитектура процессора amd64
, для других случаев получите бинарник здесь. Выполните команду:
curl -Lo /usr/local/bin/dumbproxy 'https://github.com/Snawoot/dumbproxy/releases/download/v1.6.1/dumbproxy.linux-amd64' && chmod +x /usr/local/bin/dumbproxy
Проверьте, успешно ли прошла установка. Команда /usr/local/bin/dumbproxy -version
должна вывести v1.6.1
.
Шаг 3. Настройте dumbproxy
Создайте файл паролей. Выполните следующую команду, заменив USERNAME
и PASSWORD
на фактические желаемые значения:
dumbproxy -passwd /etc/dumbproxy.htpasswd USERNAME PASSWORD
Настройте dumbproxy. Создайте файл /etc/default/dumbproxy
со следующим содержимым:
OPTIONS=-auth basicfile://?path=/etc/dumbproxy.htpasswd -autocert -bind-address :443
Поместите следующее содержимое в информационный файл /etc/systemd/system/dumbproxy.service
:
[Unit]
Description=Dumb Proxy
Documentation=https://github.com/Snawoot/dumbproxy/
After=network.target network-online.target
Requires=network-online.target
[Service]
EnvironmentFile=/etc/default/dumbproxy
User=root
Group=root
ExecStart=/usr/local/bin/dumbproxy $OPTIONS
TimeoutStopSec=5s
PrivateTmp=true
ProtectSystem=full
LimitNOFILE=20000
[Install]
WantedBy=default.target
Наконец, примените конфигурацию systemd:
systemctl daemon-reload
Шаг 4. Запустите dumbproxy
Включите автозапуск:
systemctl enable dumbproxy
Запустить службу:
systemctl start dumbproxy
С помощью этой команды можно проверить работоспособность прокси:
curl -x https://USERNAME:PASSWORD@DOMAIN http://ifconfig.co
Должен быть выведен IP-адрес сервера.
Готово!
Настройка клиентов
Настроить программу, поддерживающую прокси, для использования dumbproxy в режиме обычного HTTP довольно просто. Однако использование HTTP прокси через TLS соединение с браузерами немного сложнее.
Маршрутизация всех браузеров в Windows через HTTPS-прокси
Откройте настройки прокси в сетевых настройках системы:
Включите опцию setup script и задайте адрес скрипта:
data:,function FindProxyForURL(u, h){return "HTTPS example.com:443";}
где вместо example.com:443
вы должны использовать фактический адрес вашего HTTPS прокси.
Примечание: этот метод не будет работать с MS Edge Legacy.
Использование в Firefox
Вариант 1. Встроить файл PAC в настройки.
Откройте настройки прокси Firefox, переключите режим прокси на «Автоматическая настройка прокси URL». Укажите URL:
data:,function FindProxyForURL(u, h){return "HTTPS example.com:443";}
Вариант 2. Расширение браузера.
Используйте любое расширение браузера для переключения прокси, которое поддерживает HTTPS-прокси, как это.
Использование в Chrome
Вариант 1. Вариант CLI.
Укажите прокси через командную строку:
chromium-browser --proxy-server='https://example.com:443'
где вместо example.com
следует указать доменное имя вашего прокси.
Вариант 2. Расширение браузера.
Используйте любое расширение браузера для переключения прокси, которое поддерживает HTTPS прокси, как это.
Использование с другими приложениями
Можно использовать удаленный HTTPS-прокси как локальный простой HTTP-прокси с помощью внешнего приложения, которое осуществляет удаленную связь через TLS и открывает локальный простой сокет. steady-tun кажется наиболее подходящим для этого, потому что он поддерживает объединение соединений для скрытия задержки соединения.
Использование с Android
- Установите Adguard на свой Android: Руководство.
- Следуйте этому руководству, пропуская настройку сервера. Используйте тип прокси HTTPS, если вы установили сервер с поддержкой TLS, или используйте тип HTTP.