Для того чтобы WireGuard из Docker-контейнера мог пробросить любые подключения в хост, вам потребуется выполнить следующие шаги:
Шаг 1: Установите WireGuard на хосте.
Перед использованием WireGuard из Docker-контейнера, убедитесь, что он правильно установлен на вашем хосте. Установка WireGuard может отличаться в зависимости от вашей операционной системы. Ниже приведены несколько ссылок, в которых подробно описана установка WireGuard для различных ОС:
- Ubuntu: https://www.wireguard.com/install/
- CentOS: https://www.wireguard.com/install/
- Debian: https://www.wireguard.com/install/
- macOS: https://docs.wireguard.com/installation/macos.html
- Windows: https://docs.wireguard.com/installation/windows.html
Шаг 2: Создайте Docker-контейнер с WireGuard.
После успешной установки WireGuard на хосте, создайте Docker-контейнер, в котором будет запущен WireGuard. Можно воспользоваться официальным образом WireGuard, который доступен на Docker Hub (https://hub.docker.com/r/linuxserver/wireguard).
Выполните следующую команду, чтобы создать и запустить контейнер из образа linuxserver/wireguard:
docker run -d --name wireguard --cap-add=NET_ADMIN --cap-add=SYS_MODULE -e PUID=<UID> -e PGID=<GID> -e TZ=<Timezone> -p <Host_Port>:<Container_Port>/udp -v /path/to/config:/config linuxserver/wireguard
Здесь вы должны заменить <UID>
на идентификатор пользователя, <GID>
на идентификатор группы пользователя, <Timezone>
на ваш часовой пояс, <Host_Port>
на порт хоста, который будет проброшен в контейнер, <Container_Port>
на порт контейнера, на котором будет работать WireGuard, и /path/to/config
на путь к каталогу, где будут храниться конфигурационные файлы WireGuard.
Шаг 3: Сгенерируйте ключи для WireGuard.
Сгенерируйте ключи для WireGuard на хосте с помощью следующих команд:
docker exec -it wireguard umask 077 docker exec -it wireguard wg genkey > privatekey docker exec -it wireguard wg pubkey < privatekey > publickey
В результате будет сгенерирован файл privatekey
, содержащий приватный ключ WireGuard, и файл publickey
, содержащий соответствующий публичный ключ.
Шаг 4: Настройте WireGuard.
Настройте WireGuard на хосте путем редактирования конфигурационного файла wg0.conf
в каталоге /path/to/config
(указанном в команде создания контейнера). Редактируйте конфигурационный файл, чтобы указать приватный ключ (PrivateKey
) и публичный ключ (PublicKey
), полученные на предыдущем шаге.
Пример конфигурационного файла wg0.conf
:
[Interface] PrivateKey = <Private_Key> Address = 10.0.0.1/24 ListenPort = <Container_Port> [Peer] PublicKey = <Public_Key> AllowedIPs = 10.0.0.2/32
Здесь вы должны заменить <Private_Key>
и <Public_Key>
соответствующими значениями ключей, полученных на предыдущем шаге, и <Container_Port>
на порт контейнера, указанный при создании контейнера.
Шаг 5: Запустите WireGuard в контейнере.
Перезапустите контейнер WireGuard, чтобы применить новую конфигурацию:
docker restart wireguard
WireGuard теперь будет работать внутри контейнера и пробрасывать любые подключения в хост по указанным портам.
На этом всё! Теперь вы настроили WireGuard в Docker-контейнере так, что он пробрасывает любые подключения в хост. Вы можете использовать этот контейнер для настройки VPN-сервера или других сетевых приложений, которые требуют WireGuard.