Как включить прямое соединение с выходным узлом Tailscale с помощью Gluetun

Вопрос или проблема

Это настройка Docker, которая запускает узел Tailscale, направляет трафик через Gluetun с подключенным NordVPN и рекламирует узел Tailscale как выходной узел.

services:
  gluetun:
    image: qmcgaw/gluetun
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    environment:
      - VPN_SERVICE_PROVIDER=nordvpn
      - VPN_TYPE=openvpn
      - OPENVPN_USER=${NORDVPN_OPENVPN_USER}
      - OPENVPN_PASSWORD=${NORDVPN_OPENVPN_PASSWORD}
      - SERVER_COUNTRIES=${NORDVPN_SERVER_COUNTRIES}
    ports:
      - 41641:41641 # порт tailscale
      - 3478:3478 # порт stun
  tailscale:
    image: tailscale/tailscale:latest
    network_mode: "service:gluetun"
    restart: unless-stopped
    cap_add:
      - net_admin
      - sys_module
    volumes:
      - ${PWD}/tailscale:/var/lib/tailscale
      - /dev/net/tun:/dev/net/tun
    environment:
      - TS_AUTHKEY=${TAILSCALE_AUTHKEY}
      - TS_EXTRA_ARGS=--advertise-exit-node
      - TS_STATE_DIR=/var/lib/tailscale
      - TS_USERSPACE=true
      - TS_HOSTNAME=${TAILSCALE_HOSTNAME}
    depends_on:
      gluetun:
        condition: service_healthy

Проблема в том, что, похоже, происходит только соединение через DERP. Возможно ли установить прямое соединение с выходным узлом, учитывая, что NordVPN не позволяет проброс портов?

.

Ответ или решение

Как включить прямое соединение с выходным узлом Tailscale через Gluetun

Введение

Для пользователей, использующих Tailscale в сочетании с NordVPN через Gluetun, может возникнуть проблема с установлением прямого соединения с выходным узлом (exit node). Вместо этого может происходить соединение через DERP-серверы, что может быть менее эффективным и вызывать задержки. Поскольку NordVPN не поддерживает переадресацию портов, давайте рассмотрим возможности решения данной задачи.

Структура Docker Compose

Ваш docker-compose.yml файл уже задает необходимую конфигурацию для запуска Gluetun и Tailscale. Вот основные моменты:

  1. Проверка конфигурации:

    • Убедитесь, что ваша конфигурация docker-compose.yml выглядит следующим образом:
    services:
      gluetun:
        image: qmcgaw/gluetun
        restart: unless-stopped
        cap_add:
          - NET_ADMIN
        devices:
          - /dev/net/tun:/dev/net/tun
        environment:
          - VPN_SERVICE_PROVIDER=nordvpn
          - VPN_TYPE=openvpn
          - OPENVPN_USER=${NORDVPN_OPENVPN_USER}
          - OPENVPN_PASSWORD=${NORDVPN_OPENVPN_PASSWORD}
          - SERVER_COUNTRIES=${NORDVPN_SERVER_COUNTRIES}
        ports:
          - 41641:41641 # порт Tailscale
          - 3478:3478 # STUN порт
      tailscale:
        image: tailscale/tailscale:latest
        network_mode: "service:gluetun"
        restart: unless-stopped
        cap_add:
          - net_admin
          - sys_module
        volumes:
          - ${PWD}/tailscale:/var/lib/tailscale
          - /dev/net/tun:/dev/net/tun
        environment:
          - TS_AUTHKEY=${TAILSCALE_AUTHKEY}
          - TS_EXTRA_ARGS=--advertise-exit-node
          - TS_STATE_DIR=/var/lib/tailscale
          - TS_USERSPACE=true
          - TS_HOSTNAME=${TAILSCALE_HOSTNAME}
        depends_on:
          gluetun:
            condition: service_healthy

Проблема с прямым соединением

Как упомянуто в вашем вопросе, NordVPN не поддерживает переадресацию портов. Это значит, что запуск Tailscale в режиме выходного узла может быть проблематичным, так как Tailscale полагается на возможность подключения к определенным портам для обхода NAT и обеспечения прямых соединений.

Решение

  1. Используйте NAT Traversal:

    • Tailscale использует NAT Traversal и STUN для установления прямых соединений, если это возможно. Таким образом, стоит убедиться, что в Gluetun открыт STUN-порт (3478 в вашем случае), как это указано в вашей конфигурации.
  2. Тестирование соединения:

    • После проявления активной конфигурации, проверьте соединение с выходным узлом. Вы можете использовать команду tailscale status для проверки доступности узлов.
  3. Обновление Gluetun и Tailscale:

    • Убедитесь, что вы используете последние версии образов Docker для gluetun и tailscale. Обновления могут содержать исправления и улучшения, которые могут помочь в установлении прямых соединений.
  4. Настройка DNS:

    • Проверьте вашу конфигурацию DNS. Стандартный DNS в Gluetun может не обеспечить необходимую функциональность для Tailscale. Рассмотрите возможность использования общедоступных DNS-серверов, таких как Google (8.8.8.8, 8.8.4.4).
  5. Логи и трассировка:

    • Просмотрите логи Tailscale и Gluetun для выявления возможных ошибок соединения. Логи могут предоставить valuable insights into the nature of the connection issue.

Заключение

Настройка Gluetun с NordVPN и выходным узлом Tailscale может быть сложной задачей, особенно из-за отсутствия поддержки переадресации портов у NordVPN. Однако, следуя вышеуказанным рекомендациям и обеспечивая правильную конфигурацию сети и обновления, вы можете значительно повысить шансы на успешное прямое соединение с выходным узлом Tailscale.

Оцените материал
Добавить комментарий

Капча загружается...