Русский
DeutschEnglishEspañolFrançaisРусский

Проброс портов: инструкция по настройке WireGuard

Проброс портов

Все конфигурации WireGuard, созданные в генераторе конфигураций, поддерживают проброс портов. Использовать его можно двумя способами:

  • Вручную: на странице WireGuard откройте меню ⋮ рядом с конфигурацией и выберите Проброс порта. Мы назначим публичный порт, который будет перенаправлять трафик на выбранный вами порт на устройстве.
  • Автоматически (NAT-PMP): такие приложения, как gluetun и qBittorrent, сами запрашивают порт во время подключения. На сайте ничего настраивать не нужно.

Как работает автоматический проброс портов

  • Публичный порт (от 30000 до 65000) назначаем мы. Запросить конкретный публичный порт нельзя.
  • Каждое сопоставление перенаправляет TCP и UDP на одном и том же публичном порту.
  • Приложение периодически продлевает сопоставление. Если продление прекращается (например, вы отключились), проброс автоматически удаляется примерно через час.
  • Пока приложение продлевает сопоставление, назначенный порт обычно не меняется, но он может измениться после перезапуска контейнера или переподключения.
  • Автоматические пробросы отображаются на странице WireGuard с меткой auto и учитываются в лимите из 10 пробросов портов для вашего аккаунта.

gluetun

  • 1. Создайте конфигурацию на странице WireGuard и скачайте файл .conf.
  • 2. Узнайте IP-адрес сервера: возьмите имя хоста из строки Endpoint в файле .conf (например, ca1-1.btguard.com) и выполните для него разрешение имени:
    nslookup ca1-1.btguard.com
    gluetun требует IP-адрес в VPN_ENDPOINT_IP и не принимает имена хостов.
  • 3. Используйте этот сервис docker-compose, подставив значения из файла .conf:
services:
  gluetun:
    image: qmcgaw/gluetun:latest
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    environment:
      - VPN_SERVICE_PROVIDER=custom
      - VPN_TYPE=wireguard
      - VPN_PORT_FORWARDING=on
      - VPN_PORT_FORWARDING_PROVIDER=protonvpn
      # values from your BTGuard .conf file:
      - WIREGUARD_PRIVATE_KEY=    # PrivateKey under [Interface]
      - WIREGUARD_ADDRESSES=      # Address under [Interface]
      - VPN_DNS_ADDRESS=          # DNS under [Interface]
      - WIREGUARD_PUBLIC_KEY=     # PublicKey under [Peer]
      - VPN_ENDPOINT_IP=          # IP of the Endpoint host (step 2)
      - VPN_ENDPOINT_PORT=444     # number after the : in Endpoint
  • 4. Почему «protonvpn»? В gluetun код проброса портов через NAT-PMP назван в честь ProtonVPN; BTGuard использует тот же стандартный протокол, поэтому этот параметр работает без изменений.
  • 5. Запустите контейнер. Назначенный порт выводится в журнале gluetun, а также записывается в файл /tmp/gluetun/forwarded_port внутри контейнера. Настройте приложение за gluetun на прослушивание этого порта или используйте описанную ниже связку gluetun + qBittorrent, чтобы передавать порт автоматически.

gluetun + qBittorrent (рекомендуется)

qBittorrent сам не читает файл порта gluetun. Используйте up-команду gluetun (VPN_PORT_FORWARDING_UP_COMMAND), чтобы передавать назначенный порт в qBittorrent каждый раз, когда NAT-PMP создаёт или продлевает сопоставление, в том числе после перезапуска, когда порт может измениться.

  • 1. Запустите qBittorrent в сетевом пространстве имён gluetun (network_mode: service:gluetun).
  • 2. В qBittorrent в разделе Настройки → Веб-интерфейс включите Пропускать аутентификацию клиентов с localhost, чтобы gluetun мог обращаться к API без учётных данных.
  • 3. Добавьте в gluetun приведённые ниже up- и down-команды. Измените 8080, если веб-интерфейс qBittorrent использует другой порт.
services:
  gluetun:
    image: qmcgaw/gluetun:latest
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    ports:
      - 8080:8080/tcp   # qBittorrent Web UI (optional, for your browser)
    environment:
      - VPN_SERVICE_PROVIDER=custom
      - VPN_TYPE=wireguard
      - VPN_PORT_FORWARDING=on
      - VPN_PORT_FORWARDING_PROVIDER=protonvpn
      - VPN_PORT_FORWARDING_UP_COMMAND=/bin/sh -c 'wget -O- -nv --retry-connrefused --post-data "json={\"listen_port\":{{PORT}},\"current_network_interface\":\"{{VPN_INTERFACE}}\",\"random_port\":false,\"upnp\":false}" http://127.0.0.1:8080/api/v2/app/setPreferences'
      - VPN_PORT_FORWARDING_DOWN_COMMAND=/bin/sh -c 'wget -O- -nv --retry-connrefused --post-data "json={\"listen_port\":0,\"current_network_interface\":\"lo\"}" http://127.0.0.1:8080/api/v2/app/setPreferences'
      # values from your BTGuard .conf file:
      - WIREGUARD_PRIVATE_KEY=
      - WIREGUARD_ADDRESSES=
      - VPN_DNS_ADDRESS=
      - WIREGUARD_PUBLIC_KEY=
      - VPN_ENDPOINT_IP=
      - VPN_ENDPOINT_PORT=444

  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    network_mode: service:gluetun
    depends_on:
      - gluetun
    environment:
      - PUID=1000
      - PGID=1000
      - WEBUI_PORT=8080
    volumes:
      - ./qbittorrent/config:/config
      - ./downloads:/downloads
  • 4. Up-команда выполняется каждый раз, когда gluetun получает проброшенный порт. Она задаёт {{PORT}} в качестве порта прослушивания qBittorrent, привязывает его к VPN-интерфейсу и отключает случайный порт и UPnP, чтобы qBittorrent не переопределял назначенный порт.
  • 5. Down-команда сбрасывает порт прослушивания, когда проброс прекращается (это помогает qBittorrent корректно восстановиться после отключения).
  • 6. Найдите назначенный порт в журнале gluetun и убедитесь, что qBittorrent показывает тот же порт в разделе Настройки → Соединение. Проброс также отображается на странице WireGuard с меткой auto.

qBittorrent (запущенный непосредственно на устройстве)

Если WireGuard работает на вашем хосте без gluetun, qBittorrent может запросить порт сам:

  • 1. Подключитесь с помощью конфигурации BTGuard WireGuard.
  • 2. В разделе Настройки → Дополнительно выберите в параметре Сетевой интерфейс ваш интерфейс WireGuard, чтобы весь трафик шёл через VPN.
  • 3. В разделе Настройки → Соединение включите Использовать UPnP / NAT-PMP для проброса портов от моего роутера. qBittorrent запросит порт автоматически; назначенный порт отобразится в его журнале и на странице WireGuard.

← Назад к инструкциям по VPN