Организация нескольких конфигураций для 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-бота. Убедитесь, что все конфигурации правильно настроены и тестируйте их во избежание проблем с сетевым подключением.