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

View File

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

View File

@ -27,6 +27,7 @@
"tcpFastOpen": false, "tcpFastOpen": false,
"tproxy": "off", "tproxy": "off",
"domainStrategy": "AsIs", "domainStrategy": "AsIs",
"happyEyeballs": {},
"dialerProxy": "", "dialerProxy": "",
"acceptProxyProtocol": false, "acceptProxyProtocol": false,
"tcpKeepAliveInterval": 0, "tcpKeepAliveInterval": 0,
@ -105,7 +106,7 @@ Reality — это самое безопасное на данный момен
```json ```json
{ {
"serverName": "xray.com", "serverName": "xray.com",
"serverNameToVerify": "", "verifyPeerCertInNames": "",
"rejectUnknownSni": false, "rejectUnknownSni": false,
"allowInsecure": false, "allowInsecure": false,
"alpn": ["h2", "http/1.1"], "alpn": ["h2", "http/1.1"],
@ -134,9 +135,11 @@ Reality — это самое безопасное на данный момен
В частности, если клиент устанавливает его в IP-адрес, Xray не будет отправлять SNI, и для использования этой функции также необходимо включить `allowInsecure`. В частности, если клиент устанавливает его в 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 > `rejectUnknownSni`: bool
@ -146,6 +149,8 @@ Reality — это самое безопасное на данный момен
Массив строк, указывающий значения ALPN, указанные во время рукопожатия TLS. Значение по умолчанию: `["h2", "http/1.1"]`. Массив строк, указывающий значения ALPN, указанные во время рукопожатия TLS. Значение по умолчанию: `["h2", "http/1.1"]`.
Специальное значение: `["FromMitM"]` (когда это единственный элемент) заставит исходящий TLS использовать ALPN из TLS-соединения, расшифрованного входящим `dokodemo-door`.
> `minVersion`: string > `minVersion`: string
`minVersion` — это минимально допустимая версия TLS. `minVersion` — это минимально допустимая версия TLS.
@ -439,7 +444,7 @@ Reality лишь модифицирует TLS, и для реализации н
```json ```json
{ {
"ocspStapling": 3600, "ocspStapling": 0,
"oneTimeLoading": false, "oneTimeLoading": false,
"usage": "encipherment", "usage": "encipherment",
"buildChain": false, "buildChain": false,
@ -496,15 +501,18 @@ Reality лишь модифицирует TLS, и для реализации н
} }
``` ```
Сертификат сервера будет автоматически перезагружаться каждые 3600 секунд (то есть каждый час).
> `ocspStapling`: number > `ocspStapling`: number
Интервал обновления OCSP-скрепления, совпадает с интервалом перезагрузки сертификата. Единица измерения: секунды. Значение по умолчанию: `3600`, то есть один час. Интервал обновления OCSP Stapling в секундах, по умолчанию 0. Любое ненулевое значение включит OCSP Stapling и переопределит время горячей перезагрузки сертификата по умолчанию в 3600 секунд (OCSP Stapling выполняется во время перезагрузки).
> `oneTimeLoading`: true | false > `oneTimeLoading`: true | false
Загружать только один раз. Если значение равно `true`, то функция горячей перезагрузки сертификата и функция OCSP-скрепления будут отключены. Загружать только один раз, по умолчанию `false`. Если значение `true`, функции горячей перезагрузки сертификата и OCSP Stapling будут отключены.
::: warning ::: warning
Если значение равно `true`, то OCSP-скрепление будет отключено. Если значение равно `true`, то OCSP-Stapling будет отключено.
::: :::
> `usage`: "encipherment" | "verify" | "issue" > `usage`: "encipherment" | "verify" | "issue"
@ -573,6 +581,7 @@ Reality лишь модифицирует TLS, и для реализации н
"tproxy": "off", "tproxy": "off",
"domainStrategy": "AsIs", "domainStrategy": "AsIs",
"dialerProxy": "", "dialerProxy": "",
"happyEyeballs": {},
"acceptProxyProtocol": false, "acceptProxyProtocol": false,
"tcpKeepAliveInterval": 0, "tcpKeepAliveInterval": 0,
"tcpKeepAliveIdle": 300, "tcpKeepAliveIdle": 300,
@ -824,3 +833,39 @@ PS: Если трафик домена, например, обычный веб-
Значение, которое нужно установить для опции. В примере устанавливается значение bbr. Значение, которое нужно установить для опции. В примере устанавливается значение bbr.
Если `type` указан как int, значение должно быть десятичным числом. Если `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 ## Установка с помощью 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 ### Файловая структура образа Docker
- `/etc/xray/config.json`: файл конфигурации;
- `/usr/bin/xray`: основная программа Xray; Образ версии teddysun/xray:
- `/usr/share/xray/geoip.dat`: файл данных IP;
- `/usr/share/xray/geosite.dat`: файл данных доменных имен. - `/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
# Графические клиенты # Графические клиенты