Nikita Korotaev 19006b7cd7
RU WG inbound/outbound (#616)
* upd wg inbound

* upd wg outbound

* change WIP badge
2024-12-04 20:09:54 +05:00

70 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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