Поиск
Показаны результаты для тегов 'wireguard'.
Найдено 9 результатов
-
Вступление или зачем нам вообще это надо? В наше интересное время все чаше приходиться использовать VPN, но тут начинается другая проблема часть местных интернет ресурсов может быть недоступна через сервер VPN. И начинается постоянное передергивание включения выключения VPN соединения. Существует много вариантов концепции разделения трафика и обхода региональных блокировок я решил рассмотреть вариант реализации с использованием wireguard. Да это скорее всего (даже наверняка) не самый лучший инструмент для организации разделения трафика но во первых уже был работающий сервер wg во вторых заинтересовала сама идея реализации. Практически все материалы по разделению трафика были заимствованы и доработаны из статьи с хабр Укрощаем одноглазого змея. Разбираемся с WireGuard и делаем свой умный VPN я не претендую на авторство метода, скриптов или любых материалов из оригинальной статьи. А так же настоятельно рекомендую ознакомиться с оригиналом статьи для лучшего понимания идеи. Цель данной публикации познакомить с вариантом разделения трафика, предоставить сжатую инструкцию по настройке. Так же в отличии от оригинальной статьи настройка выполнялась с установкой веб интерфейса в виде wg-easy так как ручная генерация новых клиентов описанная автором мне кажется мягко говоря неудобной и не оправданной. Для реализации надо: 1. Удаленный сервер с настроенным wg сервером 2. Локальная машина Linux (желательно виртуальная отдельно от других приложений) для работы достаточно 256 мб ОЗУ но зависит от количества клиентов и объема трафика. Подготовка сервера Выполним первоначальную настройку сервера для установки. Основная настройка будет выполнятся с использованием скрипта, но для создания клиентских подключений используется wg-easy установленным с использованием docker-compose. Обновляем репозитории и пакеты: apt update -y && apt upgrade -y Устанавливаем Docker: apt install curl && curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh Запускаем и включаем службу Docker systemctl start docker && systemctl enable docker Устанавливаем Docker Compose: curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose Так же устанавливает пакеты необходимые для работы wg и скрипта настройки маршрутов. apt install -y wireguard iptables ipcalc qrencode curl jq traceroute net-tools netscript Настройка соединения с внешним сервером Наш внутренний сервер подключается как клиент к внешнему серверу с настроенным wireguard. Для этого на внешнем сервере разворачиваем серверную часть wg (рекомендую использовать скрипты dwg) или заходим на ранее созданный и генерируем нового клиента. Нам необходимо получить файл конфигурации для подключения клиента вида: [Interface] PrivateKey = <Seckret> Address = 10.10.10.14/24 DNS = 10.2.0.100 MTU = 1280 [Peer] PublicKey = <Seckret> PresharedKey = <Seckret> AllowedIPs = 0.0.0.0/0, ::/0 PersistentKeepalive = 25 Endpoint = <Seckret>:51820 Данные этого файла конфигурации необходимо в неизменном виде разместить в wg-external.conf cd /etc/wireguard nano wg-external.conf Запускаем туннель до внешнего сервера wg-quick up wg-external Для проверки работы туннеля команда wg На текущий момент мы получили такую схему подключения Теперь нам надо обеспечить возможность конечным пользователям ходить в интернет через наш внутренний сервер. Настройка клиентской части внутреннего сервера Для настройки клиентской части был выбран WG-EASY но можно использовать любой вариант настройки wg от ручного как предлагает автор оригинальной статьи так и различные графические интерфейсы. Создадим каталог с docker-compose файлом для запуска wg-easy mkdir wg-easy && cd wg-easy nano docker-compose.yml Вставляем в файл следующее содержимое version: "3" services: wg-easy: environment: - WG_HOST=192.168.0.132 - PASSWORD=MySecretPassword - WG_PORT=51820 - WG_DEFAULT_ADDRESS=10.10.9.x - WG_DEFAULT_DNS=192.168.0.1 - WG_ALLOWED_IPS=0.0.0.0/0, ::/0 - WG_MTU=1280 image: ditek/wg-easy container_name: wg-easy volumes: - /wg-easy:/etc/wireguard ports: - "51820:51820/udp" - "51821:51821/tcp" restart: unless-stopped cap_add: - NET_ADMIN - SYS_MODULE sysctls: - net.ipv4.ip_forward=1 - net.ipv4.conf.all.src_valid_mark=1 dns: - 192.168.0.1 Для корректной работы необходимо скорректировать некоторые параметры с учетом вашей сети. В параметр WG_HOST указываем IP адрес в вашей сети по которому можно будет обратиться к серверу WG. Сервер разделения трафика должен иметь фиксированный IP адрес. В параметр PASSWORD указываем пароль от веб интерфейса. Параметр WG_DEFAULT_ADDRESS можно оставить без изменений, но если планируете использовать на одном устройстве несколько подключений WG в активном состоянии одновременно необходимо что бы сети не пересекались (актуально для роутеров kenetik). Для этого достаточно изменить на 10.10.8.x или любую другую не используемую подсеть. Параметр WG_DEFAULT_DNS если мы используем только внутри локальной сети то указываем наш роутер или ip на котором установлен локальный DNS. Так же указываем его в секции dns. Запускаем сборку и установку контейнера docker-compose up -d Выходим в корневой каталог cd Проверяем работу контейнера docker ps Теперь нам доступно создание клиентов на локальном сервере через веб интерфейс по адресу http://IP_server:51821 Заходим с паролем указанным в докер файле и создаем клиента. Подключаемся к локальному серверу с любого устройства и проверяем работу сети. Проверяем IP адрес и видим наш адрес удаленного сервера. Теперь схема подключения выглядит так: Фактически мы сделали туннель до внешнего сервера через промежуточную точку, осталось сделать разделение трафика на промежуточном сервере. Настройка скрипта разделения Идея как и сам скрипт позаимствован из оригинальной статьи автора (рекомендую ознакомится для более точного понимания), Я же перескажу основную идею скрипта. Мы хотим что бы наш локальный интернет не ходил на удаленный сервер а выходил через обычный интернет. Создадим скрипт в отдельной директории mkdir exclude_routes nano update_exclude_routes.sh И вставляем сюда скрипт #!/bin/bash #To crontab (export EDITOR=nano; crontab -e) #@reboot sleep 30 && bash /root/update_exclude_routes.sh > /root/update_routes_log.txt 2>&1 #0 3 * * mon bash /root/update_exclude_routes.sh > /root/update_routes_log.txt 2>&1 function ProgressBar { let _progress=(${1}*100/${2}*100)/100 let _done=(${_progress}*4)/10 let _left=40-$_done _fill=$(printf "%${_done}s") _empty=$(printf "%${_left}s") printf "\rAdd routes to route table (${1}/${2}): [${_fill// /#}${_empty// /-}] ${_progress}%%" } #Variables file_raw="russian_subnets_list_raw.txt" file_user="subnets_user_list.txt" file_user_hostnames="hosts_user_list.txt" file_for_calc="russian_subnets_list_raw_for_calc.txt" file_processed="russian_subnets_list_processed.txt" gateway_for_internal_ip=`ip route | awk '/default/ {print $3; exit}'` interface=` ip link show | awk -F ': ' '/state UP/ && !/docker/ && !/veth/ {print $2}' | head -n 1 | sed 's/@.*//' ` #interface="eth0" #Get addresses RU segment echo "Download RU subnets..." curl --progress-bar "https://stat.ripe.net/data/country-resource-list/data.json?resource=ru" | jq -r ".data.resources.ipv4[]" > $file_raw echo "Deaggregate subnets..." cat $file_raw |grep "-" > $file_for_calc cat $file_raw |grep -v "-" > $file_processed for line in $(cat $file_for_calc); do ipcalc $line |grep -v "deaggregate" >> $file_processed; done if [ -e $file_user ] then echo "Add user subnets..." cat $file_user |grep -v "#" >> $file_processed fi if [ -e $file_user_hostnames ] then echo "Add user hostnames..." for line in $(cat $file_user_hostnames); do nslookup line |grep "Address" |grep -v "#" |awk '{print $2"/32"}' >> $file_processed; done fi #Flush route table echo "Flush route table (down interface $interface)..." ifdown $interface > /dev/null 2>&1 echo "Up interface $interface..." ifup $interface > /dev/null 2>&1 #Add route routes_count_in_file=`wc -l $file_processed` routes_count_current=0 for line in $(cat $file_processed); do ip route add $line via $gateway_for_internal_ip dev $interface; let "routes_count_current+=1" ; ProgressBar ${routes_count_current} ${routes_count_in_file}; done echo "" echo "Remove temp files..." rm $file_raw $file_processed $file_json $file_for_calc routes_count=`ip r | wc -l` echo "Routes in routing table: $routes_count" Сохраняем и проверяем работу: bash update_exclude_routes.sh Данный скрипт можно использовать не только для разделения на Ru и не RU сегмент интернета. Можно использовать любые списки сетей, фактически скрипт делает автоматическое добавление маршрутов. На данном этапе разделение по подсетям уже готово, все ip адреса которые относятся к RU сегменту будут идти через основной интернет. Дополнительно мы можем положить в данную папку файлы со списком сайтов и подстей которые мы хотим тоже пустить по короткому маршруту через основной интеренет. subnets_user_list.txt – для подсетей hosts_user_list.txt – для сайтов, адреса определяются через nslookup Отдельно хочу обратить внимание на параметр interface он должен указывать на ваш основной интерфейс по которому сервер подключен к интернету. Скрипт должен автоматически определить данный интерфейс, но если вы столкнулись с ошибкой вида «Cannot find device "eth0@if27"» при запуске необходимо скорректировать скрипт и вписать руками конкретный интерфейс. Для этого нам надо определить основной интерфейс подключения. Это можно сделать командой ifconfig Нас интересует имя того интерфейса который получил адрес в нашей локальной сети. Корректируем в файле скрипта параметр: interface="eth0" И запускаем скрипт bash update_exclude_routes.sh Фактически мы получили нашу целевую схему: Нам осталось только настроить автоматический запуск при перезагрузке и периодическое обновление таблицы маршрутов. Добавим авто запуск wg туннеля до удаленного сервера systemctl enable [email protected] И добавим запуск скрипта при перезапуске в крон export EDITOR=nano; crontab -e Добавляем в конец следующие строчки @reboot sleep 30 && bash exclude_routes/update_exclude_routes.sh > exclude_routes/update_routes_log.txt 2>&1 0 3 * * mon bash exclude_routes/update_exclude_routes.sh > exclude_routes/update_routes_log.txt 2>&1 Перезапускаем сервер и проверяем. Для проверки наличия маршрутов можно воспользоваться командой: ip r | wc -l Команда возвращает количество прописанных маршрутов, по моим наблюдениям количество маршрутов должно быть более 10000 при корректной работе скрипта. Подключаем наших конечных пользователей (рекомендую напрямую роутер) и пользуемся. Заключение Скрипт не совершенен и в некоторых ситуациях выпадает с ошибками по типу блокировки записей маршрутов и т.д. Я не являюсь автором данного скрипта, моя задача была применить схему и показать другим как ее можно использовать. На текущий момент на моей системе происходит обкатка работы такой схемы разделения. Буду благодарен за идеи как можно доработать скрипт или другие варианты. Возможно кто то предложит телеграмм бота для управления скриптом или еще какие то идеи по улучшению. P.S. В оригинальной статье разобран так же разобран кейс добавления конкретных маршрутов на удаленный сервер которые мы должны были направить на обычный доступ в интернет. Я разбирал работу этой части скрипта но она полностью еще не адаптирована для использования с WG-EASY, по этому возможно позднее дополню публикацию.
-
Всем привет. Пишу ответ на популярный вопрос, как сделать чтобы подключение до сервера шло через порт отличный от 51820: WireGuard - это современный протокол VPN, который обеспечивает безопасное и приватное подключение к удаленным сетям. По умолчанию WireGuard использует порт 51820 для подключения к серверу. Однако, иногда может возникнуть необходимость изменить этот порт на другой. Чтобы изменить порт подключения к серверу WireGuard, мы должны внести изменения в файл docker-compose.yml, который используется для запуска контейнера WireGuard. Вот пример исправленного кода в файле docker-compose.yml: - WG_PORT=8443 - WG_DEFAULT_ADDRESS=10.10.10.x - WG_DEFAULT_DNS=10.2.0.100 - WG_ALLOWED_IPS=10.2.0.0/24, 0.0.0.0/0, ::/0 - WG_PERSISTENT_KEEPALIVE=25 - WG_MTU=1280 image: ditek/wg-easy container_name: wg-easy volumes: - .:/etc/wireguard ports: - "8443:51820/udp" - "51821:51821/tcp" Давай разберем, что мы изменили: 1. Мы добавили переменную окружения WG_PORT=8443. Это позволяет задать новый порт подключения к серверу WireGuard. 2. В секции ports мы указали "8443:51820/udp". Это означает, что внешний порт 8443 будет перенаправлен на внутренний порт 51820 контейнера WireGuard. Таким образом, мы устанавливаем новый порт подключения для WireGuard. После внесения этих изменений и перезапуска контейнера, подключение к серверу WireGuard будет осуществляться через порт 8443. Проверяем работу: В варианте с DWG-CLI будет аналогично, меняем serverport и также проброс портов.
-
DWG [multi] Обсуждение DWG » | DWG-CLI » | DWG-UI » | DWG-DARK » | DWG [multi] » Информация носит ознакомительный характер. Пожалуйста не нарушайте действующего законодательства вашей страны. Универсальная сборка. Она содержит внутри себя варианты установки сборки на выбор: DWG-UI DWG-CLI DWG-DARK(ДОБАВЛЕН!) Не рекомендуется устанавливать две подряд, либо на уже имеющуюся сборку. Требования Чистый пустой сервер. Поддерживаемые операционные системы: Ubuntu 20.04, 22.04; Debian 11, Centos 8,9 Первым делом нам нужно арендовать хороший и быстрый сервер. Берем какой вам подходит лучше по скорости и получаем бонус 15% (если пополнить в первые 24часа регистрации) на пополнение баланса: https://aeza.net/?ref=377137 Замерить скорости можно здесь: Aéza (aeza.net) Скрипт устанавливает все автоматически. Все комментарии по скрипту внутри в комментариях Самая быстрая установка - 1 минута Запусти команду на чистом сервере bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/dwg/main/set-up.sh) Что установится: Сначала установится Git, чтобы можно было скопировать мой репозиторий Docker - последняя версия Docker-compose - последняя версия Wg-easy - интерактивный режим введения пароля для веб AdGuard Home - интерактивный режим создания пользователя и пароля (можно оставить стандартным) Unbound - все в стоке apache2-utils - необходим для генерации хэш-паролей ssh.sh - скрипт для смены порта SSH подключения ufw.sh - скрипт для установки UFW Firewall. Напомнит установить ufw-docker и сам закроет доступ извне! ВНИМАНИЕ! Запускать только после того как создадите для себя клиента в WireGUARD!!! Для изменения пароля к AGH можно воспользоваться скриптом ниже. Позже он будет добавлен возможностью смены пароля и к WG-easy. cd dwg && ./change.sh После смены пароля необходимо пересоздать контейнеры командой: docker-compose up -d --force-recreate https://github.com/DigneZzZ/dwg Описание скриптов в папке tools agh.sh - смена логина и пароля к AGH docker.sh - установка docker и docker-compose nano.sh - установка редактора ssh.sh - скрипт смены стандартного порта ssh. (может поменять любой порт) swap.sh - скрипт добавления файла подкачки (актуально всем) ufw-docker.sh - скрипт установки ufw-docker - актуально для WG-easy. Скрипт с пресетом для сборки dwg-ui. ufw.sh - установка firewall UFW, с автоматическим определением порта SSH и добавлением в исключение.
-
DWG - UI Обсуждение DWG » | DWG-CLI » | DWG-UI » | DWG-DARK » | DWG [multi] » Информация носит ознакомительный характер. Пожалуйста не нарушайте действующего законодательства вашей страны. Сборка DWG-UI включает в себя: Веб интерфейс для управления клиентами Wireguard - WG Easy. Контейнер c Unbound предоставляет собственный DNS сервер с кэшированием DNS и дополнительными параметрами конфиденциальности. Контейнер c AdGuard Home (более современный аналог чем PiHole) используется для блокировки рекламы, аналитических трекеров и редактирования списка используемых DNS серверов к которым обращается Unbound. Имеет очень полезную функцию параллельных запросов, DNS которой нет в PiHole. Контейнер с WireGuard используется непосредственно для запуска серверной части Wireguard VPN Основные репозитории с обновлениями на GitHub: GitHub - DigneZzZ/dwg: dwg-universal GitHub - DigneZzZ/dwg-ui: Combination Wireguard + Adguard Home + Unbound (DoH include) Требования: Чистый пустой сервер. Первым делом нам нужно арендовать хороший и быстрый сервер. Берем какой вам подходит лучше по скорости и получаем бонус 15% (если пополнить в первые 24часа регистрации) на пополнение баланса: https://aeza.net/?ref=377137 Замерить скорости можно здесь: Aéza (aeza.net) Поддерживаемые операционные системы (где проверена работоспособность): Ubuntu 20.04, 22.04, 23.10, Debian 11, 12, Centos 8,9 Скрипт устанавливает все автоматически. Все комментарии по скрипту внутри в комментариях. Команда установки: apt update && apt install curl sudo git -y && curl -Of https://raw.githubusercontent.com/DigneZzZ/dwg-ui/main/setup.sh && chmod +x setup.sh && ./setup.sh Что установится: Сначала установится Git, чтобы можно было скопировать мой репозиторий Docker - последняя версия Docker-compose - последняя версия Wg-easy - интерактивный режим введения пароля для веб AdGuard Home - интерактивный режим создания пользователя и пароля (можно оставить стандартным) Unbound - все в стоке apache2-utils - необходим для генерации хэш-паролей ssh.sh - скрипт для смены порта SSH подключения ufw.sh - скрипт для установки UFW Firewall. Напомнит установить ufw-docker и сам закроет доступ извне! ВНИМАНИЕ! Запускать только после того как создадите для себя клиента в WireGUARD!!! Адреса веб-интерфейсов: WG-Easy web-ui: yo.ur.ip.xx:51821 #вместо yo.ur.ip.xx введите IP своего сервера, пароль введите тот что присвоили при установке Доступ в web-ui из сети WG: http://10.2.0.3:51821 AdGuard HOME: http://10.2.0.100/ Логин: admin Пароль: admin # Скрипт для смены пароля AGH bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/dwg/main/change.sh)
-
DWG - DARK Обсуждение DWG » | DWG-CLI » | DWG-UI » | DWG-DARK » | DWG [multi] » Особенности: сборка с возможность контроля и отображения каждого пира WG в AdGuardHome! Интерфейс сделан "тёмный". Сборка на базе WG-Easy. Находится в тестировании! Могут быть ошибки! Требования Чистый пустой сервер. Поддерживаемые операционные системы: Ubuntu 20.04, 22.04; Debian 11, Centos 8,9 Скрипт устанавливает все автоматически. Все комментарии по скрипту внутри в комментариях Самая быстрая установка - 1 минута Запусти команду на чистом сервере apt update && apt install curl sudo git -y && curl -Of https://raw.githubusercontent.com/DigneZzZ/dwg-dark/main/setup.sh && chmod +x setup.sh && ./setup.sh Что установится: Сначала установится Git, чтобы можно было скопировать мой репозиторий Docker - последняя версия Docker-compose - последняя версия Wg-easy - интерактивный режим введения пароля для веб AdGuard Home - интерактивный режим создания пользователя и пароля (можно оставить стандартным) Unbound - все в стоке apache2-utils - необходим для генерации хэш-паролей ssh.sh - скрипт для смены порта SSH подключения ufw.sh - скрипт для установки UFW Firewall. Напомнит установить ufw-docker и сам закроет доступ извне! ВНИМАНИЕ! Запускать только после того как создадите для себя клиента в WireGUARD!!! https://github.com/DigneZzZ/dwg-dark
-
DWG - CLI Обсуждение DWG » | DWG-CLI » | DWG-UI » | DWG-DARK » | DWG [multi] » Сборка DWG-CLI на базе того же скрипта DWG, но в составе используется стандартный WireGuard без надстроенного веб-интерфейса, сборка DWG-CLI включает в себя: Контейнер c Unbound предоставляет собственный DNS сервер с кэшированием DNS и дополнительными параметрами конфиденциальности. Контейнер c AdGuard Home (более современный аналог чем PiHole) используется для блокировки рекламы, аналитических трекеров и редактирования списка используемых DNS серверов к которым обращается Unbound. Имеет очень полезную функцию параллельных запросов, DNS которой нет в PiHole. Контейнер с WireGuard используется непосредственно для запуска серверной части Wireguard VPN Основные репозитории с обновлениями на GitHub: GitHub - DigneZzZ/dwg: dwg-universal GitHub - DigneZzZ/dwg-cli: Docker WireGuard with Adguard and Unbound Требования: Чистый пустой сервер. Поддерживаемые операционные системы (где проверена работоспособность): Ubuntu 20.04, 22.04, 23.10, Debian 11, 12 Скрипт устанавливает все автоматически. Все комментарии по скрипту внутри в комментариях. Команда установки: apt update && apt install curl sudo git -y && curl -Of https://raw.githubusercontent.com/DigneZzZ/dwg-cli/main/setup.sh && chmod +x setup.sh && ./setup.sh Что установится: Сначала установится Git, чтобы можно было скопировать мой репозиторий Docker - последняя версия Docker-compose - последняя версия Wireguard - интерактивный режим введения количества пользователей (имена\количество) AdGuard Home - интерактивный режим создания пользователя и пароля (можно оставить стандартным) Unbound - все в стоке apache2-utils - необходим для генерации хэш-паролей ssh.sh - скрипт для смены порта SSH подключения ufw.sh - скрипт для установки UFW Firewall. peer.sh - выводит список пиров и выводит настройки В ответных командах терминала будут QR-коды, которые вы можете использовать (если хотите) для настройки клиента WireGuard на своем телефоне. Также вы можете использовать следующую команду для вывода информации о пирах предварительно перейдя в папку dwg-cli cd dwg-cli ./p.sh Скачать конфигурационные файлы клиента для подключения к WireGuard вы можете через SFTP при помощи FileZilla или другого SFTP клиента. Конфигурации расположены в папках Peer1, Peer2 и т.д. по пути /user/dwg-cli/wireguard (вместо *user* ваше имя пользователя linux) Файл с расширением .conf используется в основном для подключения с ПК и содержит текстовую информацию для подключения клиента WireGuard. Также его можно использовать для импорта туннелей из файла. Файл с расширением .png это сохраненные QR коды для быстрого подключения клиента WireGuard с мобильного устройства. Данные для входа в панель управления AdGuard Home (по умолчанию): # Логин и пароль AGH по умолчанию могут отличаться, всегда проверяйте документацию сборки на GitHub http://10.2.0.100 или http://agh.local login: admin password: admin # или такой логин-пароль login: admin password: 12345678 # Скрипт для смены пароля AGH bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/dwg/main/change.sh)
-
DWG - сборки Docker WireGuard VPN Обсуждение DWG » | DWG-CLI » | DWG-UI » | DWG-DARK » | DWG [multi] » DWG (Docker WireGuard) — это различные сборки Docker контейнеров WireGuard VPN в комбинации c Unbound (DNS сервер), PiHole, AdGuard Home, WG Easy и другими полезными пакетами в различных комбинациях, для быстрого и легкого воссоздания инфраструктуры вашего VPN сервера. Установка и настройка подобных конфигураций вручную, без использования Docker контейнеров отнимет у вас много времени и сил. Для подключения к VPN используется бесплатный WireGuard клиент доступный для Windows, MacOS, IOS, Android, Linux. С помощью DWG вы сможете разворачивать собственные полные или разделенные туннели WireGuard VPN с возможностями блокировки рекламы и трекеров (через Pihole или AdGuard Home) и собственным DNS сервером Unbound с дополнительными параметрами конфиденциальности. В дальнейшем могут появиться сборки с новым функционалом. Требования: Только что установленная операционная система Ubuntu 20.04, 22.04; Debian 11, Centos 8,9 Данная страница является общей для обсуждения сборок DWG. Любые идеи и новые реализации сборок Docker Wireguard приветствуются
-
Всем привет! Ещё одна интересная конфигурация VPN сервера с блокировщиком рекламы, это использование AdGuardHome решения. Постоянно обновляемая инструкция будет здесь: DigneZzZ/dwg-ui: Combination Wireguird + Adguard Home (github.com) Настройка и установка достаточно простая: git clone https://github.com/dignezzz/dwg-ui.git cd dwg-ui nano docker-compose.yml #then run docker-compose up -d После подключения к Wireguard первым делом нужно зайти в настройки AdGuardHome, иначе внешний трафик будет заблокирован. Готово!
-
UPD: Тема и сборка является устаревшим вариантом! Рекомендуется переход на DWG-UI. Всем привет Сегодня статья по теме создания собственного VPN сервера. Wirehole - это готовый контейнер для docker-compose для легкой установки Wireguard, piHole и Unbound за буквально несколько минут. В нашем варианте используется сборка с UI интерфейсом Wireguard - wg-easy. И так, начнем. Будем считать что все манипуляции с сервером вы уже выполнили, настроили, обезопасили и научились маломальски пользоваться им. У нас для примера Ubuntu 22 0. Не забываем, что у нас должен быть установлен текстовый редактор, например nano (apt install nano). 1. Ставим docker и docker-compose. // Я делал по этой инструкции. sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install docker-ce И проверяем статус: sudo systemctl status docker Проверяем запуск контейнера docker run hello-world Ставим docker-compose: sudo apt install docker-compose Тут описан вариант для Debian 11. 2. Ставим Wirehole - UI (All-in-one: WireGuard + Web UI + Adblock (via Pi-Hole) + DNS Caching (via Unbound)) (github) Это самый лег этап ? git clone https://github.com/dignezzz/wirehole-ui.git cd wirehole-ui nano docker-compose.yml Зайдя в редактор, стоит обратить внимание на две вещи: 1. Обязательно нужно заполнить wg-host. Его можно указать как IP адрес сервера. ВНИМАНИЕ! Пробела после "WG-HOST=" не должно быть перед IP Адресом! 2.Второе важное: PASSWORD=10h30 - поменяйте на свой пароль для доступа к веб-интерфейсу. 3. Опционально, можно поменять временную зону - но это не обязательно. Сохраняем (ctrl+O) и жмем Enter Выходим из редактора (ctrl+X) Основные настройки на этом заканчиваются. Поднимаем контейнер: docker-compose up если результат такой, то я вас поздравляю с установкой: Статус контейнеров в aaPanel будет выглядеть так: ГОТОВО! Зайти в панель Wg-easy по адресу: ваш.ip:51821 панель piHole доступна только из внутренней сети после подключения через vpn по адресу: http://10.2.0.100/admin Не забываем сделать все безопасно: