2024-09-15 18:22:25 +08:00
# Wireguard
2024-12-04 20:09:54 +05:00
Реализация протокола Wireguard в пользовательском пространстве.
2024-09-15 18:22:25 +08:00
::: danger
2024-12-04 20:09:54 +05:00
**Протокол Wireguard не предназначен для обхода блокировок. Использование е г о на внешнем уровне может привести к блокировке сервера из-за характерных признаков.**
2024-09-15 18:22:25 +08:00
:::
## InboundConfigurationObject
```json
{
"secretKey": "PRIVATE_KEY",
"peers": [
{
"publicKey": "PUBLIC_KEY",
"allowedIPs":[""]
}
],
2024-12-04 20:09:54 +05:00
"mtu": 1420 // необязательно, по умолчанию 1420
2024-09-15 18:22:25 +08:00
}
```
> `secretKey`: string
2024-12-04 20:09:54 +05:00
Приватный ключ. Обязательное поле.
2024-09-15 18:22:25 +08:00
> `mtu`: int
2024-12-04 20:09:54 +05:00
Размер фрагментации уровня tun в Wireguard.
2024-09-15 18:22:25 +08:00
< details >
2024-12-04 20:09:54 +05:00
< summary > Метод расчета MTU< / summary >
2024-09-15 18:22:25 +08:00
2024-12-04 20:09:54 +05:00
Структура пакета Wireguard выглядит следующим образом:
2024-09-15 18:22:25 +08:00
```
2024-12-04 20:09:54 +05:00
- 20-байтный IPv4-заголовок или 40-байтный IPv6-заголовок
- 8-байтный UDP-заголовок
- 4 байта — тип
- 4 байта — индекс ключа
- 8 байт — nonce
- N байт — зашифрованные данные
- 16 байт — аутентификационный тег
2024-09-15 18:22:25 +08:00
```
2024-12-04 20:09:54 +05:00
```N байт — зашифрованные данные` `` — это и есть значение MTU, которое зависит от того, используется ли IPv4 или IPv6. Значение может быть 1440 (IPv4) или 1420 (IPv6). В особых условиях значение может быть дополнительно уменьшено (например, для PPPoE — минус 8 байт).
2024-09-15 18:22:25 +08:00
< / details >
> `peers`: \[ [Peers](#peers) \]
2024-12-04 20:09:54 +05:00
Список серверов peers, каждая запись представляет конфигурацию одного сервера.
2024-09-15 18:22:25 +08:00
### Peers
```json
{
"publicKey": "PUBLIC_KEY",
2024-12-04 20:09:54 +05:00
"allowedIPs": ["0.0.0.0/0"] // необязательно, по умолчанию ["0.0.0.0/0", "::/0"]
2024-09-15 18:22:25 +08:00
}
```
> `publicKey`: string
2024-12-04 20:09:54 +05:00
Публичный ключ для верификации.
2024-09-15 18:22:25 +08:00
> `allowedIPs`: string array
2024-12-04 20:09:54 +05:00
Разрешенные исходные IP-адреса.