Logo Neurocoda

Tailscale: экспорт порта SOCKS5 для прокси-программ

Neurocoda
Neurocoda

💡Я давно использую такие программы, как Clash или Quantumult X. После настройки внутренних служб через Tailscale каждый раз при необходимости доступа к внутренним службам приходится переключать программы (клиент Tailscale и вышеупомянутое прокси-программное обеспечение не могут работать одновременно), что очень неудобно. Поэтому было решено добавить узел внутреннего прокси в прокси-программное обеспечение и настроить правила разделения трафика, чтобы больше не нужно было часто переключать программы.

Развертывание контейнера Tailscale

Следуя **Userspace networking mode (for containers)** , разверните контейнер tailscale и откройте порт socks5.

Terminal window
docker run -d \\
--name tailscale-socks5 \\
--restart=unless-stopped \\
--cap-add=NET_ADMIN \\
-e TS_USERSPACE=true \\
-e TS_SOCKS5_SERVER=0.0.0.0:1055 \\
-p 127.0.0.1:1055:1055 \\
-v /var/www/tailscale-socks5:/var/lib/tailscale \\
tailscale/tailscale:latest tailscaled --tun=userspace-networking --socks5-server=0.0.0.0:1055

Проверьте, прослушивается ли порт :1055:

Terminal window
docker exec -it tailscale-socks5 ss -tuln

Запустите tailscale и выполните вход:

Terminal window
docker exec -it tailscale-socks5 tailscale up --accept-dns=false --accept-routes

После успешного входа проверьте, работает ли порт socks5, открытый в контейнере tilscale:

Terminal window
curl --socks5 127.0.0.1:1055 <http://tailscale> 内网服务

Однако этот socks5 не имеет аутентификации (имя пользователя/пароль). Чтобы сделать его немного более безопасным для публичного доступа, можно развернуть прокси SOCKS5 с аутентификацией по имени пользователя/паролю, который будет перенаправлять исходящий трафик на неаутентифицированный сервис SOCKS5 от tailscale.

Развертывание контейнера kechangdev/s2s

Адрес проекта: https://github.com/kechangdev/s2s

Следующий пример запускает этот контейнер, который прослушивает порт 45675 локальной машины, устанавливает имя пользователя/пароль в username/password и перенаправляет трафик на неаутентифицированный прокси SOCKS5 127.0.0.1:1055.

Terminal window
docker run -d --network host \\
--name tailscale-s2s \\
-e SOCKS5_USERNAME="username" \\
-e SOCKS5_PASSWORD="password" \\
-e TS_SOCKS5_HOST="127.0.0.1" \\
-e TS_SOCKS5_PORT="1055" \\
-e INBOUND_PORT="45675" \\
kechangdev/s2s:latest
Имя переменнойЗначение по умолчаниюОписание
SOCKS5_USERNAMEusernameвходящий SOCKS5 имя пользователя для аутентификации
SOCKS5_PASSWORDpasswordвходящий SOCKS5 пароль для аутентификации
TS_SOCKS5_HOST127.0.0.1исходящий SOCKS5 адрес (например, socks5 от Tailscale)
TS_SOCKS5_PORT1055исходящий SOCKS5 порт
INBOUND_PORT45675порт SOCKS5, который этот контейнер предоставляет извне (с аутентификацией по имени пользователя/паролю)

Пояснение:

  • Параметр --network host обычно используется для того, чтобы контейнер использовал общее с хостом сетевое пространство имен, что упрощает подключение к локальному Tailscale SOCKS5. При необходимости можно использовать другие сетевые режимы, если контейнер может получить доступ к TS_SOCKS5_HOST:TS_SOCKS5_PORT.
  • Если вы хотите изменить порт прослушивания, просто измените INBOUND_PORT при запуске и соответствующим образом перенаправьте порты.

Тестирование:

Terminal window
curl -v --socks5 127.0.0.1:45675 -U username:password <http://tailscale> 内网服务

Если вы получите правильное содержимое целевой страницы, значит, вся прокси-цепочка работает нормально.

Настройка программного обеспечения

На примере Quantumult X:

  • Настройка узла Socks5:
Terminal window
socks5=IP:Port, username=XXX, password=XXX, fast-open=false, udp-relay=false, server_check_url=http://tailscale 内网服务, tag=tailscale
  • Настройка группы стратегий:
Terminal window
static=Tailscale, tailscale
  • Настройка правил разделения трафика:
Terminal window
; Tailscale
ip-cidr, 100.64.0.0/10, Tailscale

Вот и всё, теперь вы можете без проблем получить доступ к своей внутренней сети Tailscale:

|700

Предупреждение

Настоятельно рекомендуется использовать TLS/SSH туннели или Fail2Ban и другие способы для усиления безопасности. Использование только SOCKS5 + имя пользователя/пароль в публичном доступе по-прежнему несет потенциальные риски (подбор пароля, перехват трафика и т.д.).

Title: Tailscale: экспорт порта SOCKS5 для прокси-программ Author: Neurocoda Created at: 2026-07-03 12:50:47 Link: https://neurocoda.com/ru/posts/tailscale-expose-socks5-port-for-proxy-software-ru/ License: This work is licensed under CC BY-ND 4.0.

Comments