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

У меня есть сервер на Ubuntu 22.04 с предустановленным WG Easy (арендованный VPS с установленным WireGuard). Также на сервере используется Docker. У меня возник вопрос: можно ли организовать возможность переключения между различными конфигурациями? Например, мне нужна конфигурация, которая направляет весь трафик через VPN. Я хочу, чтобы в WG Easy была кнопка, которая генерирует эту конфигурацию. В некоторых случаях мне нужно, чтобы генерировалась конфигурация, где только несколько IP-адресов направляются через VPN. 

Я планирую настроить Telegram-бота, который по запросу будет выдавать конфигурации с определенными маршрутами для одного сервиса. Однако также я хотел бы иметь возможность вручную получить конфигурацию, которая перенаправляет весь интернет-трафик через VPN.
  • 17 октября 2024 г. 12:42
Ответы на вопрос 1
Организация нескольких конфигураций для WireGuard на сервере с WG Easy возможна, и вы можете реализовать переключение между ними, используя различные подходы. Вот пример того, как вы можете это сделать:

### Шаг 1: Настройка конфигураций WireGuard

1. **Конфигурация для полного перенаправления трафика через VPN**:
   Создайте конфигурацию для WireGuard, которая направляет весь трафик через VPN. Пример конфигурации (wg0.conf):

   ```ini
   [Interface]
   Address = 10.0.0.2/24  # Локальный IP клиента
   PrivateKey = <your_private_key>

   [Peer]
   PublicKey = <server_public_key>
   Endpoint = <server_ip>:<server_port>
   AllowedIPs = 0.0.0.0/0  # Всё через VPN
   ```

2. **Конфигурация для маршрутизации определённых IP через VPN**:
   Создайте конфигурацию для маршрутизации только нескольких IP-адресов. Пример (wg0_alt.conf):

   ```ini
   [Interface]
   Address = 10.0.0.3/24  # Локальный IP клиента
   PrivateKey = <your_private_key>

   [Peer]
   PublicKey = <server_public_key>
   Endpoint = <server_ip>:<server_port>
   AllowedIPs = 192.168.1.100/32, 10.0.0.0/24  # Здесь указаны конкретные IP
   ```

### Шаг 2: Реализация смены конфигураций

Для организации возможности переключения между конфигурациями, можно использовать следующие подходы:

- **Скрипт на сервере**:
  
  Напишите Bash-скрипт на сервере, который будет переключать конфигурации:

  ```bash
  #!/bin/bash

  if [ "$1" == "full" ]; then
      cp /path/to/wg0.conf /etc/wireguard/wg0.conf
  elif [ "$1" == "partial" ]; then
      cp /path/to/wg0_alt.conf /etc/wireguard/wg0.conf
  else
      echo "Usage: $0 {full|partial}"
      exit 1
  fi

  wg-quick down wg0
  wg-quick up wg0
  ```

- **Telegram-бот**:
  
  Создайте простого Telegram-бота, используя Python и библиотеку `python-telegram-bot`. Он будет принимать команды, такие как `/get_full_config` или `/get_partial_config`, и отправлять их пользователю.

  Пример функции для отправки конфигурации:

  ```python
  from telegram import Update
  from telegram.ext import Updater, CommandHandler, CallbackContext
  import subprocess

  def get_full_config(update: Update, context: CallbackContext) -> None:
      with open('/path/to/wg0.conf', 'r') as f:
          config = f.read()
      update.message.reply_text(config)

  def get_partial_config(update: Update, context: CallbackContext) -> None:
      with open('/path/to/wg0_alt.conf', 'r') as f:
          config = f.read()
      update.message.reply_text(config)

  def main():
      updater = Updater("YOUR_TELEGRAM_TOKEN")

      dispatcher = updater.dispatcher
      dispatcher.add_handler(CommandHandler("get_full_config", get_full_config))
      dispatcher.add_handler(CommandHandler("get_partial_config", get_partial_config))

      updater.start_polling()
      updater.idle()

  if __name__ == '__main__':
      main()
  ```

### Шаг 3: Запуск конфигураций

После переключения конфигурации не забудьте перезапустить интерфейс WireGuard, чтобы изменения вступили в силу. Это можно сделать через команды `wg-quick down wg0` и `wg-quick up wg0`, как показано в скрипте.

### Заключение

Такое решение позволит вам гибко управлять конфигурациями WireGuard и получать необходимые конфигурации через Telegram-бота. Убедитесь, что все конфигурации правильно настроены и тестируйте их во избежание проблем с сетевым подключением.
Похожие вопросы