Развёртывание WireGuard в контейнере на EcoRouter
В данном подразделе дана пошаговая инструкция по развёртыванию и запуску WireGuard VPN на маршрутизаторе EcoRouter с использованием Docker-контейнера с userspace-реализацией WireGuard и обеспечению подключения клиента Windows.

Рисунок — Логическая схема развёртывания WireGuard в контейнере на EcoRouter
Шаг 1. Для включения работы с контейнерами на EcoRouter в конфигурационном режиме включите поддержку контейнеров: enable container.
Настройка портов и интерфейсов
Шаг 2. Настройте физический порт:
port ge1
mtu 9728
service-instance To_WG
encapsulation untaggedШаг 3. Создайте виртуальный порт контейнерной сети:
port virt.0
virtual-network container WG
service-instance test
encapsulation untaggedШаг 4. Создайте интерфейс сети контейнера:
interface WG
ip mtu 1500
connect port virt.0 service-instance test
ip address 10.10.20.11/24Шаг 5. Создайте интерфейс подключения клиента WireGuard:
interface WG_upside
ip mtu 1500
connect port ge1 service-instance To_WG
ip address 1.0.0.1/8Настройка маршрутизации
Шаг 6. Добавьте маршруты:
ip route 10.10.20.0/24 interface WG
ip route 10.200.0.0/24 10.10.20.1510.10.20.15 — фактический IP-адрес контейнера.
Загрузка образа Docker
Шаг 7. Подготовьте образ WireGuard. Он должен быть упакован в архивный файл tar (wg-userspace.tar).
Шаг 8. Скопируйте образ на маршрутизатор командой: copy scp container user@10.10.10.5:/var/tmp/wg-userspace.tar, где 10.10.10.5 — linux-машина с tar-файлом. После загрузки роутер автоматически импортирует образ.
Шаг 9. Проверьте образ командой show docker images. В списке должен появиться образ wg-userspace:latest. Заметьте, что запускаться будет именно контейнер с меткой latest.
Запуск контейнера
Шаг 10. Контейнер должен быть запущен в виртуальной сети WG. После запуска проверьте его состояние командой show docker ps. Ожидаемый вывод:
CONTAINER ID IMAGE STATUS
ef6035418d84 wg-userspace UpПроверка контейнера
Шаг 11. Если контейнер самопроизвольно перезапускается, причина будет указана в журнале. Просмотрите журнал командой show docker log <container-id>.
Шаг 12. Войдите в контейнер командой docker exec -it <container-id> sh.
Проверка WireGuard внутри контейнера
Шаг 13. Проверьте интерфейс командой ip addr show wg0. Ожидаемый вывод:
wg0
10.200.0.1/24Шаг 14. Проверьте статус WireGuard командой wg. Ожидаемый вывод:
interface: wg0
public key: <server-key>
listening port: 51820Шаг 15. Проверьте прослушивание порта командой ss -lnup. Ожидаемый вывод:
0.0.0.0:51820
wireguard-goОпределение IP-адреса контейнера
Шаг 16. Определите реальный IP-адрес контейнера командой ip addr. Ожидаемый вывод:
eth0
inet 10.10.20.15/24Данный адрес используется в маршрутах роутера и как endpoint клиента.
Проверка сетевой связности
Шаг 17. Выполните команду ping 10.10.20.15 на маршрутизаторе.
Шаг 18. Выполните команду ping 10.10.20.11 и ping 10.10.20.15 в Windows.
Если адрес контейнера 10.10.20.15 не пингуется — туннель не будет работать.
Добавление клиента WireGuard
Шаг 19. Добавьте узел (peer) командой в контейнере: wg set wg0 peer /g1BAjwRSwH8v6kpyA4+BDWgBA2OHsaizyql7j5mjEg= allowed-ips 10.200.0.2/32.
Шаг 20. Проверьте публичный ключ дав команду wg в контейнере. В выводе должен присутствовать введённый на прошлом шаге публичный ключ клиента WireGuard: /g1BAjwRSwH8v6kpyA4+BDWgBA2OHsaizyql7j5mjEg=.
Настройка клиента WireGuard
Шаг 21. Настройте следующие сетевые параметры под Windows: IP-адрес 1.0.0.3; маску подсети 255.0.0.0; шлюз 1.0.0.1.
Шаг 22. Сконфигурируйте клиента WireGuard следующим образом:
[Interface]
PrivateKey = <CLIENT_PRIVATE_KEY>
Address = 10.200.0.2/24
[Peer]
PublicKey = tfQq7jZFgPZMGYNXukp3RB2ER0NibANlaIOGArb6vzI= - публичный ключ сервера WG
Endpoint = 10.10.20.15:51820
AllowedIPs = 10.200.0.0/24
PersistentKeepalive = 25Проверка работы туннеля
Шаг 23. После активации туннеля в Windows выполните в контейнере команду wg. Ожидаемый вывод:
latest handshake: 34 seconds ago
transfer: 1.68 KiB receivedПроверка VPN
Шаг 24. В Windows выполните команду ping 10.200.0.1. Если пинг проходит — туннель работает.
