mirror of https://github.com/ospab/ostp.git
74 lines
5.6 KiB
Markdown
74 lines
5.6 KiB
Markdown
# OSTP DNS Transport (Последний Рубеж)
|
||
|
||
DNS Transport (DNS Прокси) — это экспериментальный транспорт, который является "последним рубежом" для обхода блокировок. Он используется, когда все остальные протоколы (UDP, UoT/TCP) полностью заблокированы провайдером или DPI.
|
||
|
||
Он маскирует весь VPN-трафик под обычные запросы к DNS-серверам (разрешение имен), что делает его блокировку практически невозможной без отключения интернета в целом. OSTP использует запросы типа `TXT` и `NULL` для передачи данных, используя кодировку Base32.
|
||
|
||
> **Внимание:** DNS-туннелирование работает значительно медленнее обычных протоколов из-за накладных расходов протокола DNS. Рекомендуется использовать этот режим только когда другие способы не работают.
|
||
|
||
## Как это работает?
|
||
|
||
Вместо того чтобы отправлять трафик напрямую на ваш сервер, клиент OSTP отправляет стандартный DNS-запрос на **публичные DNS-серверы** (например, 1.1.1.1, 8.8.8.8) или серверы выбранного вами региона (Prober).
|
||
Публичный сервер-резолвер перенаправляет этот запрос на **ваш сервер** (как на авторитативный DNS-сервер для вашего домена), а ваш сервер отвечает обратно через резолвер.
|
||
|
||
Для настройки этого механизма **вам понадобится собственный домен**.
|
||
|
||
---
|
||
|
||
## Настройка на стороне сервера (Домен)
|
||
|
||
Вам необходимо настроить NS-записи вашего домена так, чтобы они указывали на IP-адрес вашего OSTP сервера.
|
||
|
||
Например, вы владеете доменом `myvpn.com` и хотите использовать поддомен `t.myvpn.com` для туннеля, а IP вашего сервера — `192.168.1.100`.
|
||
|
||
В панели управления вашего DNS-регистратора добавьте следующие записи:
|
||
|
||
1. **A-запись:**
|
||
- Имя (Host): `ns.myvpn.com`
|
||
- Тип (Type): `A`
|
||
- Значение (Value): `192.168.1.100` (IP вашего OSTP-сервера)
|
||
|
||
2. **NS-запись:**
|
||
- Имя (Host): `t.myvpn.com`
|
||
- Тип (Type): `NS`
|
||
- Значение (Value): `ns.myvpn.com`
|
||
|
||
Теперь любой DNS-запрос к поддоменам `t.myvpn.com` будет направляться на ваш сервер (на порт 53).
|
||
|
||
---
|
||
|
||
## Настройка сервера OSTP
|
||
|
||
В файле конфигурации вашего OSTP сервера (`config.json` или `server.json`) необходимо включить прослушивание порта 53 для DNS транспорта:
|
||
|
||
```json
|
||
{
|
||
"mode": "server",
|
||
"dns_transport": {
|
||
"enabled": true,
|
||
"port": 53,
|
||
"domain": "t.myvpn.com"
|
||
}
|
||
}
|
||
```
|
||
|
||
> **Важно:** Для прослушивания порта 53 на Linux обычно требуются root-права. Убедитесь, что сервер запущен с `sudo` или используйте возможности `setcap` для предоставления доступа к порту:
|
||
> `sudo setcap cap_net_bind_service=+ep /path/to/ostp`
|
||
|
||
---
|
||
|
||
## Настройка в приложении (Клиент)
|
||
|
||
В клиенте OSTP (Desktop GUI или Mobile):
|
||
|
||
1. Перейдите в **Settings (Настройки)**.
|
||
2. В поле **Transport Protocol** выберите `DNS Proxy (Последний рубеж)`.
|
||
3. Появится поле **Domain (Points to Server)** — введите сюда настроенный поддомен (например, `t.myvpn.com`).
|
||
4. Поле **DNS Resolver Region** позволяет выбрать, через серверы какой страны/провайдера будет осуществляться маршрутизация пакетов (например, Global, Russia, China, Iran). Клиент (Prober) автоматически найдет наиболее быстрый публичный резолвер в этом регионе.
|
||
|
||
## Ограничения и особенности
|
||
|
||
- **Скорость:** Из-за размера DNS-пакетов и задержек публичных серверов, максимальная скорость может составлять 1-5 Мбит/с.
|
||
- **Polling:** Поскольку DNS работает по принципу "Запрос-Ответ", клиент отправляет пустые поллинговые пакеты каждые 2 секунды, чтобы позволить серверу пересылать входящие данные.
|
||
- **Поддержка DoH/DoT:** В текущей версии запросы к публичным резолверам отправляются в открытом виде (UDP порт 53). В будущих обновлениях будет добавлена поддержка DNS over HTTPS (DoH) для дополнительного слоя защиты от DPI-фильтров.
|