Как настроить туннель между сервером WireGuard и сервером XTLS-Reality?

У меня два сервера: один расположен в России на WG, а второй — за пределами страны на 3X-UI. Я хочу использовать WG в качестве шлюза, чтобы сохранить удобство VPN с функциями, такими как доступ к домашнему NAS и удаленному рабочему столу, и при этом иметь выход в интернет. Я столкнулся с проблемой на этапе их объединения и не понимаю, почему мой конфигурационный файл для Reality отличается от примеров, найденных в интернете. Кроме того, есть ли версия клиента Xray для Ubuntu, не требующая графического интерфейса? Я не очень хорошо разбираюсь в командной строке и настраивал всё через веб-интерфейсы, поэтому мне сложно самостоятельно разобраться в деталях.
  • 29 августа 2024 г. 7:34
Ответы на вопрос 2
Чтобы настроить туннель между сервером WireGuard и сервером XTLS-Reality, вам потребуется выполнить несколько шагов. Сначала убедитесь, что оба сервера настроены правильно и могут обмениваться данными.

### Шаги по настройке туннеля:

1. **Установите WireGuard на сервере в России и настройте VPN:**
   Убедитесь, что сервер WireGuard работает и конфигурация правильно настроена. Например, вот базовый пример конфигурационного файла `/etc/wireguard/wg0.conf`:

   ```
   [Interface]
   Address = 10.0.0.1/24
   ListenPort = 51820
   PrivateKey = <ваш_приватный_ключ>

   [Peer]
   PublicKey = <публичный_ключ_клиента>
   AllowedIPs = 10.0.0.2/32
   ```

   Далее, создайте конфигурацию для клиента WireGuard на вашем клиентском устройстве, которое будет подключаться к этому серверу.

2. **Настройте XTLS-Reality на сервере X3-UI:**
   Ваша конфигурация для Xray (с XTLS) может выглядеть примерно так:

   ```json
   {
     "outbounds": [
       {
         "protocol": "vless",
         "settings": {
           "vnext": [
             {
               "address": "ваш_домен_или_IP_X3-UI",
               "port": 443,
               "users": [
                 {
                   "id": "<ваш_UUID>",
                   "encryption": "none"
                 }
               ]
             }
           ],
           "streamSettings": {
             "network": "tcp",
             "security": "xtls",
             "xtlsSettings": {
               "alpn": ["http/1.1"],
               "certificates": [
                 {
                   "certificateFile": "/path/to/cert.pem",
                   "keyFile": "/path/to/key.pem"
                 }
               ]
             }
           }
         }
       }
     ]
   }
   ```

   Убедитесь, что вы используете правильные значения для `id`, `address`, пути к сертификатам и других параметров.

3. **Настройте маршрутизацию:**
   Убедитесь, что ваш сервер X3-UI может обращаться к вашему серверу WireGuard через VPN. В этом случае возможно, что вам потребуется добавить маршрут на сервере X3-UI, чтобы указывать на адрес WireGuard в качестве шлюза.

4. **Проверьте соединение:**
   Используйте команды `ping` и `curl` на обеих машинах для тестирования соединения. Если ваш сервер X3-UI правильно настроен на использование WireGuard в качестве выхода в интернет, вы должны увидеть, что ваши запросы приходят через VPN.

### Клиент Xray для Ubuntu:

Для Linux, включая Ubuntu, вы можете использовать Xray без графического интерфейса. Для этого выполните следующие шаги:

1. **Скачайте и установите Xray:**
   Используйте команду `wget` чтобы скачать последнюю версию Xray. Пример:

   ```bash
   wget https://github.com/XTLS/Xray-core/releases/latest/download/xray-linux-64.zip
   ```

   Затем распакуйте файл:

   ```bash
   unzip xray-linux-64.zip
   ```

2. **Настройте конфигурацию:**
   Создайте конфигурационный файл в `/etc/xray/config.json` и добавьте туда вашу конфигурацию.

3. **Запуск Xray:**
   Вы можете запустить Xray с помощью команды:

   ```bash
   ./xray -config /etc/xray/config.json
   ```

   Для удобства вы можете создать systemd сервис, чтобы Xray запускался автоматически.

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

Эти шаги дают общее представление о конфигурации туннеля между WireGuard и XTLS-Reality. Обязательно проверьте официальную документацию по каждому инструменту для более подробной информации и устранения неполадок.
Для построения туннеля можно использовать Cloak, конфиги гораздо проще xray: 
root@test:~# cat /etc/cloak/cloak-server.json
{
  "ProxyBook": {
    "wireguard": [
      "udp",
      "127.0.0.1:12345"
    ]
  },
  "BindAddr": [
    ":443"
  ],
  "BypassUID": [
    "Lkpevo0X6lV5bn33Rl1QCQ=="
  ],
  "RedirAddr": "mail.google.com",
  "PrivateKey": "+EvmB2L2vKaLsh/ynQgJpyEzQ216Ec2c8svs7au+Y10="
}

root@test:~# cat /etc/cloak/cloak-client-wireguard.json
{
  "Transport": "direct",
  "ProxyMethod": "wireguard",
  "EncryptionMethod": "plain",
  "UID": "Lkpevo0X6lV5bn33Rl1QCQ==",
  "PublicKey": "+GTHXOFTYJhRM4+xv9q+ZjSykSIMOLffIs8qJN/4V2Y=",
  "ServerName": "mail.google.com",
  "NumConn": 4,
  "BrowserSig": "chrome",
  "StreamTimeout": 300
}


На сервере, на внешнем интерфейсе, закрываем подключения к порту UDP:12345 средствами iptables или другими сетевыми фильтрами.
На клиенте запускаем:
cloak-client.exe -u -c C:\Windows\System32\cloak-client-wireguard.json -i 127.0.0.1 -l 12345 -s example.com -p 443

На клиенте WG настраиваем подключение на адрес прослушиваемый нашим Cloak-Client: 127.0.0.1:12345
То есть при данной схеме UDP трафик WG упаковывается в туннель TCP предоставляемый средствами cloak.
Если сработает блокировка, можно включить шифрование в конфиге cloak-client:
root@test:~# cat /etc/cloak/cloak-client-wireguard.json
{
  "Transport": "direct",
  "ProxyMethod": "wireguard",
  "EncryptionMethod": "aes-256-gcm",
  "UID": "Lkpevo0X6lV5bn33Rl1QCQ==",
  "PublicKey": "+GTHXOFTYJhRM4+xv9q+ZjSykSIMOLffIs8qJN/4V2Y=",
  "ServerName": "mail.google.com",
  "NumConn": 4,
  "BrowserSig": "chrome",
  "StreamTimeout": 300
}
Похожие вопросы