/awg-wg-ui-bridge

Скрещенный AWG и WG для объединения двух подсетей в Docker-контейнерах

Primary LanguageHTMLGNU General Public License v3.0GPL-3.0

Предистория

Данную модификация сделана для того, чтобы объединить в одну подсеть те устройства которые еще не поддерживают AmnesiaVPN но работают с Wireguard-ом. То есть простыми словами появляется возможность подключаться к серверу как по AmnesiaVPN так и по Wireguard и они будут иметь доступ к одинаковым ресурсам.

Возможности

  1. Создание пользователей Wireguard в Web-панели на порту 51821 ВАШ_IP:51821
  2. Использование функционала в приложении AmnesiaVPN паралелльно с сервером Wireguard, и все это в контейнерах, что экономит ресурсы сервера.
  3. Объединение нескольких подсетей благодаря прокаченному WG-EASY (мною), добавление параметра allowedIPS в wg0.json. Например можно объединить несколько домашних сетей под управлением Keenetic или Mikrotik!

Инструкция по установке

1. Установка AmnesiaWG через оф. клиент (все как обычно), единственное, что нужно указать порт сервера 51822 (т.к 51820 и 51821 будут заняты Wireguard-ом)

2. Заходим на ssh сервер под root (или своим пользователем)

3. Доустанавливаем docker-compose-plugin (потому что амнезия этого не делает :3)

Посмотреть как это делать можно тут (https://docs.docker.com/compose/install/linux/), я покажу как делать для Ubuntu 22.04:

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-compose-plugin

4. Готово, теперь перейдем к настройке самого докера, создадим сначала подсеть для работы с DNS и прочих моментов.

Можете установить свою подсеть, но тогда Вам придется много везде всего менять.

 docker network create -d bridge --subnet=10.100.0.0/24 nginx-network

5. Теперь запустим для начала Portainer CE, я его уже поместил в docker-compose (для удобства), запускаем его в корне каталога с проектом командой:

 docker compose -f docker-compose-portainer.yml up -d

6. Теперь откроем файл docker-compose.yml, здесь нужно поменять настройки на свои у сервиса WG-EASY на свои, а именно поменять только:

  • WG_HOST и PASSWORD, это нужно для правильной генерации конфигов для WG и входа в Web-панель Wireguard

7. После чего сохраняем файл и запускаем Stack Compose командой:

 docker compose -f docker-compose.yml up -d

8. Теперь вам необходимо поменять пароль от панели Adguard Home (это наш DNS-сервер фильтрации запросов, там будет показываться информация по каждому клиенту (кто куда ходит и т д, а также фильтрованивание рекламы))

я уже настроил его за Вас, Вам необходимо лишь поменять пароль от панели и зайти, это можно сделать следующей командой в корне проекта ### (делать под рутом или через SUDO), и следовать инструкции скрипта.

 chmod +x ./change_password_adguard.sh
 chmod +x ./tools/agh.sh
 ./change_password_adguard.sh

9. Ну и последнее самое сложное, это маршрутизация между адаптерами, в общем, если Вы не меняли подсети, то изменения вносить не нужно, я уже за Вас все настроил :)

Пишем команду (либо под root, либо везде добавляем sudo):

 chmod +x iptables_patch.sh
 ./iptables_patch.sh

10. Пункт по желанию!

Если вдруг выхотите закрыть из внешнего интернета доступ к 51821, то нужно запустить еще один скрипт который это делает! Не забудьте перед этим создать конфиг Wireguard или AmnesiaVPN иначе вы потеряете доступ к панели, итак:

Вводим команды в корне проекта:

 chmod +x close_port_wg_ui.sh
 ./close_port_wg_ui.sh

После чего можно перезагрузить сервер и проверить все ли работает, если у вас есть какие-то вопросы то обращаться можно ко мне в ТГ, помогу чем смогу: