RU sync docs (#723)

* RU Docker: Add ghcr.io/xtls/xray-core

* RU Sockopt: add happyEyeballs

* RU Update transport.md

* RU DNS: Add new nonIPQuery "reject"

* RU add DNS new features/add tips about localhost DNS

* RU TLS: Correct desc of cert hot realod

* RU Inbound: Add ports warning
dependabot/npm_and_yarn/mermaid-11.7.0
Nikita Korotaev 2025-07-18 21:21:26 +03:00 committed by GitHub
parent 673780fd23
commit 0bd1b0f83d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 134 additions and 18 deletions

View File

@ -74,6 +74,7 @@ DNS-запросы, отправляемые встроенным DNS-серве
"disableCache": false,
"disableFallback": false,
"disableFallbackIfMatch": false,
"useSystemHosts": false,
"tag": "dns_inbound"
}
}
@ -141,10 +142,12 @@ DNS-запросы, отправляемые встроенным DNS-серве
Вы можете указать `clientIp` для всех DNS-серверов в [DnsObject](#dnsobject), а также указать `clientIp` для каждого DNS-сервера в конфигурации [DnsServerObject](#dnsserverobject) (приоритет выше, чем у конфигурации [DnsObject](#dnsobject)).
:::
> `queryStrategy`: "UseIP" | "UseIPv4" | "UseIPv6"
> `queryStrategy`: "UseIP" | "UseIPv4" | "UseIPv6" | "UseSystem"
Значение по умолчанию `UseIP` запрашивает как записи A, так и записи AAAA. `UseIPv4` запрашивает только записи A; `UseIPv6` запрашивает только записи AAAA.
`UseSystem`: при каждом DNS-запросе выполняется проверка системной сети на предмет поддержки IPv6 (и IPv4). Если она поддерживает IPv6 (или IPv4), то адреса IPv6 (или IPv4) также возвращаются, в противном случае — нет.
Новая функция в Xray-core v1.8.6: `queryStrategy` можно установить отдельно для каждого `DNS` сервера.
```json
@ -210,6 +213,8 @@ DNS-запросы, отправляемые встроенным DNS-серве
`true` отключает кэширование DNS, по умолчанию `false`, то есть кэширование включено.
Этот параметр не влияет на DNS для `localhost`, который всегда использует системный кэш DNS.
> `disableFallback`: true | false
`true` отключает откат DNS-запросов (fallback), по умолчанию `false`, то есть откат включен.
@ -218,6 +223,10 @@ DNS-запросы, отправляемые встроенным DNS-серве
`true` отключает откат DNS-запросов (fallback), если сработал список доменов с приоритетным сопоставлением для DNS-сервера, по умолчанию `false`, то есть откат включен.
> `useSystemHosts`: true | false
Если установлено значение `true`, системные хосты добавляются к хостам, определённым в конфигурации, при запуске. Значение по умолчанию — `false`.
> `tag`: string
Трафик запросов, отправляемых встроенным DNS, за исключением режимов `localhost`, `fakedns`, `TCPL`, `DOHL` и `DOQL`, можно сопоставить в маршрутизации с помощью `inboundTag` по этому тегу.
@ -231,10 +240,14 @@ DNS-запросы, отправляемые встроенным DNS-серве
"port": 5353,
"domains": ["domain:xray.com"],
"expectedIPs": ["geoip:cn"],
"unexpectedIPs": ["geoip:cloudflare"],
"skipFallback": false,
"clientIP": "1.2.3.4",
"queryStrategy": "UseIPv4",
"tag": "server-1",
"timeoutMs": 4000,
"allowUnexpectedIPs": false
"disableCache": false,
"finalQuery": false,
}
```
@ -290,14 +303,41 @@ DNS-запросы, отправленные модулем DNS, делятся
Если этот элемент не настроен, IP-адреса будут возвращены как есть.
если вы добавите "*" в этот список, исходные IP-адреса все равно будут возвращены, если ни один IP-адрес не совпадет.
> `unexpectedIPs`: [\[string\]
Противоположность `expectedIPs`. IP-адрес считается совпавшим тогда и только тогда, когда он не совпадает ни с одним из диапазонов IP-адресов в списке. Другими словами:
`expectedIPs = [0.0.0.0/0, ::/0] - unexpectedIPs.`
если вы добавите "*" в этот список, исходные IP-адреса все равно будут возвращены, если ни один IP-адрес не совпадет.
> `skipFallback`: true | false
`true` - этот сервер будет пропущен при выполнении отката DNS-запроса (fallback), по умолчанию `false`, то есть сервер не будет пропущен.
> `finalQuery`: true | false
Если `true`, результат запроса возвращается в любом случае (даже если список IP-адресов пуст), и никакой другой запасной вариант (fallback) не будет выполнен.
> `disableCache`: true | false
Если `true`, кеш отключается только для этого DNS-сервера.
Этот параметр не влияет на DNS для `localhost`, который всегда использует системный кеш DNS.
> `timeoutMs`: number
Время ожидания DNS-сервера, по умолчанию 4000 мс.
Тайм-аут DNS-сервера, по умолчанию 4000 мс.
> `allowUnexpectedIPs`: bool
Этот параметр не влияет на DNS для `localhost`, который всегда использует системный тайм-аут DNS.
Если включено: когда `expectedIPs` завершит фильтрацию IP-адресов, и если все IP-адреса были отфильтрованы как не соответствующие условиям, то все равно вернуть IP-адреса. В противном случае запрос считается неудачным.
> `tag`: string
Тег этого DNS-сервера. Если он установлен, то будет использоваться как тег входящего соединения для инициации запроса (в нелокальном режиме), переопределяя глобальный параметр тега.
> `queryStrategy`: "UseIP" | "UseIPv4" | "UseIPv6" | "UseSystem"
`UseIPv4` запрашивает только записи A; `UseIPv6` запрашивает только записи AAAA. Значение по умолчанию — `UseIP`, которое запрашивает и A, и AAAA записи.
`UseSystem`: при каждом DNS-запросе выполняется проверка системной сети на предмет поддержки IPv6 (и IPv4). Если поддерживается IPv6 (или IPv4), то адреса IPv6 (или IPv4) также возвращаются, в противном случае — нет.

View File

@ -62,6 +62,8 @@
Если указан только один порт, Xray будет прослушивать входящие подключения на этом порту.
Если указан диапазон портов, то фактическое поведение зависит от настройки `allocate`.
Обратите внимание, что прослушивание порта — это довольно ресурсоемкая операция. Прослушивание слишком большого диапазона портов может привести к значительному увеличению потребляемых ресурсов и даже нарушить нормальную работу Xray. Как правило, проблемы могут начаться, когда количество прослушиваемых портов приближается к четырехзначным числам. Если вам нужен большой диапазон, рассмотрите возможность использования iptables для перенаправления вместо того, чтобы настраивать его здесь.
> `protocol`: "dokodemo-door" | "http" | "shadowsocks" | "mixed" | "vless" | "vmess" | "trojan" | "wireguard"
Название протокола подключения.

View File

@ -32,7 +32,9 @@ DNS — это исходящий протокол, который в основ
> `nonIPQuery`: string
Управляет запросами, не относящимися к IP-адресам (не A и AAAA). `"drop"` — отклонять, `"skip"` — не обрабатывать встроенным DNS-сервером, а пересылать на целевой сервер. Значение по умолчанию — `"drop"`.
Управляет запросами, не относящимися к IP-адресам (не A и AAAA). `"drop"` — отклонять, `"skip"` — не обрабатывать встроенным DNS-сервером, а пересылать на целевой сервер. В отличие от `"drop"`, это позволяет избежать ситуации, когда приложение тратит слишком много времени в ожидании ответа DNS до тайм-аута.
Значение по умолчанию — `"drop"`.
> `blockTypes`: array
@ -40,4 +42,6 @@ DNS — это исходящий протокол, который в основ
Поскольку `nonIPQuery` по умолчанию отклоняет все запросы, не относящиеся к A и AAAA, необходимо установить для него значение `skip`, чтобы этот параметр заработал. Конечно, можно и не менять, а использовать его только для блокировки запросов A или AAAA, чтобы блокировать запросы IPv4/IPv6, но это крайне не рекомендуется. Рекомендуется настроить соответствующие параметры в `queryStrategy` встроенного DNS-сервера.
Примечание: когда `blockTypes` используется только для блокировки A или AAAA, если `nonIPQuery` установлен в `reject`, то способом блокировки также будет возврат DNS reject, а не отбрасывание запроса.
## Примеры конфигурации DNS <Badge text="В РАЗРАБОТКЕ" type="warning"/>

View File

@ -27,6 +27,7 @@
"tcpFastOpen": false,
"tproxy": "off",
"domainStrategy": "AsIs",
"happyEyeballs": {},
"dialerProxy": "",
"acceptProxyProtocol": false,
"tcpKeepAliveInterval": 0,
@ -105,7 +106,7 @@ Reality — это самое безопасное на данный момен
```json
{
"serverName": "xray.com",
"serverNameToVerify": "",
"verifyPeerCertInNames": "",
"rejectUnknownSni": false,
"allowInsecure": false,
"alpn": ["h2", "http/1.1"],
@ -134,9 +135,11 @@ Reality — это самое безопасное на данный момен
В частности, если клиент устанавливает его в IP-адрес, Xray не будет отправлять SNI, и для использования этой функции также необходимо включить `allowInsecure`.
:::
> `serverNameToVerify`: string
> `verifyPeerCertInNames`: \[ string \]
Только для клиента. Используется для проверки SNI сертификата, переопределяя `serverName`, используемый для проверки. Предназначен для таких специальных целей, как domain fronting. Более безопасен, чем изменение `serverName` и включение `allowInsecure`, так как по-прежнему выполняется проверка подписи сертификата. Однако это эксклюзивная функция utls, требующая настройки `fingerprint` для активации utls.
Только для клиента. Список SNI, используемый для проверки сертификата (достаточно, чтобы хотя бы один SAN из сертификата находился в этом списке). Этот список переопределит `serverName`, который используется для проверки, и предназначен для особых целей, таких как domain fronting. По сравнению с предыдущим методом изменения `serverName` и включения `allowInsecure`, этот способ более безопасен, так как он по-прежнему выполняет проверку подписи сертификата.
Специальное значение `"FromMitM"`: при его использовании в список будет дополнительно добавлен SNI из TLS-трафика, расшифрованного входящим соединением `dokodomo-door`.
> `rejectUnknownSni`: bool
@ -146,6 +149,8 @@ Reality — это самое безопасное на данный момен
Массив строк, указывающий значения ALPN, указанные во время рукопожатия TLS. Значение по умолчанию: `["h2", "http/1.1"]`.
Специальное значение: `["FromMitM"]` (когда это единственный элемент) заставит исходящий TLS использовать ALPN из TLS-соединения, расшифрованного входящим `dokodemo-door`.
> `minVersion`: string
`minVersion` — это минимально допустимая версия TLS.
@ -439,7 +444,7 @@ Reality лишь модифицирует TLS, и для реализации н
```json
{
"ocspStapling": 3600,
"ocspStapling": 0,
"oneTimeLoading": false,
"usage": "encipherment",
"buildChain": false,
@ -496,15 +501,18 @@ Reality лишь модифицирует TLS, и для реализации н
}
```
Сертификат сервера будет автоматически перезагружаться каждые 3600 секунд (то есть каждый час).
> `ocspStapling`: number
Интервал обновления OCSP-скрепления, совпадает с интервалом перезагрузки сертификата. Единица измерения: секунды. Значение по умолчанию: `3600`, то есть один час.
Интервал обновления OCSP Stapling в секундах, по умолчанию 0. Любое ненулевое значение включит OCSP Stapling и переопределит время горячей перезагрузки сертификата по умолчанию в 3600 секунд (OCSP Stapling выполняется во время перезагрузки).
> `oneTimeLoading`: true | false
Загружать только один раз. Если значение равно `true`, то функция горячей перезагрузки сертификата и функция OCSP-скрепления будут отключены.
Загружать только один раз, по умолчанию `false`. Если значение `true`, функции горячей перезагрузки сертификата и OCSP Stapling будут отключены.
::: warning
Если значение равно `true`, то OCSP-скрепление будет отключено.
Если значение равно `true`, то OCSP-Stapling будет отключено.
:::
> `usage`: "encipherment" | "verify" | "issue"
@ -573,6 +581,7 @@ Reality лишь модифицирует TLS, и для реализации н
"tproxy": "off",
"domainStrategy": "AsIs",
"dialerProxy": "",
"happyEyeballs": {},
"acceptProxyProtocol": false,
"tcpKeepAliveInterval": 0,
"tcpKeepAliveIdle": 300,
@ -824,3 +833,39 @@ PS: Если трафик домена, например, обычный веб-
Значение, которое нужно установить для опции. В примере устанавливается значение bbr.
Если `type` указан как int, значение должно быть десятичным числом.
> `happyEyeballs`: {}
Реализация happyEyeballs по RFC-8305 применима только к TCP. Когда целью является доменное имя, она запускает "гонку" между IP-адресами и выбирает первый, с которым удалось установить соединение. Это работает, когда `domainStrategy` установлен на `UseIP`/`ForceIP` (включая их v4/v6/v4v6 версии, но это сокращает список доступных IP-адресов только до v4 или v6, что не рекомендуется).
::: warning
При использовании этой функции не используйте `domainStrategy` для исходящего соединения `Freedom`, так как это приведет к тому, что `Sockopt` будет видеть только конечный, уже выбранный IP-адрес.
:::
```json
"happyEyeballs": {
"tryDelayMs": 250,
"prioritizeIPv6": false,
"interleave": 1,
"maxConcurrentTry": 4,
}
```
> `tryDelayMs`: number
Интервал времени между каждым запросом "гонки", в миллисекундах. По умолчанию 0 (что означает, что функция отключена), рекомендуемое значение — 250.
> `prioritizeIPv6`: bool
Тип первого IP-адреса при сортировке IP-адресов. По умолчанию `false` (то есть IPv4 будет первым).
> `interleave`: number
"First Address Family count" из RFC-8305, значение по умолчанию — 1. Этот параметр определяет чередование при сортировке IP-адресов разных версий.
Например, очередь IP-адресов для набора номера будет отсортирована как 46464646 (при значении 1) или 44664466 (при значении 2) (где 6 — это IPv6-адрес, а 4 — IPv4-адрес).
> `maxConcurrentTry`: number
Максимальное количество одновременных попыток. Используется для предотвращения ситуации, когда ядро создает большое количество соединений, если разрешено много IP-адресов и ни одно из соединений не увенчалось успехом. По умолчанию 4, установка значения 0 отключает happyEyeballs.

View File

@ -81,14 +81,39 @@ Xray предлагает два способа проверки:
## Установка с помощью Docker
- [teddysun/xray](https://hub.docker.com/r/teddysun/xray)
- [teddysun/xray](https.hub.docker.com/r/teddysun/xray) Имеет root-права, есть оболочка (shell), совместим со всеми архитектурами, поддерживаемыми Alpine. Скомпилирован и собран на частном сервере dl.lamp.sh. Более удобен в использовании.
- [ghcr.io/xtls/xray-core](https.ghcr.io/xtls/xray-core) Не имеет root-прав, нет оболочки (shell), поддерживает большее количество архитектур. Скомпилирован и собран из официального репозитория с поддержкой отслеживания. Удобство принесено в жертву ради более высокой безопасности.
### Файловая структура образа Docker
- `/etc/xray/config.json`: файл конфигурации;
- `/usr/bin/xray`: основная программа Xray;
- `/usr/share/xray/geoip.dat`: файл данных IP;
- `/usr/share/xray/geosite.dat`: файл данных доменных имен.
Образ версии teddysun/xray:
- `/usr/bin/xray`: Основная программа Xray
- `/etc/xray/config.json`: Единый конфигурационный файл (каталог, в котором он находится, является точкой монтирования)
- `/usr/share/xray/`: Каталог с файлами ресурсов, содержит файлы геолокационных данных от v2fly
- geoip.dat
- geosite.dat
Образ версии ghcr.io/xtls/xray-core:
- `/usr/local/bin/xray`: Основная программа Xray (владелец root:root, права доступа к файлу 755)
- `/usr/local/etc/xray/`: Каталог конфигурационных файлов (точка монтирования) (владелец каталога root:root, права доступа к каталогу 755, права доступа к файлам 644)
- 01_api.json
- 02_dns.json
- 03_routing.json
- 04_policy.json
- 05_inbounds.json
- 06_outbounds.json
- 07_transport.json
- 08_stats.json
- 09_reverse.json
- `/usr/local/share/xray/`: Каталог с файлами ресурсов, содержит файлы геолокационных данных от Loyalsoldier (права доступа те же, что и выше)
- geoip.dat
- geosite.dat
- `/var/log/xray/`: Каталог лог-файлов (точка монтирования) (владелец каталога root:root, права доступа 755; владелец файлов 65532:65532, права доступа 600)
- access.log
- error.log
# Графические клиенты