Задать вопрос
@iwnch

Как сделать две конфигурации для WG?

У меня есть сервак на убунте 22.04 + WG Easy (арендовал у одного сайта VPS с предустановленным WG на убунте)
Там докер.
У меня такой вопрос, можно ли как-то сделать возможность переключения конфигов, которые я хочу получить, например, мне нужен кфг, который заворачивает весь трафик в впн, я захожу на WG Easy и нажимаю кнопку и он выдает этот конфиг, но в определенных случаях, я хочу, чтобы он выдал конфиг, в котором только несколько IP уходят в VPN.
Хочу настроить телеграмм бота, который по запросу будет выдавать кфг, с определенными маршрутами для одного сервиса, но при этом при желании я мог для себя выпустит конфиг, который заворачивает весь интернет в VPN
  • Вопрос задан
  • 206 просмотров
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 1
veselov4nton
@veselov4nton
Системный администратор.
Для решения задачи, описанной вами, можно использовать несколько подходов, чтобы автоматически генерировать различные конфигурации для WireGuard через Telegram-бота.

1. Разделение конфигураций через Docker
Ваш запрос включает создание двух разных конфигураций для WireGuard (полный VPN и частичный VPN для отдельных IP). Один из вариантов — использовать два разных контейнера Docker, как предложено в комментарии. Однако, это может быть немного избыточно, если хотите минимизировать сложность.

Вместо этого, можно настроить один контейнер с возможностью переключения конфигураций внутри него. В контейнере можно создать несколько конфигурационных файлов для WireGuard (например, full_vpn.conf и partial_vpn.conf), и с помощью команды копирования нужного конфигурационного файла из одного места в другое на запрос Telegram-бота.

2. Использование Telegram-бота для выдачи конфигов
Для того чтобы автоматически генерировать конфиг при запросе через Telegram-бота, можно создать простой бот, который будет выполнять следующие действия:

При получении команды от пользователя, бот будет формировать нужный конфиг в зависимости от типа VPN.
Генерация конфигов может быть на основе шаблонов, которые вы заранее подготовите для разных случаев (например, один конфиг для полного VPN, а другой — для частичного).
Шаги для реализации:

1. Установка и настройка Telegram-бота

Для начала нужно создать Telegram-бота через BotFather и получить токен API. Затем можно использовать библиотеку python-telegram-bot или аналогичную для написания скрипта. Установите библиотеку:

pip install python-telegram-bot

2. Скрипт бота

Создайте Python-скрипт, который будет обрабатывать команды и выдавать соответствующие конфиги.

Пример базового скрипта:

import os
from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext

# Путь к конфигурационным файлам WireGuard
config_dir = "/etc/wireguard/"

def start(update: Update, context: CallbackContext) -> None:
update.message.reply_text('Привет! Я могу создать конфиг для VPN. Выберите опцию: /fullvpn или /partialvpn')

def full_vpn(update: Update, context: CallbackContext) -> None:
with open(os.path.join(config_dir, "full_vpn.conf"), "r") as file:
config = file.read()
update.message.reply_text(f"Конфиг для полного VPN:\n{config}")

def partial_vpn(update: Update, context: CallbackContext) -> None:
with open(os.path.join(config_dir, "partial_vpn.conf"), "r") as file:
config = file.read()
update.message.reply_text(f"Конфиг для частичного VPN:\n{config}")

def main():
# Токен вашего бота
updater = Updater("YOUR_BOT_API_TOKEN", use_context=True)
dp = updater.dispatcher

dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("fullvpn", full_vpn))
dp.add_handler(CommandHandler("partialvpn", partial_vpn))

updater.start_polling()
updater.idle()

if __name__ == '__main__':
main()

Этот код создает бота, который на команды /fullvpn и /partialvpn будет отправлять соответствующие конфигурации. Обратите внимание, что конфигурационные файлы должны быть заранее подготовлены.

3. Настройка конфигов WireGuard

Конфигурации WireGuard могут выглядеть следующим образом:

Полный VPN (full_vpn.conf):

[Interface]
PrivateKey =
Address = 10.0.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey =
Endpoint = :51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Частичный VPN (partial_vpn.conf):

[Interface]
PrivateKey =
Address = 10.0.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey =
Endpoint = :51820
AllowedIPs = 192.168.1.0/24, 10.1.1.0/24
PersistentKeepalive = 25

4. Возможность переключения конфигов

Для переключения конфигов в Docker-контейнере можно использовать тома (volumes) или монтировать конфигурационные файлы в зависимости от выбранного типа VPN. Если это нужно сделать без перезапуска контейнера, можно настроить систему, чтобы бота автоматически менял конфиг, например, заменяя wg0.conf в соответствующей директории.

5. Запуск бота

Запустите бота командой:

python bot_script.py

Теперь бот будет ждать команд и при необходимости отправлять нужные конфигурации. Напишите получилось ли?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы