diff --git a/docs/en/development/intro/compile.md b/docs/en/development/intro/compile.md index 6ddee357..9002a5e9 100644 --- a/docs/en/development/intro/compile.md +++ b/docs/en/development/intro/compile.md @@ -78,13 +78,13 @@ Run `go tool dist list` to view all supported systems and architectures. Use the following command to build (`` should be replaced with the first seven characters of the corresponding commit SHA-256): ```bash -CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -gcflags="all=-l=4" -ldflags="-X [github.com/xtls/xray-core/core.build=](https://github.com/xtls/xray-core/core.build=) -s -w -buildid=" -v ./main +CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -gcflags="all=-l=4" -ldflags="-X github.com/xtls/xray-core/core.build= -s -w -buildid=" -v ./main ``` For MIPS/MIPSLE architectures, you should use: ```bash -CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -gcflags="-l=4" -ldflags="-X [github.com/xtls/xray-core/core.build=](https://github.com/xtls/xray-core/core.build=) -s -w -buildid=" -v ./main +CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -gcflags="-l=4" -ldflags="-X github.com/xtls/xray-core/core.build= -s -w -buildid=" -v ./main ``` ::: warning diff --git a/docs/en/document/level-0/ch05-webpage.md b/docs/en/document/level-0/ch05-webpage.md index 7500c905..6a3ff825 100644 --- a/docs/en/document/level-0/ch05-webpage.md +++ b/docs/en/document/level-0/ch05-webpage.md @@ -95,9 +95,16 @@ Now for the second question: ```html + Enter a title, displayed at the top of the window. +

Enter the main heading, usually the same as the title.

@@ -110,21 +117,21 @@ Now for the second question:

Improve your image by including an image.

A Great HTML Resource

Add a link to your favorite - Web site. Break up your page with a horizontal rule or two. + Web site. Break up your + page with a horizontal rule or two.


Finally, link to another page in your own Web site.

+

© Wiley Publishing, 2011

diff --git a/docs/en/document/level-0/ch06-certificates.md b/docs/en/document/level-0/ch06-certificates.md index 16e08bf2..45d8a40e 100644 --- a/docs/en/document/level-0/ch06-certificates.md +++ b/docs/en/document/level-0/ch06-certificates.md @@ -86,7 +86,26 @@ Before officially applying for a certificate, let's use a test command (`--issue sxlYqPvWreKgD5b8JyOQX0Yg2MLoRUoDyqVkd31PthIiwzdckoh5eD3JU7ysYBtN cTFK4LGOfjqi8Ks87EVJdK9IaSAu7ZC6h5to0eqpJ5PLhaM3e6yJBbHmYA8w1Smp wAb3tdoHZ9ttUIm9CrSzvDBt6BBT6GqYdDamMyCYBLooMyDEM4CUFsOzCRrEqqvC - ... (omitted for brevity) ... + 2mTTEmhvpojo5rhdTSJxibozyNWTGwoTj0v9pTUeQcGqLIzqi4DowjBHD5guwRid + SjAFnm6JT2xUQgWFm58A1gv1OhbH1TRPUUmtE1nFEN7YiSjI4xgxqAXT3CLD2EUb + wXlUrO6c75zSsQP4bRMzgOjJUqHtSb6IEqELzt4M7KzL5iCOruCChCo2DZxUwvVX + tOoaAyQJzCbTqE6aUqwiKi3gVyoxvDP9mI5JdRYzsDL6GVud7EHPnYeMl9ubLZAK + 0vg84mbMP3f6mYM4KRa1cqiyOIcQPT4AzGFYVv4sm049bZQg7sd0Bz9CaFvE7yDA + 1y17XlgCDnsjxl66bqI1vkENN9XT5xeFHONqc18b5fZEKSIvdX7iWPFWp1PyMPpG + 0pMCP1EymZNFxIMJLgbWqExwLWfPc5Ib3PjBaIqhXPnw6sT2MQSxXwDupq1UJVhV + 7E3hQRVlwI4CXi6WLHJMNvNRyyK87gCrLH1bKYsPeRVaz77poWBq49zwBCts6hPY + IeF4ltGXyANNIOPEi8vy138fRU4LYh81d8FjOtFfJZogMjwhfNvapqxPMsioPlmX + TnZu0n7setrVNUEfTMHWqPpDgk5MPrWLA4LapqaDfEX4pwnQJLMwMi6s94z165c0 + iMRSKA1yU5zqv8aNsDfPoY4OkSPWs4MaXgRRSLBsUfZ15DwQXPk76kegHIyxWvwF + tYw9HKR5QCMK66fa0z4aJoFVFLK0IIOGEZOanRFUCnkLUDd3QZ3YU8lEcrj7Uxos + haiRNICyC6UfsCJ94a8vcNyMosPv3xBLMp19WXgiFYqEFQkntkv1FLRI35fjeJmg + 0fmD9VG9bkzGPHihJgQLRlCHasGf6XrdfkSsODAyCUHUHJ0RzqF4YEZMcxDxzuQ2 + YO7bFwj7S3mUdVPZ6MPasjxdyBjJgEBMch2uy4AhmudXfEBQBye8W6ZI4ztZjLVV + FmP4SIuaNUmMe20TjR8b9NVC96AhxOanWT3mRROsdokpKQGTJvl27EHH8KuAbUOc + G6KtPy4wslNZNXWcBy9n63RcWak12r7kAIFn38tZxmlw2WUKoRSMAH64GcDTjRQd + Am65hBHzvGrj93wEuVNIebvNIsJOlng3HFjpIxVqKGMCIfWIKGDE3YzK3p4LbGZ6 + NZFQWYJLNVf2M9CCJfbEImPYgvctrxl39H6KVYPCw1SAdaj9NneUqmREOQkKoEB0 + x6PmNirbMscHhQPSC0JQaqUgaQFgba1ALmzRYAnYhNb0twkTxWbY7DBkAarxqMIp yiLKcBFc5H7dgJCImo7us7aJeftC44uWkPIjw9AKH= --END CERTIFICAT-- [Wed 30 Dec 2022 15:21:52 AM EST] Your cert is in /home/vpsadmin/.acme.sh/subdomain.yourdomain.com_ecc/subdomain.yourdomain.com.cer @@ -145,7 +164,27 @@ Before officially applying for a certificate, let's use a test command (`--issue --BEGIN CERTIFICAT-- sxlYqPvWreKgD5b8JyOQX0Yg2MLoRUoDyqVkd31PthIiwzdckoh5eD3JU7ysYBtN cTFK4LGOfjqi8Ks87EVJdK9IaSAu7ZC6h5to0eqpJ5PLhaM3e6yJBbHmYA8w1Smp - ... (omitted for brevity) ... + wAb3tdoHZ9ttUIm9CrSzvDBt6BBT6GqYdDamMyCYBLooMyDEM4CUFsOzCRrEqqvC + 2mTTEmhvpojo5rhdTSJxibozyNWTGwoTj0v9pTUeQcGqLIzqi4DowjBHD5guwRid + SjAFnm6JT2xUQgWFm58A1gv1OhbH1TRPUUmtE1nFEN7YiSjI4xgxqAXT3CLD2EUb + wXlUrO6c75zSsQP4bRMzgOjJUqHtSb6IEqELzt4M7KzL5iCOruCChCo2DZxUwvVX + tOoaAyQJzCbTqE6aUqwiKi3gVyoxvDP9mI5JdRYzsDL6GVud7EHPnYeMl9ubLZAK + 0vg84mbMP3f6mYM4KRa1cqiyOIcQPT4AzGFYVv4sm049bZQg7sd0Bz9CaFvE7yDA + 1y17XlgCDnsjxl66bqI1vkENN9XT5xeFHONqc18b5fZEKSIvdX7iWPFWp1PyMPpG + 0pMCP1EymZNFxIMJLgbWqExwLWfPc5Ib3PjBaIqhXPnw6sT2MQSxXwDupq1UJVhV + 7E3hQRVlwI4CXi6WLHJMNvNRyyK87gCrLH1bKYsPeRVaz77poWBq49zwBCts6hPY + IeF4ltGXyANNIOPEi8vy138fRU4LYh81d8FjOtFfJZogMjwhfNvapqxPMsioPlmX + TnZu0n7setrVNUEfTMHWqPpDgk5MPrWLA4LapqaDfEX4pwnQJLMwMi6s94z165c0 + iMRSKA1yU5zqv8aNsDfPoY4OkSPWs4MaXgRRSLBsUfZ15DwQXPk76kegHIyxWvwF + tYw9HKR5QCMK66fa0z4aJoFVFLK0IIOGEZOanRFUCnkLUDd3QZ3YU8lEcrj7Uxos + haiRNICyC6UfsCJ94a8vcNyMosPv3xBLMp19WXgiFYqEFQkntkv1FLRI35fjeJmg + 0fmD9VG9bkzGPHihJgQLRlCHasGf6XrdfkSsODAyCUHUHJ0RzqF4YEZMcxDxzuQ2 + YO7bFwj7S3mUdVPZ6MPasjxdyBjJgEBMch2uy4AhmudXfEBQBye8W6ZI4ztZjLVV + FmP4SIuaNUmMe20TjR8b9NVC96AhxOanWT3mRROsdokpKQGTJvl27EHH8KuAbUOc + G6KtPy4wslNZNXWcBy9n63RcWak12r7kAIFn38tZxmlw2WUKoRSMAH64GcDTjRQd + Am65hBHzvGrj93wEuVNIebvNIsJOlng3HFjpIxVqKGMCIfWIKGDE3YzK3p4LbGZ6 + NZFQWYJLNVf2M9CCJfbEImPYgvctrxl39H6KVYPCw1SAdaj9NneUqmREOQkKoEB0 + x6PmNirbMscHhQPSC0JQaqUgaQFgba1ALmzRYAnYhNb0twkTxWbY7DBkAarxqMIp yiLKcBFc5H7dgJCImo7us7aJeftC44uWkPM= --END CERTIFICAT-- [Wed 30 Dec 2022 15:22:52 AM EST] Your cert is in /home/vpsadmin/.acme.sh/subdomain.yourdomain.com_ecc/subdomain.yourdomain.com.cer diff --git a/docs/en/document/level-0/ch07-xray-server.md b/docs/en/document/level-0/ch07-xray-server.md index 6f060ca3..2c79f039 100644 --- a/docs/en/document/level-0/ch07-xray-server.md +++ b/docs/en/document/level-0/ch07-xray-server.md @@ -348,10 +348,10 @@ So far, we have used `systemctl` related commands like `start`, `status`, `reloa net.ipv4.tcp_congestion_control=bbr ``` -9. Reboot the VPS to make the `BBR` settings take effect. +9. Read the configuration to make the `BBR` settings take effect. ```shell - sudo reboot + sudo sysctl --system ``` 10. Confirm `BBR` is enabled diff --git a/docs/ru/about/news.md b/docs/ru/about/news.md index c483397f..0e6d3b4a 100644 --- a/docs/ru/about/news.md +++ b/docs/ru/about/news.md @@ -54,9 +54,9 @@ v24.9.30 был установлен как latest почти на день, и ## 2024.9.17 -Количество участников в группе Project VLESS достигло 1000. +Количество участников в дочерней группе Project X достигло 1000. -Спасибо за поддержку! +Спасибо за поддержку из некитайскоязычного мира! - Что такое XHTTP и XgRPC? @@ -112,6 +112,8 @@ We have created [Project VLESS](https://t.me/projectVless) for non-Chinese users ## 2024.7.22 [v1.8.21](https://github.com/XTLS/Xray-core/releases/tag/v1.8.21) +Кажется, мы вернулись к изначальному состоянию «диарейных» частых выпусков... + Как и было объявлено в v1.8.16, SplitHTTP теперь имеет начальную поддержку HTTP/3 (QUIC). Нет сомнений в том, что SplitHTTP H3 открыл новую эру. - SplitHTTP H3 — это первый QUIC-подобный прокси, полностью основанный на стандарте H3 и поддерживающий CDN, который также можно использовать с обратным проксированием и Browser Dialer для сокрытия себя. diff --git a/docs/ru/config/api.md b/docs/ru/config/api.md index da7b7eb4..31b21c0c 100644 --- a/docs/ru/config/api.md +++ b/docs/ru/config/api.md @@ -106,8 +106,8 @@ API для изменения входящих и исходящих подкл - Удаление существующего исходящего подключения; - Получение списка входящих подключений; - Получение списка исходящих подключений; -- Добавление пользователя к входящему подключению (поддерживается только для VMess, VLESS, Trojan, Shadowsocks (v1.3.0+)); -- Удаление пользователя из входящего подключения (поддерживается только для VMess, VLESS, Trojan, Shadowsocks (v1.3.0+)); +- Добавление пользователя к входящему подключению (поддерживается только для VMess, VLESS, Trojan, Shadowsocks); +- Удаление пользователя из входящего подключения (поддерживается только для VMess, VLESS, Trojan, Shadowsocks); ### RoutingService diff --git a/docs/ru/config/dns.md b/docs/ru/config/dns.md index e6738af3..bdf5a7ce 100644 --- a/docs/ru/config/dns.md +++ b/docs/ru/config/dns.md @@ -15,7 +15,7 @@ - Перехват DNS-трафика в режиме TUN/Transparent Proxy через связку routing и DNS outbound, чтобы направлять DNS-трафик в этот модуль; либо работа в качестве рекурсивного DNS-сервера, открытого на порту 53. ::: tip TIP 1 -DNS-запросы, отправляемые встроенным DNS-сервером, автоматически перенаправляются в соответствии с конфигурацией маршрутизации (Routing). +DNS-сервер по умолчанию проходит сопоставление в системе маршрутизации, если только он не содержит `+local`. При использовании доменных имён внутри него обратите внимание на возможные петли (loop); может помочь `hosts`. ::: ::: tip TIP 2 @@ -24,16 +24,19 @@ DNS-запросы, отправляемые встроенным DNS-серве ## Процесс обработки DNS -Если запрашиваемый домен: +Домен сначала проходит проверку сопоставления Hosts (см. поле `hosts`). Если нужный IP не найден, для запроса используется DNS-сервер. -- Попадает в маппинг «домен - IP» или «домен - массив IP» в `hosts`, то этот IP или массив возвращается как результат DNS-резолвинга. -- Попадает в маппинг «домен - домен» в `hosts`, то значение (другой домен) становится текущим запрашиваемым доменом и снова проходит процесс обработки DNS, пока не будет получен IP или пустой ответ. -- Не попал в `hosts`, но попал в список доменов `domains` одного (или нескольких) DNS-серверов, то запрос выполняется через эти серверы в порядке приоритета правил. Если запрос к выбранному серверу не удался или `expectedIPs` не совпали, используется следующий подходящий сервер; в противном случае возвращается полученный IP. Если все подходящие серверы не смогли выполнить запрос или `expectedIPs` не совпали, компонент DNS: -- По умолчанию выполняет «DNS Fallback запрос»: последовательно опрашиваются серверы, которые «не использовались в предыдущем неудачном раунде и имеют `skipFallback` со значением по умолчанию `false`». Если запрос не удался или `expectedIPs` не совпали, возвращается пустой ответ; иначе — полученный IP. -- Если `disableFallback` установлено в `true`, «DNS Fallback запрос» не выполняется. -- Не попал ни в `hosts`, ни в списки `domains` DNS-серверов, то: -- По умолчанию последовательно используются «серверы с `skipFallback` по умолчанию `false`». Если первый выбранный сервер не смог выполнить запрос или `expectedIPs` не совпали, используется следующий; иначе возвращается IP. Если все выбранные серверы потерпели неудачу, возвращается пустой ответ. -- Если количество «серверов с `skipFallback` по умолчанию `false`» равно 0 или `disableFallback` установлено в `true`, используется первый DNS-сервер из конфигурации. При неудаче возвращается пустой ответ, при успехе — IP. +Затем ядро начинает строить список серверов, сортируя их в зависимости от запрашиваемого домена по следующим правилам. + +- Построение списка 1: содержит серверы, у которых поле `domains` успешно совпало с запрашиваемым доменом, в порядке их появления в конфигурационном файле. +- Проверка `disableFallback`: если `true`, построение списка 2 пропускается. +- Проверка `disableFallbackIfMatch`: если `true` и список 1 не пуст, построение списка 2 пропускается. +- Построение списка 2: содержит серверы, не входящие в список 1, у которых `skipFallback` не равно `true`, в порядке их появления в конфигурационном файле. +- Итоговый список серверов = список 1 + список 2. + +Примечание: любой DNS-сервер с `FinalQuery`, равным `true`, напрямую усекает последующую часть списка. + +При выполнении DNS-запроса ядро последовательно опрашивает серверы из итогового списка, фильтруя результаты с помощью `expectedIPs` и `unexpectedIPs`; если результат пуст, переходит к следующему серверу в списке. (При `enableParallelQuery`, равном `true`, поведение немного отличается, подробнее см. описание этого поля.) ## DnsObject diff --git a/docs/ru/config/features/env.md b/docs/ru/config/features/env.md index fd907eab..4bf0d80e 100644 --- a/docs/ru/config/features/env.md +++ b/docs/ru/config/features/env.md @@ -30,6 +30,8 @@ Xray предоставляет следующие переменные сред Файлы `.json` в этом каталоге будут читаться в порядке имен файлов как параметры конфигурации. +Этот параметр имеет более низкий приоритет, чем аргумент запуска `confdir`. + ## Строгий JSON-парсер - Название: `xray.json.strict` или `XRAY_JSON_STRICT`. diff --git a/docs/ru/config/inbound.md b/docs/ru/config/inbound.md index 533daa27..61e1bf7a 100644 --- a/docs/ru/config/inbound.md +++ b/docs/ru/config/inbound.md @@ -59,7 +59,7 @@ Обратите внимание, что прослушивание порта — это довольно ресурсоемкая операция. Прослушивание слишком большого диапазона портов может привести к значительному увеличению потребляемых ресурсов и даже нарушить нормальную работу Xray. Как правило, проблемы могут начаться, когда количество прослушиваемых портов приближается к четырехзначным числам. Если вам нужен большой диапазон, рассмотрите возможность использования iptables для перенаправления вместо того, чтобы настраивать его здесь. -> `protocol`: "dokodemo-door" | "http" | "shadowsocks" | "mixed" | "vless" | "vmess" | "trojan" | "wireguard" | "hysteria" +> `protocol`: "dokodemo-door" | "http" | "shadowsocks" | "socks" | "vless" | "vmess" | "trojan" | "wireguard" | "hysteria" Название протокола соединения. Список доступных протоколов см. в разделе [Входящие протоколы](./inbounds/) в меню слева. @@ -170,4 +170,3 @@ Xray будет использовать доменные имена, обнар Если вы уверены, что **проксируемое соединение будет правильно разрешено DNS**, то при использовании `routeOnly` и включенном `destOverride` можно установить стратегию сопоставления маршрутов `domainStrategy` в `AsIs`, чтобы реализовать разделение трафика по доменам и IP-адресам без DNS-разрешения. В этом случае при сопоставлении правил на основе IP-адресов будет использоваться исходный IP-адрес домена. ::: -ы diff --git a/docs/ru/config/inbounds/tunnel.md b/docs/ru/config/inbounds/tunnel.md index 6a14d79d..f579410a 100644 --- a/docs/ru/config/inbounds/tunnel.md +++ b/docs/ru/config/inbounds/tunnel.md @@ -38,8 +38,6 @@ Перенаправлять трафик на этот адрес. Может быть IP-адресом, например, `"1.2.3.4"`, или доменным именем, например, `"xray.com"`, по умолчанию `"localhost"`. -Если `followRedirect` (см. ниже) равно `true`, то `rewriteAddress` может быть пустым. - > `rewritePort`: number Перенаправляет трафик на указанный порт целевого адреса, диапазон `[0, 65535]`, числовой тип. Если не заполнено или равно `0`, по умолчанию используется порт прослушиваемого адреса. diff --git a/docs/ru/config/inbounds/vless.md b/docs/ru/config/inbounds/vless.md index c6c13640..b9b0f2da 100644 --- a/docs/ru/config/inbounds/vless.md +++ b/docs/ru/config/inbounds/vless.md @@ -14,9 +14,8 @@ VLESS - это легкий транспортный протокол без с { // ... "protocol": "vless", - // [!code focus:18] + // [!code focus:17] "settings": { - "flow": "xtls-rprx-vision", "users": [ { "id": "5783a3e7-e373-51cd-8642-c83782b807c5", @@ -38,18 +37,6 @@ VLESS - это легкий транспортный протокол без с } ``` -> `flow`: string - -Режим управления потоком, используется для выбора алгоритма XTLS. - -Это работает аналогично настройке внутри каждого клиента [UserObject](#userobject), но задается глобально для всех пользователей данного inbounds. -Если параметр отсутствует, ядро будет использовать значение flow, указанное индивидуально внутри каждого объекта [UserObject](#userobject). - -В настоящее время доступны следующие режимы: - -- Отсутствует `flow` или пустая строка: используется обычный TLS-прокси -- `xtls-rprx-vision`: используется новый режим XTLS, включает случайное заполнение внутреннего рукопожатия - > `users`: \[ [UserObject](#userobject) \] Массив, представляющий группу пользователей, одобренных сервером. diff --git a/docs/ru/config/log.md b/docs/ru/config/log.md index cfbca7cb..9b3771e0 100644 --- a/docs/ru/config/log.md +++ b/docs/ru/config/log.md @@ -76,3 +76,5 @@ LogObject соответствует полю `log` в конфигурацио - ipv4 `1.2.*.*` `1.*.*.*` `[Masked IPv4]` - ipv6 `1234:5678::/32` `1234::/16` `[Masked IPv6]` + +При более специфических требованиях можно использовать пользовательский формат, например `/16+/32`. Формат задает количество бит, которые остаются немаскированными; первое число относится к IPv4, второе — к IPv6, причем значение для IPv4 должно делиться на 8. `/32` или `/128` означает полное отсутствие маскировки, а `/0` приводит к отображению `[Masked IPv4/IPv6]`. diff --git a/docs/ru/config/observatory.md b/docs/ru/config/observatory.md index 35ef4823..0802f45f 100644 --- a/docs/ru/config/observatory.md +++ b/docs/ru/config/observatory.md @@ -34,6 +34,8 @@ URL-адрес, используемый для проверки состоян Формат времени: число + единица измерения, например `"10s"`, `"2h45m"`. Поддерживаемые единицы измерения: `ns`, `us`, `ms`, `s`, `m`, `h` (наносекунды, микросекунды, миллисекунды, секунды, минуты, часы). +Обратите внимание, что поскольку интервал между запросами фиксирован, периодические запросы через равные промежутки времени могут создавать характерный шаблон поведения. Использование протоколов с мультиплексированием или включение `mux` может смягчить эту проблему. + > `enableConcurrency`: true | false - `true` - проверять все соответствующие исходящие прокси одновременно, после чего сделать паузу на время, указанное в `probeInterval`. @@ -63,6 +65,9 @@ URL-адрес, используемый для проверки состоян ```json { + // Для каждого исходящего прокси выполняется 10 проверок в течение 10 минут, конкретное время проверок случайно + // Если все они завершатся неудачей, узел будет помечен как неисправный в течение 10 ~ 20 минут + // После сбоя достаточно одной успешной проверки, чтобы узел был помечен как исправный, на это потребуется не более 10 минут "destination": "https://connectivitycheck.gstatic.com/generate_204", "connectivity": "", "interval": "1m", @@ -81,11 +86,18 @@ URL-адрес, используемый для проверки состоян > `connectivity`: string URL-адрес, используемый для проверки подключения к локальной сети. +Этот URL-адрес должен возвращать код состояния HTTP 204. + Пустая строка означает, что проверка подключения к локальной сети не выполняется. +Эта проверка выполняется только тогда, когда проверка `destination` завершается неудачей. Это позволяет более четко отразить в журнале причину отсутствия сетевого подключения. + +Внимание: в режиме прозрачного проксирования этот запрос может быть перехвачен прозрачным прокси и снова попасть в Xray для маршрутизации (в зависимости от вашей конфигурации). Необходимо принять дополнительные меры, чтобы он не был перехвачен прозрачным прокси, например, обход по IP-адресу URL, либо использование cgroup, pid-маршрутизации и других способов, чтобы запросы Xray полностью не перехватывались. Либо вы можете выбрать URL-адрес, который соответствует правилу прямого подключения, и позволить этому запросу быть перехваченным прозрачным прокси. + > `interval`: string -Проверить все соответствующие исходящие прокси в течение указанного времени, отправляя `sampling` + 1 запросов на каждый прокси. +Ожидаемый **средний** интервал между проверками для каждого исходящего прокси. + Формат времени: число + единица измерения, например `"10s"`, `"2h45m"`. Поддерживаемые единицы измерения: `ns`, `us`, `ms`, `s`, `m`, `h` (наносекунды, микросекунды, миллисекунды, секунды, минуты, часы). По умолчанию `"1m"`. Минимальное допустимое значение — `"10s"`. Если указано меньше, будет использовано `"10s"`. @@ -105,3 +117,9 @@ URL-адрес, используемый для проверки подключ HTTP-метод, используемый для выполнения проверки (например, `"HEAD"`, `"GET"`). По умолчанию `"HEAD"`. + +::: tip +Принцип работы мониторинга параллельных подключений заключается в том, что каждые `interval` \* `sampling` (далее — цикл проверки) для каждого совпавшего исходящего прокси немедленно планируется задача проверки, но сама проверка выполняется в случайный момент времени в пределах цикла каждой задачи. Это означает, что по сравнению с `observatory` (фоновым мониторингом подключений) характерный шаблон этого детектора менее заметен. Но если `interval` задан слишком малым или `sampling` слишком большим, что приводит к частым проверкам, шаблон станет более заметным. + +`interval` и `sampling` совместно влияют на чувствительность переключения при сбое и восстановления. Когда узел постоянно не проходит проверки, чтобы пометить его как неисправный, требуется минимум 1 цикл проверки и максимум 2 цикла проверки. Для восстановления после сбоя требуется одна успешная проверка, что зависит от плотности проверок; максимум на это уходит 1 цикл проверки. +::: diff --git a/docs/ru/config/outbounds/shadowsocks.md b/docs/ru/config/outbounds/shadowsocks.md index 2bbe85d4..1e412414 100644 --- a/docs/ru/config/outbounds/shadowsocks.md +++ b/docs/ru/config/outbounds/shadowsocks.md @@ -67,11 +67,11 @@ > `method`: string -Обязательный параметр. +Метод шифрования Shadowsocks. Обязательный параметр. > `password`: string -Обязательный параметр. +Пароль аутентификации Shadowsocks. Обязательный параметр. > `uot`: bool diff --git a/docs/ru/config/outbounds/socks.md b/docs/ru/config/outbounds/socks.md index 1ff7b604..a586311f 100644 --- a/docs/ru/config/outbounds/socks.md +++ b/docs/ru/config/outbounds/socks.md @@ -1,6 +1,6 @@ -# Socks (Mixed) +# Socks -Стандартная реализация протокола Socks, совместимая с [Socks 4](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol), [Socks 4a](https://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4A.protocol) и Socks 5. +Стандартная реализация протокола Socks, совместимая с Socks 5. ::: danger **Протокол Socks не обеспечивает шифрования передачи, поэтому он не подходит для передачи данных через общедоступные сети.** @@ -44,18 +44,18 @@ > `user`: string -Имя пользователя, тип данных: строка. Обязательный параметр. +Имя пользователя, тип данных: строка. Обязательный параметр, если удаленный сервер требует аутентификации; в противном случае не включайте этот элемент. > `pass`: string -Пароль, тип данных: строка. Обязательный параметр. +Пароль, тип данных: строка. Обязательный параметр, если удаленный сервер требует аутентификации; в противном случае не включайте этот элемент. > `level`: number -Уровень пользователя, для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя. +Уровень пользователя, для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя. Необязательный параметр, если удаленный сервер требует аутентификации; в противном случае не включайте этот элемент. Значение userLevel соответствует значению `level` в разделе [policy](../policy.md#policyobject). Если не указано, используется значение по умолчанию - 0. > `email`: string -Адрес электронной почты, используемый для идентификации пользователя. +Адрес электронной почты, используемый для идентификации пользователя. Необязательный параметр, если удаленный сервер требует аутентификации; в противном случае не включайте этот элемент. diff --git a/docs/ru/config/outbounds/vmess.md b/docs/ru/config/outbounds/vmess.md index 18f16525..84bd798d 100644 --- a/docs/ru/config/outbounds/vmess.md +++ b/docs/ru/config/outbounds/vmess.md @@ -16,8 +16,10 @@ VMess полагается на системное время. Убедитес { // ... "protocol": "vmess", - // [!code focus:6] + // [!code focus:8] "settings": { + "address": "127.0.0.1", + "port": 37192, "id": "5783a3e7-e373-51cd-8642-c83782b807c5", "security": "auto", "level": 0, @@ -36,23 +38,6 @@ VMess полагается на системное время. Убедитес Номер порта, который прослушивает сервер, обязательный параметр. -> `users`: \[ [UserObject](#userobject) \] - -Массив, представляющий группу пользователей, распознаваемых сервером. - -Каждый элемент - это пользователь [UserObject](#userobject). - -#### UserObject - -```json -{ - "id": "5783a3e7-e373-51cd-8642-c83782b807c5", - "security": "auto", - "level": 0, - "experiments": "" -} -``` - > `id`: string Идентификатор пользователя VMess, может быть любой строкой длиной менее 30 байт или допустимым UUID. @@ -92,4 +77,4 @@ VMess полагается на системное время. Убедитес "AuthenticatedLength" включает эксперимент с аутентифицированной длиной пакета. Этот эксперимент необходимо включить одновременно на клиенте и сервере, а также запустить одну и ту же версию программы. -"NoTerminationSignal" включает эксперимент с отключением сигнала завершения соединения. Этот эксперимент может повлиять на стабильность проксируемого соединения. +"NoTerminationSignal" включает отправку отключенного сигнала разрыва соединения. Эта функция теперь включена по умолчанию. diff --git a/docs/ru/config/outbounds/wireguard.md b/docs/ru/config/outbounds/wireguard.md index 267de5f1..3f70ed49 100644 --- a/docs/ru/config/outbounds/wireguard.md +++ b/docs/ru/config/outbounds/wireguard.md @@ -101,26 +101,12 @@ MTU нижнего уровня tun в Wireguard. > `domainStrategy`: "ForceIPv6v4" | "ForceIPv6" | "ForceIPv4v6" | "ForceIPv4" | "ForceIP" +Управляет стратегией разрешения доменных имен, когда адрес сервера Wireguard является доменным именем или целевой адрес проксируемого трафика является доменным именем. + В отличие от большинства прокси-протоколов, Wireguard не позволяет передавать доменные имена в качестве целей. Если в качестве цели передается доменное имя, оно разрешается в IP-адрес через встроенный DNS Xray. Подробнее см. поле `domainStrategy` для outbound `Freedom`. По умолчанию используется `ForceIP`. -Примечание: В настройках `Freedom` доступны опции, такие как `UseIP`, которые здесь отсутствуют, так как Wireguard требует наличия действительного IP-адреса. - -```json -{ - "dns": { - "servers": [ - "https://1.1.1.1/dns-query", - { - "address": "https://1.1.1.1/dns-query", - "domains": ["geosite:openai"], - "skipFallback": true, - "queryStrategy": "UseIPv6" // Запрос только AAAA-записей - } - ], - "queryStrategy": "UseIP" // Запрос A и AAAA одновременно. Если не указано, используется значение по умолчанию UseIP. - } -} -``` +В настройках `domainStrategy` outbound `Freedom` доступны опции, такие как `UseIP`, которые здесь отсутствуют, так как Wireguard должен получить действительный IP-адрес и не может выполнять откат к доменному имени после неудачного разрешения `UseIP`.
+Примечание: при применении к проксируемому трафику эта опция также ограничивается опцией `address`. Например, если вы установили `ForceIPv6v4`, но в `address` не задан IPv6-адрес, то даже при наличии у целевого домена AAAA-записей они не будут разрешены. ### Peers diff --git a/docs/ru/config/policy.md b/docs/ru/config/policy.md index e79869ca..d1d4f4de 100644 --- a/docs/ru/config/policy.md +++ b/docs/ru/config/policy.md @@ -103,7 +103,7 @@ Xray будет применять различные локальные пол > `statsUserOnline`: true | false -Если значение равно `true`, включить учет пользоватлей онлайн для всех пользователей текущего уровня по электронной почте. +Если значение равно `true`, включить учет количества онлайн-пользователей для всех пользователей текущего уровня. (Критерий онлайн: наличие сетевой активности в течение 20 секунд) > `bufferSize`: number diff --git a/docs/ru/config/routing.md b/docs/ru/config/routing.md index 66549a4a..5d08414a 100644 --- a/docs/ru/config/routing.md +++ b/docs/ru/config/routing.md @@ -24,11 +24,17 @@ Стратегия разрешения доменных имен. Используются разные стратегии в зависимости от настройки. -- `"AsIs"`: для выбора маршрута используются только доменные имена. Значение по умолчанию. -- `"IPIfNonMatch"`: если доменное имя не соответствует ни одному правилу, доменное имя разрешается в IP-адрес (запись A или запись AAAA) для повторного сопоставления; - - Если у доменного имени несколько записей A, предпринимается попытка сопоставить все записи A, пока одна из них не будет соответствовать какому-либо правилу; - - Разрешенный IP-адрес используется только при выборе маршрута, в пересылаемых пакетах данных по-прежнему используется исходное доменное имя; -- `"IPOnDemand"`: если при сопоставлении встречается любое правило на основе IP-адреса, доменное имя немедленно разрешается в IP-адрес для сопоставления; +- `"AsIs"`: никаких дополнительных операций не выполняется, используется доменное имя из целевого адреса или доменное имя, полученное при sniff. Значение по умолчанию. +- `"IPIfNonMatch"`: после завершения целого раунда сопоставления, если ни одно правило не сработало, доменное имя разрешается в IP-адрес и выполняется повторное сопоставление. +- `"IPOnDemand"`: перед началом сопоставления доменное имя сразу разрешается в IP-адрес для сопоставления. + +Фактическое разрешение будет отложено до момента, когда впервые встретится правило на основе IP, чтобы уменьшить задержку. Результат будет содержать одновременно IPv4 и IPv6 (вы можете дополнительно ограничить это через `queryStrategy` во встроенном DNS). Когда доменное имя разрешается в несколько IP-адресов, каждое правило по очереди пробует все IP-адреса; если хотя бы один IP соответствует требованию, правило считается сработавшим. + +Когда включены sniff + routeOnly, что позволяет системе маршрутизации одновременно видеть IP и доменное имя, в случае указанного выше разрешения система маршрутизации может видеть только IP, полученный из доменного имени, и не может видеть исходный целевой IP, если только разрешение не завершится неудачей. + +Когда существуют два доменных имени (целевое доменное имя + результат sniff), приоритет результата sniff всегда выше, как при разрешении, так и при сопоставлении доменных имен. + +Независимо от того, выполняется разрешение или нет, система маршрутизации не влияет на фактический целевой адрес. Целью запроса по-прежнему остается исходная цель. > `rules`: \[[RuleObject](#ruleobject)\] @@ -80,8 +86,6 @@ > `domain`: \[string\] -Массив, каждый элемент которого представляет собой сопоставление доменного имени. Возможны следующие форматы: - - **Строка**: Аналогично подстроке ниже, но префикс `"keyword:"` в начале можно опустить. - **Регулярное выражение**: Начинается с `"regexp:"`, остальная часть является регулярным выражением. Правило вступает в силу, когда это регулярное выражение соответствует целевому домену. Например, `"regexp:\\\\.goo.\*\\\\.com$"` соответствует `"www.google.com"` и `"fonts.googleapis.com"`, но не `"google.com"`. Чувствительно к регистру. - **Поддомен (рекомендуется)**: Начинается с `"domain:"`, остальная часть — доменное имя. Правило вступает в силу, если это имя является целевым доменом или его поддоменом. Например, `"domain:xray.com"` соответствует `"www.xray.com"` и `"xray.com"`, но не `"wxray.com"`. @@ -102,7 +106,7 @@ - IP-адрес: например, `"127.0.0.1"`. - [CIDR](https://ru.wikipedia.org/wiki/Бесклассовая_междоменная_маршрутизация): например, `"10.0.0.0/8"`, также можно использовать `"0.0.0.0/0"` `"::/0"` для указания всех IPv4- или IPv6-адресов. - Предопределенный список IP-адресов: этот список встроен в каждый установочный пакет Xray, имя файла - `geoip.dat`. Формат использования: `"geoip:код_страны"`, должно начинаться с `geoip:` (в нижнем регистре), за которым следует двухбуквенный код страны, поддерживаются почти все страны с доступом в Интернет. -- Специальное значение: `"geoip:private"`, включает в себя все частные адреса, например, `127.0.0.1`. + - Специальное значение: `"geoip:private"`, включает в себя все частные адреса, например, `127.0.0.1`. - Загрузка IP-адресов из файла: имеет вид `"ext:файл:тег"`, должно начинаться с `ext:` (в нижнем регистре), за которым следует имя файла и тег, файл хранится в [каталоге ресурсов](./features/env.md#путь-к-файлу-ресурсов), формат файла такой же, как у `geoip.dat`, тег должен существовать в файле. - Функция инверсии `!`: `"!10.0.0.0/8"` обозначает всё, что не входит в `10.0.0.0/8`, а `"!geoip:cn"` — результаты, не входящие в `geoip:cn`. Несколько условий с отрицанием объединяются логическим **AND**, а положительные условия и совокупность всех отрицательных условий — логическим **OR**. Например, `ip: ["!geoip:cn", "!geoip:us", "geoip:telegram"]` соответствует IP, которые не относятся к США **И** не относятся к Китаю, **ИЛИ** являются IP Telegram. diff --git a/docs/ru/config/transports/grpc.md b/docs/ru/config/transports/grpc.md index 17eabed2..4affef6f 100644 --- a/docs/ru/config/transports/grpc.md +++ b/docs/ru/config/transports/grpc.md @@ -1,11 +1,12 @@ # gRPC -Режим передачи данных, основанный на HTTP/2, полностью соответствует стандарту HTTP/2 и может быть ретранслирован другими HTTP-серверами (такими как Nginx). +Режим передачи данных, основанный на gRPC. +Он основан на протоколе HTTP/2 и теоретически может быть ретранслирован через другие серверы, поддерживающие HTTP/2 (такие как Nginx). gRPC (HTTP/2) имеет встроенное мультиплексирование, не рекомендуется включать mux.cool при использовании gRPC и HTTP/2. ::: danger -**Рекомендуется перейти на [XHTTP](https://github.com/XTLS/Xray-core/discussions/4113#discussioncomment-11468947), преимущества которого перед gRPC отмечены в разделе STREAM-UP/ONE.** +**Рекомендуется перейти на [XHTTP](https://github.com/XTLS/Xray-core/discussions/4113), преимущества которого перед gRPC отмечены в разделе STREAM-UP/ONE.** ::: ::: warning ⚠⚠⚠ diff --git a/docs/ru/config/transports/h2.md b/docs/ru/config/transports/h2.md index 3bc323f2..962193e7 100644 --- a/docs/ru/config/transports/h2.md +++ b/docs/ru/config/transports/h2.md @@ -1,3 +1,3 @@ # HTTP/2 -See [XHTTP: Beyond REALITY](https://github.com/XTLS/Xray-core/discussions/4113#discussioncomment-11468947) +See [XHTTP: Beyond REALITY](https://github.com/XTLS/Xray-core/discussions/4113) diff --git a/docs/ru/config/transports/http.md b/docs/ru/config/transports/http.md index bb29dcf6..ec89c52a 100644 --- a/docs/ru/config/transports/http.md +++ b/docs/ru/config/transports/http.md @@ -1,3 +1,3 @@ # HTTP -See [XHTTP: Beyond REALITY](https://github.com/XTLS/Xray-core/discussions/4113#discussioncomment-11468947) +See [XHTTP: Beyond REALITY](https://github.com/XTLS/Xray-core/discussions/4113) diff --git a/docs/ru/config/transports/httpupgrade.md b/docs/ru/config/transports/httpupgrade.md index 0269a5d0..7cbf411f 100644 --- a/docs/ru/config/transports/httpupgrade.md +++ b/docs/ru/config/transports/httpupgrade.md @@ -5,7 +5,7 @@ Его дизайн не рекомендуется для самостоятельного использования, а лучше всего работает в сочетании с TLS. ::: danger -**Рекомендуется переключиться на [XHTTP](https://github.com/XTLS/Xray-core/discussions/4113#discussioncomment-11468947), чтобы избежать значительных характеристик трафика, таких как HTTPUpgrade «ALPN is http/1.1».** +**Рекомендуется переключиться на [XHTTP](https://github.com/XTLS/Xray-core/discussions/4113), чтобы избежать значительных характеристик трафика, таких как HTTPUpgrade «ALPN is http/1.1».** ::: ## HTTPUpgradeObject @@ -61,6 +61,6 @@ HTTP-путь, используемый HTTPUpgrade, по умолчанию `"/ > `headers`: map \{string: string\} -Пользовательские HTTP-заголовки, пара ключ-значение, где каждый ключ представляет имя HTTP-заголовка, а соответствующее значение - строка. +Только для клиента. Пользовательские HTTP-заголовки, пара ключ-значение, где каждый ключ представляет имя HTTP-заголовка, а соответствующее значение - строка. По умолчанию пустое. diff --git a/docs/ru/config/transports/quic.md b/docs/ru/config/transports/quic.md index 0df647ef..5d8228f7 100644 --- a/docs/ru/config/transports/quic.md +++ b/docs/ru/config/transports/quic.md @@ -1,3 +1,3 @@ # QUIC -See [XHTTP: Beyond REALITY](https://github.com/XTLS/Xray-core/discussions/4113#discussioncomment-11468947) +See [XHTTP: Beyond REALITY](https://github.com/XTLS/Xray-core/discussions/4113) diff --git a/docs/ru/config/transports/raw.md b/docs/ru/config/transports/raw.md index 68cedfdb..dd3f91ef 100644 --- a/docs/ru/config/transports/raw.md +++ b/docs/ru/config/transports/raw.md @@ -1,6 +1,6 @@ # RAW -Переименованный из транспортного уровня TCP (первоначальное название было неоднозначным), исходящий транспортный уровень RAW отправляет данные TCP и UDP, сгенерированные обертками прокси-протоколов, напрямую, и ядро не использует другие транспортные уровни (такие как [XHTTP](https://github.com/XTLS/Xray-core/discussions/4113#discussioncomment-11468947)) для передачи своего трафика. +Переименованный из транспортного уровня TCP (первоначальное название было неоднозначным), исходящий транспортный уровень RAW отправляет данные TCP и UDP, сгенерированные обертками прокси-протоколов, напрямую, и ядро не использует другие транспортные уровни (такие как [XHTTP](https://github.com/XTLS/Xray-core/discussions/4113)) для передачи своего трафика. Может использоваться в различных комбинациях с различными протоколами. diff --git a/docs/ru/config/transports/splithttp.md b/docs/ru/config/transports/splithttp.md index aed09f0d..0fff4995 100644 --- a/docs/ru/config/transports/splithttp.md +++ b/docs/ru/config/transports/splithttp.md @@ -1,3 +1,3 @@ # SplitHTTP -See [XHTTP: Beyond REALITY](https://github.com/XTLS/Xray-core/discussions/4113#discussioncomment-11468947) +See [XHTTP: Beyond REALITY](https://github.com/XTLS/Xray-core/discussions/4113) diff --git a/docs/ru/config/transports/websocket.md b/docs/ru/config/transports/websocket.md index 94fb0daa..c32956b8 100644 --- a/docs/ru/config/transports/websocket.md +++ b/docs/ru/config/transports/websocket.md @@ -5,7 +5,7 @@ Подключение WebSocket может быть проксировано другими HTTP-серверами (например, Nginx) и VLESS fallbacks path. ::: danger -**Рекомендуется переключиться на [XHTTP](https://github.com/XTLS/Xray-core/discussions/4113#discussioncomment-11468947), чтобы избежать значительных характеристик трафика, таких как WebSocket «ALPN is http/1.1».** +**Рекомендуется переключиться на [XHTTP](https://github.com/XTLS/Xray-core/discussions/4113), чтобы избежать значительных характеристик трафика, таких как WebSocket «ALPN is http/1.1».** ::: ::: tip @@ -54,7 +54,7 @@ WebSocket распознает заголовок X-Forwarded-For в HTTP-зап Путь, используемый WebSocket в HTTP-протоколе, значение по умолчанию — `"/"`. -Если в пути клиента есть параметр `ed` (например, `/mypath?ed=2560`), будет активирован `Early Data` для уменьшения задержки. +Если в пути клиента есть параметр `ed` (например, `/mypath?ed=2560`), будет активирован `Early Data` для уменьшения задержки. При этом во время апгрейда данные первого пакета передаются через заголовок `Sec-WebSocket-Protocol`, а значение параметра задает пороговое значение длины первого пакета. Если длина первого пакета превышает это значение, `Early Data` не активируется. Рекомендуемое значение — 2560, максимальное — 8192. Слишком большие значения могут привести к проблемам совместимости; если вы столкнулись с такими проблемами, попробуйте уменьшить порог. > `host`: string @@ -66,7 +66,7 @@ WebSocket распознает заголовок X-Forwarded-For в HTTP-зап > `headers`: map \{string: string\} -Пользовательские HTTP-заголовки, пары ключ-значение, где каждый ключ представляет имя HTTP-заголовка, а соответствующее значение является строкой. +Только для клиента. Пользовательские HTTP-заголовки, пары ключ-значение, где каждый ключ представляет имя HTTP-заголовка, а соответствующее значение является строкой. Значение по умолчанию: пустое. diff --git a/docs/ru/config/transports/xhttp.md b/docs/ru/config/transports/xhttp.md index 2a06de9b..51445b1f 100644 --- a/docs/ru/config/transports/xhttp.md +++ b/docs/ru/config/transports/xhttp.md @@ -1,3 +1,3 @@ # XHTTP: Beyond REALITY -See [XHTTP: Beyond REALITY](https://github.com/XTLS/Xray-core/discussions/4113#discussioncomment-11468947) +See [XHTTP: Beyond REALITY](https://github.com/XTLS/Xray-core/discussions/4113) diff --git a/docs/ru/development/intro/guide.md b/docs/ru/development/intro/guide.md index 13881506..89655647 100644 --- a/docs/ru/development/intro/guide.md +++ b/docs/ru/development/intro/guide.md @@ -145,6 +145,6 @@ Xray-core **Для разработчика** -Если вам нужно использовать диапазон в файле конфигурации, используйте тип `Int32Range`. Для получения значений используйте `.From` и `.To` вместо использования строкового типа (`string`) и последующего ручного разбора. +Если вам нужно использовать диапазон в файле конфигурации, используйте тип `Int32Range`. -Метод `.EnsureOrder()` можно использовать для обмена значений From и To, если From больше, чем To (при необходимости). +Используйте `.From` и `.To` для получения значений. Когда From > To (например, 1919-810), значения автоматически меняются местами, чтобы гарантировать, что From меньше To. Если вы хотите получить исходные значения, можно использовать `.Left` и `.Right`. diff --git a/docs/ru/document/command.md b/docs/ru/document/command.md index a7bf7a45..90d3e54b 100644 --- a/docs/ru/document/command.md +++ b/docs/ru/document/command.md @@ -20,6 +20,7 @@ The commands are: run Запустить Xray с конфигурацией version Показать текущую версию Xray api Вызвать API в процессе Xray + convert Конвертировать конфигурации tls Инструменты TLS uuid Сгенерировать UUIDv4 или UUIDv5 (VLESS) x25519 Сгенерировать ключевую пару для обмена ключами X25519 (REALITY, VLESS Encryption) diff --git a/docs/ru/document/index.md b/docs/ru/document/index.md index 4aa0453e..47049e12 100644 --- a/docs/ru/document/index.md +++ b/docs/ru/document/index.md @@ -2,6 +2,12 @@ > **В этой главе вы узнаете, как максимально просто получить Xray и начать его использовать.** +::: tip +Этот раздел не обновлялся уже довольно давно, поэтому некоторые места могут быть не вполне актуальными. Мы стараемся поддерживать в актуальном состоянии в первую очередь документацию по файлу конфигурации. Если вы где-то столкнулись с трудностями и у вас есть предложения по исправлению, мы будем рады PR. + +ℱ. +::: + ## Загрузка и установка Xray поддерживает разнообразные платформы, и вы можете получить разные версии Xray из множества источников и различными способами. diff --git a/docs/ru/document/level-0/ch04-security.md b/docs/ru/document/level-0/ch04-security.md index 80b1a503..c1eb6eb5 100644 --- a/docs/ru/document/level-0/ch04-security.md +++ b/docs/ru/document/level-0/ch04-security.md @@ -225,7 +225,7 @@ ![Генерация ключей](./ch04-img08-puttygen-save.png) ::: warning - На скриншоте показан пример генерации 2048-битного RSA-ключа. Однако для достижения уровня безопасности, со comparableного с 256-битным ключом ECDSA/Ed25519, вам нужно сгенерировать 3072-битный RSA-ключ (т.е. ввести значение `3072` в поле «Number of bits in a generated key»). + На скриншоте показан пример генерации 2048-битного RSA-ключа. Однако для достижения уровня безопасности, сопоставимого с 256-битным ключом ECDSA/Ed25519, вам нужно сгенерировать 3072-битный RSA-ключ (т.е. ввести значение `3072` в поле «Number of bits in a generated key»). ::: 2. Вы можете установить пароль для защиты приватного ключа. 3. Нажмите кнопку **Save public key**, чтобы сохранить публичный ключ в файл `id_rsa.pub`. 4. Нажмите кнопку **Save private key**, чтобы сохранить приватный ключ в файл `id_rsa` (приватные ключи PuTTY имеют расширение `.ppk`). 5. **Важно!** Скопируйте содержимое поля, выделенного красной рамкой (не забудьте прокрутить текст до конца!), и сохраните его в файл `authorized_keys`. (Если вы будете использовать для этого VSCode, файл будет сохранён с расширением `.txt` — `authorized_keys.txt`. Это нормально, позже мы переименуем файл). ![Сохранение ключей](./ch04-img09-puttygen-save-keys.png) diff --git a/docs/ru/document/level-0/ch05-webpage.md b/docs/ru/document/level-0/ch05-webpage.md index 759c8512..9414ea7a 100644 --- a/docs/ru/document/level-0/ch05-webpage.md +++ b/docs/ru/document/level-0/ch05-webpage.md @@ -135,13 +135,13 @@ ``` -5. Дайте другим пользователям право на чтение этого файла: + Дайте другим пользователям право на чтение этого файла: ```shell chmod -R a+r . ``` -6. Отредактируйте файл `nginx.conf` и перезапустите Nginx, чтобы он открывал созданную нами страницу `index.html` при обращении к порту `80`. +5. Отредактируйте файл `nginx.conf` и перезапустите Nginx, чтобы он открывал созданную нами страницу `index.html` при обращении к порту `80`. 1. Отредактируйте файл `nginx.conf`. ```shell @@ -191,7 +191,7 @@ - Вы работаете не под пользователем `root`, но скопировали команды из статьи без изменений (как будто списали домашнее задание вместе с именем одноклассника). - Вы работаете под пользователем `root`. -Если у вас возникли проблемы, вернитесь к разделу 5.3 и внимательно перечитайте пункты 3 и 6.2. +Если у вас возникли проблемы, вернитесь к разделу 5.3 и внимательно перечитайте пункты 3 и 5.2. ::: warning В предыдущих главах мы много говорили о важности использования пользователя, отличного от `root`, и вся статья написана с учётом этого. Поэтому проблемы, связанные с использованием `root`, не рассматриваются в рамках этой статьи. diff --git a/docs/ru/document/level-0/ch07-xray-server.md b/docs/ru/document/level-0/ch07-xray-server.md index 0718931e..a62eb9fb 100644 --- a/docs/ru/document/level-0/ch07-xray-server.md +++ b/docs/ru/document/level-0/ch07-xray-server.md @@ -349,10 +349,10 @@ Xray основан на проекте с открытым исходным к net.ipv4.tcp_congestion_control=bbr ``` -9. Перезагружаем VPS, чтобы настройки `BBR` вступили в силу: +9. Считываем конфигурацию, чтобы настройки `BBR` вступили в силу: ```shell - sudo reboot + sudo sysctl --system ``` 10. Проверяем, что `BBR` включён diff --git a/docs/ru/document/level-2/tproxy_ipv4_and_ipv6.md b/docs/ru/document/level-2/tproxy_ipv4_and_ipv6.md index 4892a081..d14ac91f 100644 --- a/docs/ru/document/level-2/tproxy_ipv4_and_ipv6.md +++ b/docs/ru/document/level-2/tproxy_ipv4_and_ipv6.md @@ -554,4 +554,10 @@ IP-адреса пограничного маршрутизатора можно ## Заключение В настоящее время IPv6 еще не получил широкого распространения, и 99% трафика, к которому мы обращаемся, по-прежнему приходится на IPv4. -Многие провайдеры VPS +Многие провайдеры VPS хотя и предоставляют IPv6-адреса, но оптимизация маршрутов у них очень плохая, вплоть до полной неработоспособности. Так зачем же добавлять настройки IPv6? + +Можно заметить, что в настоящее время IPv6 находится в довольно неловком положении: поддержка IPv6 на различных устройствах оставляет желать лучшего, но постепенно улучшается. В то же время приоритет IPv6 в системах Windows также растет, многие браузеры отдают предпочтение разрешению и доступу по IPv6, а многие сайты уже начали по умолчанию использовать IPv6 (например, Netflix; если IPv6 не настроен, при открытии Netflix в браузере отобразится «Not Available», поскольку IPv6-запросы Netflix не проксируются. Конечно, можно отключить IPv6 в Windows, но тогда не будут работать PT-сайты, поддерживающие IPv6). + +В таком случае IPv4 не может полностью удовлетворить потребности в веб-серфинге, и даже тот 1% трафика, столкнувшись с которым, может вызвать немало головной боли. + +При этом можно предположить, что IPv6 постепенно начнет конкурировать с IPv4, поэтому добавление настроек IPv6 является необходимым. diff --git a/docs/ru/document/level-2/warp.md b/docs/ru/document/level-2/warp.md index 871b7a77..fdbc67e1 100644 --- a/docs/ru/document/level-2/warp.md +++ b/docs/ru/document/level-2/warp.md @@ -101,7 +101,7 @@ bash -c "$(curl -L wgcf-cli.vercel.app)" - Полный файл будет сохранен в файле `wgcf.json` в текущем каталоге. 3. Запустите `wgcf-cli generate --xray`, чтобы создать исходящий WireGuard. - Содержимое будет сохранено в файле `wgcf.json.xray.json`. + Содержимое будет сохранено в файле `wgcf.xray.json`. - Пример файла: