mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2026-09-26 16:48:32 +03:00
Sync docs
This commit is contained in:
@@ -78,13 +78,13 @@ Run `go tool dist list` to view all supported systems and architectures.
|
||||
Use the following command to build (`<short commit ID>` 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=)<short commit ID> -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=<short commit ID> -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=)<short commit ID> -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=<short commit ID> -s -w -buildid=" -v ./main
|
||||
```
|
||||
|
||||
::: warning
|
||||
|
||||
@@ -95,9 +95,16 @@ Now for the second question:
|
||||
|
||||
```html
|
||||
<html lang="">
|
||||
<!-- Text between angle brackets is an HTML tag and is not displayed.
|
||||
Most tags, such as the HTML and /HTML tags that surround the contents of
|
||||
a page, come in pairs; some tags, like HR, for a horizontal rule, stand
|
||||
alone. Comments, such as the text you're reading, are not displayed when
|
||||
the Web page is shown. The information between the HEAD and /HEAD tags is
|
||||
not displayed. The information between the BODY and /BODY tags is displayed.-->
|
||||
<head>
|
||||
<title>Enter a title, displayed at the top of the window.</title>
|
||||
</head>
|
||||
<!-- The information between the BODY and /BODY tags is displayed.-->
|
||||
<body>
|
||||
<h1>Enter the main heading, usually the same as the title.</h1>
|
||||
<p>
|
||||
@@ -110,21 +117,21 @@ Now for the second question:
|
||||
<p>Improve your image by including an image.</p>
|
||||
<p>
|
||||
<img
|
||||
src="[https://i.imgur.com/SEBww.jpg](https://i.imgur.com/SEBww.jpg)"
|
||||
src="https://i.imgur.com/SEBww.jpg"
|
||||
alt="A Great HTML Resource"
|
||||
/>
|
||||
</p>
|
||||
<p>
|
||||
Add a link to your favorite
|
||||
<a href="[https://www.dummies.com/](https://www.dummies.com/)"
|
||||
>Web site</a
|
||||
>. Break up your page with a horizontal rule or two.
|
||||
<a href="https://www.dummies.com/">Web site</a>. Break up your
|
||||
page with a horizontal rule or two.
|
||||
</p>
|
||||
<hr />
|
||||
<p>
|
||||
Finally, link to <a href="page2.html">another page</a> in your own
|
||||
Web site.
|
||||
</p>
|
||||
<!-- And add a copyright notice.-->
|
||||
<p>© Wiley Publishing, 2011</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 <Badge>[v1.8.21](https://github.com/XTLS/Xray-core/releases/tag/v1.8.21)</Badge>
|
||||
|
||||
Кажется, мы вернулись к изначальному состоянию «диарейных» частых выпусков...
|
||||
|
||||
Как и было объявлено в v1.8.16, SplitHTTP теперь имеет начальную поддержку HTTP/3 (QUIC). Нет сомнений в том, что SplitHTTP H3 открыл новую эру.
|
||||
|
||||
- SplitHTTP H3 — это первый QUIC-подобный прокси, полностью основанный на стандарте H3 и поддерживающий CDN, который также можно использовать с обратным проксированием и Browser Dialer для сокрытия себя.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
+13
-10
@@ -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
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ Xray предоставляет следующие переменные сред
|
||||
|
||||
Файлы `.json` в этом каталоге будут читаться в порядке имен файлов как параметры конфигурации.
|
||||
|
||||
Этот параметр имеет более низкий приоритет, чем аргумент запуска `confdir`.
|
||||
|
||||
## Строгий JSON-парсер
|
||||
|
||||
- Название: `xray.json.strict` или `XRAY_JSON_STRICT`.
|
||||
|
||||
@@ -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-адрес домена.
|
||||
:::
|
||||
ы
|
||||
|
||||
@@ -38,8 +38,6 @@
|
||||
|
||||
Перенаправлять трафик на этот адрес. Может быть IP-адресом, например, `"1.2.3.4"`, или доменным именем, например, `"xray.com"`, по умолчанию `"localhost"`.
|
||||
|
||||
Если `followRedirect` (см. ниже) равно `true`, то `rewriteAddress` может быть пустым.
|
||||
|
||||
> `rewritePort`: number
|
||||
|
||||
Перенаправляет трафик на указанный порт целевого адреса, диапазон `[0, 65535]`, числовой тип. Если не заполнено или равно `0`, по умолчанию используется порт прослушиваемого адреса.
|
||||
|
||||
@@ -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) \]
|
||||
|
||||
Массив, представляющий группу пользователей, одобренных сервером.
|
||||
|
||||
@@ -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]`.
|
||||
|
||||
@@ -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 цикл проверки.
|
||||
:::
|
||||
|
||||
@@ -67,11 +67,11 @@
|
||||
|
||||
> `method`: string
|
||||
|
||||
Обязательный параметр.
|
||||
Метод шифрования Shadowsocks. Обязательный параметр.
|
||||
|
||||
> `password`: string
|
||||
|
||||
Обязательный параметр.
|
||||
Пароль аутентификации Shadowsocks. Обязательный параметр.
|
||||
|
||||
> `uot`: bool
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Адрес электронной почты, используемый для идентификации пользователя.
|
||||
Адрес электронной почты, используемый для идентификации пользователя. Необязательный параметр, если удаленный сервер требует аутентификации; в противном случае не включайте этот элемент.
|
||||
|
||||
@@ -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" включает отправку отключенного сигнала разрыва соединения. Эта функция теперь включена по умолчанию.
|
||||
|
||||
@@ -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`.<br>
|
||||
Примечание: при применении к проксируемому трафику эта опция также ограничивается опцией `address`. Например, если вы установили `ForceIPv6v4`, но в `address` не задан IPv6-адрес, то даже при наличии у целевого домена AAAA-записей они не будут разрешены.
|
||||
|
||||
### Peers
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ Xray будет применять различные локальные пол
|
||||
|
||||
> `statsUserOnline`: true | false
|
||||
|
||||
Если значение равно `true`, включить учет пользоватлей онлайн для всех пользователей текущего уровня по электронной почте.
|
||||
Если значение равно `true`, включить учет количества онлайн-пользователей для всех пользователей текущего уровня. (Критерий онлайн: наличие сетевой активности в течение 20 секунд)
|
||||
|
||||
> `bufferSize`: number
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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 ⚠⚠⚠
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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-заголовка, а соответствующее значение - строка.
|
||||
|
||||
По умолчанию пустое.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)) для передачи своего трафика.
|
||||
|
||||
Может использоваться в различных комбинациях с различными протоколами.
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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-заголовка, а соответствующее значение является строкой.
|
||||
|
||||
Значение по умолчанию: пустое.
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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`.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -2,6 +2,12 @@
|
||||
|
||||
> **В этой главе вы узнаете, как максимально просто получить Xray и начать его использовать.**
|
||||
|
||||
::: tip
|
||||
Этот раздел не обновлялся уже довольно давно, поэтому некоторые места могут быть не вполне актуальными. Мы стараемся поддерживать в актуальном состоянии в первую очередь документацию по файлу конфигурации. Если вы где-то столкнулись с трудностями и у вас есть предложения по исправлению, мы будем рады PR.
|
||||
|
||||
ℱ.
|
||||
:::
|
||||
|
||||
## Загрузка и установка
|
||||
|
||||
Xray поддерживает разнообразные платформы, и вы можете получить разные версии Xray из множества источников и различными способами.
|
||||
|
||||
@@ -225,7 +225,7 @@
|
||||

|
||||
|
||||
::: 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`. Это нормально, позже мы переименуем файл).
|
||||
|
||||

|
||||
|
||||
@@ -135,13 +135,13 @@
|
||||
</html>
|
||||
```
|
||||
|
||||
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`, не рассматриваются в рамках этой статьи.
|
||||
|
||||
@@ -349,10 +349,10 @@ Xray основан на проекте с открытым исходным к
|
||||
net.ipv4.tcp_congestion_control=bbr
|
||||
```
|
||||
|
||||
9. Перезагружаем VPS, чтобы настройки `BBR` вступили в силу:
|
||||
9. Считываем конфигурацию, чтобы настройки `BBR` вступили в силу:
|
||||
|
||||
```shell
|
||||
sudo reboot
|
||||
sudo sysctl --system
|
||||
```
|
||||
|
||||
10. Проверяем, что `BBR` включён
|
||||
|
||||
@@ -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 является необходимым.
|
||||
|
||||
@@ -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`.
|
||||
|
||||
- Пример файла:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user