mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2026-10-07 22:38:10 +03:00
Xray-core: Forbid unencrypted outbounds on public Internet for VLESS and Trojan; Remove "none/zero/plain" for VMess and Shadowsocks
This commit is contained in:
@@ -14,7 +14,6 @@
|
||||
- aes-128-gcm
|
||||
- chacha20-poly1305 или chacha20-ietf-poly1305
|
||||
- xchacha20-poly1305 или xchacha20-ietf-poly1305
|
||||
- none или plain
|
||||
|
||||
Новый формат протокола Shadowsocks 2022 повышает производительность и обеспечивает полноценную защиту от повторов, устраняя следующие проблемы безопасности старого протокола:
|
||||
|
||||
@@ -23,10 +22,6 @@
|
||||
- Отсутствие защиты от повторов для UDP
|
||||
- Поведение TCP, которое может использоваться для активного зондирования
|
||||
|
||||
::: danger
|
||||
При использовании метода шифрования "none" трафик передается в открытом виде. В целях безопасности не используйте этот метод в публичных сетях.
|
||||
:::
|
||||
|
||||
## InboundConfigurationObject
|
||||
|
||||
`InboundConfigurationObject` соответствует элементу `settings` в [`InboundObject`](../inbound.md).
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
Протокол [Trojan](https://trojan-gfw.github.io/trojan/protocol).
|
||||
|
||||
::: danger
|
||||
Trojan предназначен для работы в правильно настроенном зашифрованном TLS-туннеле.
|
||||
:::
|
||||
|
||||
## InboundConfigurationObject
|
||||
|
||||
`InboundConfigurationObject` соответствует элементу `settings` в [`InboundObject`](../inbound.md).
|
||||
@@ -36,6 +32,10 @@ Trojan предназначен для работы в правильно нас
|
||||
}
|
||||
```
|
||||
|
||||
::: warning
|
||||
Trojan должен использоваться с транспортной защитой [TLS](https://xtls.github.io/config/transports/tls.html); использовать `streamSettings.security: "none"` допустимо только тогда, когда адрес другой стороны является private-адресом (например, частным IP-адресом или частным доменным именем) и сам канал находится в доверенной сети. В публичных средах также требуется Mux; иначе, если внутренняя полезная нагрузка сама является TLS, это превращается в TiT и легко обнаруживается ([PoC](https://github.com/XTLS/Trojan-killer)).
|
||||
:::
|
||||
|
||||
> `users`: \[ [UserObject](#userobject) \]
|
||||
|
||||
Массив, представляющий группу пользователей, одобренных сервером.
|
||||
|
||||
@@ -37,6 +37,10 @@ VLESS - это легкий транспортный протокол без с
|
||||
}
|
||||
```
|
||||
|
||||
::: warning
|
||||
VLESS должен использоваться с внешним уровнем транспортной защиты; `streamSettings.security: "none"` допустимо только тогда, когда адрес другой стороны является private-адресом (например, частным IP-адресом или частным доменным именем) и сам канал находится в доверенной сети, либо при включенном `VLESS Encryption`.
|
||||
:::
|
||||
|
||||
> `users`: \[ [UserObject](#userobject) \]
|
||||
|
||||
Массив, представляющий группу пользователей, одобренных сервером.
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
- aes-128-gcm
|
||||
- chacha20-poly1305 или chacha20-ietf-poly1305
|
||||
- xchacha20-poly1305 или xchacha20-ietf-poly1305
|
||||
- none или plain
|
||||
|
||||
Новый формат протокола Shadowsocks 2022 повышает производительность и обеспечивает полную защиту от повторов, решая следующие проблемы безопасности старого протокола:
|
||||
|
||||
@@ -23,10 +22,6 @@
|
||||
- Отсутствие защиты от повторов UDP
|
||||
- Поведение TCP, которое можно использовать для активного зондирования
|
||||
|
||||
::: danger
|
||||
При использовании метода шифрования "none" трафик передается в открытом виде. В целях безопасности не используйте этот метод в общедоступных сетях.
|
||||
:::
|
||||
|
||||
## OutboundConfigurationObject
|
||||
|
||||
`OutboundConfigurationObject` соответствует элементу `settings` в [`OutboundObject`](../outbound.md).
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
Протокол [Trojan](https://trojan-gfw.github.io/trojan/protocol).
|
||||
|
||||
::: danger
|
||||
Trojan предназначен для работы в правильно настроенном зашифрованном TLS-туннеле.
|
||||
:::
|
||||
|
||||
## OutboundConfigurationObject
|
||||
|
||||
`OutboundConfigurationObject` соответствует элементу `settings` в [`OutboundObject`](../outbound.md).
|
||||
@@ -29,6 +25,10 @@ Trojan предназначен для работы в правильно нас
|
||||
}
|
||||
```
|
||||
|
||||
::: warning
|
||||
Trojan должен использоваться с транспортной защитой [TLS](https://xtls.github.io/config/transports/tls.html); использовать `streamSettings.security: "none"` допустимо только тогда, когда адрес другой стороны является private-адресом (например, частным IP-адресом или частным доменным именем) и сам канал находится в доверенной сети. В публичных средах также требуется Mux; иначе, если внутренняя полезная нагрузка сама является TLS, это превращается в TiT и легко обнаруживается ([PoC](https://github.com/XTLS/Trojan-killer)).
|
||||
:::
|
||||
|
||||
> `address`: address
|
||||
|
||||
Адрес сервера, поддерживаются IPv4, IPv6 и доменные имена. Обязательный параметр.
|
||||
|
||||
@@ -29,6 +29,10 @@ VLESS - это легкий транспортный протокол без с
|
||||
}
|
||||
```
|
||||
|
||||
::: warning
|
||||
VLESS должен использоваться с внешним уровнем транспортной защиты; `streamSettings.security: "none"` допустимо только тогда, когда адрес другой стороны является private-адресом (например, частным IP-адресом или частным доменным именем) и сам канал находится в доверенной сети, либо при включенном `VLESS Encryption`.
|
||||
:::
|
||||
|
||||
> `address`: address
|
||||
|
||||
Адрес сервера, указывающий на сервер, поддерживаются доменные имена, IPv4 и IPv6.
|
||||
|
||||
@@ -57,17 +57,13 @@ VMess полагается на системное время. Убедитес
|
||||
|
||||
Значение level соответствует значению `level` в разделе [policy](../policy.md#policyobject). Если не указано, используется значение по умолчанию - 0.
|
||||
|
||||
> `security`: "aes-128-gcm" | "chacha20-poly1305" | "auto" | "none" | "zero"
|
||||
> `security`: "aes-128-gcm" | "chacha20-poly1305" | "auto"
|
||||
|
||||
Метод шифрования. Клиент будет отправлять данные с использованием настроенного метода шифрования, сервер автоматически распознает его, настройка на сервере не требуется.
|
||||
|
||||
- `"aes-128-gcm"`: Использовать алгоритм `AES-128-GCM`.
|
||||
- `"chacha20-poly1305"`: Использовать алгоритм `Chacha20-Poly1305`.
|
||||
- `"auto"`: Значение по умолчанию. Автоматический выбор (для архитектур `AMD64`, `ARM64` или `s390x` будет выбран метод шифрования `aes-128-gcm`, в остальных случаях — `Chacha20-Poly1305`).
|
||||
- `"none"`: Без шифрования, сохраняется структура сообщения `VMess`.
|
||||
- `"zero"`: Без шифрования, поток данных копируется напрямую (аналогично `VLESS`).
|
||||
|
||||
Не рекомендуется использовать псевдошифрование `"none"` или `"zero"` без включенного `TLS` шифрования и принудительной проверки сертификата. Независимо от выбранного метода шифрования, заголовки пакетов `VMess` всегда защищены шифрованием и аутентификацией.
|
||||
|
||||
Обратите внимание, что `auto` определяет поддержку аппаратного ускорения `AES` только на стороне клиента. Если сервер не поддерживает аппаратное ускорение `AES`, необходимо вручную установить `"chacha20-poly1305"`. Это очень важно, поскольку `Chacha20-Poly1305` на платформах с поддержкой ускорения `AES` работает примерно на 48% медленнее, чем `AES-128-GCM`, однако на платформах без аппаратного ускорения `AES`, `AES-128-GCM` будет работать более чем на 2000% медленнее, чем `Chacha20-Poly1305`.
|
||||
|
||||
|
||||
@@ -48,6 +48,8 @@
|
||||
}
|
||||
```
|
||||
|
||||
### Способы передачи
|
||||
|
||||
> `network`: "raw" | "xhttp" | "mkcp" | "grpc" | "websocket" | "httpupgrade" | "hysteria"
|
||||
|
||||
Способ передачи, используемый потоком данных. Значение по умолчанию — `raw`.
|
||||
@@ -80,7 +82,7 @@
|
||||
|
||||
Настройки Hysteria для потока данных. Действуют только когда `network` равно `hysteria`.
|
||||
|
||||
---
|
||||
### Безопасность транспорта
|
||||
|
||||
> `security`: "none" | "reality" | "tls"
|
||||
|
||||
@@ -108,7 +110,7 @@ REALITY сейчас является одной из самых сильных
|
||||
Действуют только когда `security` равно `tls`.
|
||||
Поддерживается использование вместе с транспортами `RAW`, `XHTTP`, `mKCP`, `gRPC`, `WebSocket`, `HTTPUpgrade` и `Hysteria`.
|
||||
|
||||
---
|
||||
### Дополнительные настройки
|
||||
|
||||
> `finalmask`: [FinalMaskObject](./transports/finalmask.md)
|
||||
|
||||
@@ -117,3 +119,58 @@ REALITY сейчас является одной из самых сильных
|
||||
> `sockopt`: [SockoptObject](./transports/sockopt.md)
|
||||
|
||||
Настройки низкоуровневого сетевого поведения.
|
||||
|
||||
## Краткая таблица совместимости транспорта
|
||||
|
||||
Для входящих и исходящих подключений способ передачи и безопасность транспорта настраиваются через `streamSettings`. В реальной конфигурации прокси-протокол, способ передачи и безопасность транспорта должны быть совместимы друг с другом.
|
||||
|
||||
### Входящие/исходящие протоколы и способы передачи
|
||||
|
||||
Эта таблица соответствует сочетанию `protocol + streamSettings.network`.
|
||||
|
||||
| | `raw` | `xhttp` | `grpc` | `websocket` | `httpupgrade` | `mkcp` | `hysteria` |
|
||||
| --------------------------------------------------------------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- |
|
||||
| `http` | Поддерживается | Поддерживается | Поддерживается | Поддерживается | Поддерживается | Поддерживается | Поддерживается |
|
||||
| `socks` <sup><a href="#protocol-transport-note-1">[1]</a></sup> | Ограниченно | Ограниченно | Ограниченно | Ограниченно | Ограниченно | Ограниченно | Ограниченно |
|
||||
| `shadowsocks` <sup><a href="#protocol-transport-note-1">[1]</a></sup> | Ограниченно | Ограниченно | Ограниченно | Ограниченно | Ограниченно | Ограниченно | Ограниченно |
|
||||
| `vmess` | Поддерживается | Поддерживается | Поддерживается | Поддерживается | Поддерживается | Поддерживается | Поддерживается |
|
||||
| `vless` | Поддерживается | Поддерживается | Поддерживается | Поддерживается | Поддерживается | Поддерживается | Поддерживается |
|
||||
| `trojan` | Поддерживается | Поддерживается | Поддерживается | Поддерживается | Поддерживается | Поддерживается | Поддерживается |
|
||||
| `hysteria` | Неприменимо | Неприменимо | Неприменимо | Неприменимо | Неприменимо | Неприменимо | Поддерживается |
|
||||
| `wireguard` | Неприменимо | Неприменимо | Неприменимо | Неприменимо | Неприменимо | Неприменимо | Неприменимо |
|
||||
|
||||
<small id="protocol-transport-note-1">[1] Если XUDP не включен для Socks или Shadowsocks, UDP-трафик использует собственный UDP-маршрут протокола и обходит настроенный способ передачи; на TCP-трафик это ограничение не распространяется. См. [XUDP](./outbound.md#muxobject).</small><br>
|
||||
|
||||
### Способы передачи и безопасность транспорта
|
||||
|
||||
Эта таблица соответствует сочетанию `streamSettings.network + streamSettings.security`.
|
||||
|
||||
| | `none` | `tls` | `reality` |
|
||||
| ------------- | ----------------- | -------------- | ----------------- |
|
||||
| `raw` | Поддерживается | Поддерживается | Поддерживается |
|
||||
| `xhttp` | Поддерживается | Поддерживается | Поддерживается |
|
||||
| `grpc` | Поддерживается | Поддерживается | Поддерживается |
|
||||
| `websocket` | Поддерживается | Поддерживается | Не поддерживается |
|
||||
| `httpupgrade` | Поддерживается | Поддерживается | Не поддерживается |
|
||||
| `mkcp` | Поддерживается | Поддерживается | Не поддерживается |
|
||||
| `hysteria` | Не поддерживается | Обязательно | Не поддерживается |
|
||||
|
||||
### Входящие/исходящие протоколы и безопасность транспорта
|
||||
|
||||
Эта таблица соответствует сочетанию `protocol + streamSettings.security`.
|
||||
|
||||
| | `none` | `tls` | `reality` | Безопасность на уровне протокола |
|
||||
| ------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
|
||||
| `http` | Поддерживается | Поддерживается | Поддерживается | Нет |
|
||||
| `socks` | Поддерживается | Ограниченно <sup><a href="#protocol-security-note-1">[1]</a></sup> | Ограниченно <sup><a href="#protocol-security-note-1">[1]</a></sup> | Нет |
|
||||
| `shadowsocks` | Поддерживается | Ограниченно <sup><a href="#protocol-security-note-1">[1]</a></sup> | Ограниченно <sup><a href="#protocol-security-note-1">[1]</a></sup> | Шифрование и целостность полезной нагрузки <sup><a href="#protocol-security-note-2">[2]</a></sup> |
|
||||
| `vmess` | Поддерживается | Поддерживается | Поддерживается | Аутентификация рукопожатия и шифрование полезной нагрузки <sup><a href="#protocol-security-note-2">[2]</a></sup> |
|
||||
| `vless` | Ограниченно <sup><a href="#protocol-security-note-3">[3]</a></sup> | Поддерживается | Поддерживается | Опциональное Encryption <sup><a href="#protocol-security-note-4">[4]</a></sup> |
|
||||
| `trojan` | Ограниченно <sup><a href="#protocol-security-note-3">[3]</a></sup> | Поддерживается | Поддерживается | Только аутентификация |
|
||||
| `hysteria` | Не поддерживается | Обязательно | Не поддерживается | Нет (зависит от TLS) |
|
||||
| `wireguard` | Неприменимо | Неприменимо | Неприменимо | Зашифрованный туннель <sup><a href="#protocol-security-note-2">[2]</a></sup> |
|
||||
|
||||
<small id="protocol-security-note-1">[1] Если XUDP не включен для Socks или Shadowsocks, UDP-трафик использует собственный UDP-маршрут протокола и обходит настроенный TLS или REALITY; на TCP-трафик это ограничение не распространяется. См. [XUDP](./outbound.md#muxobject).</small><br>
|
||||
<small id="protocol-security-note-2">[2] Shadowsocks и VMess защищают полезную нагрузку, но не обеспечивают прямую секретность уровня TLS 1.3, а их трафик по-прежнему поддается классификации. Криптография WireGuard достаточно надежна, но характерный и неизменный UDP-профиль легко распознать и заблокировать. Ни один из этих трех протоколов не создает видимость обычного HTTPS-трафика, которую обеспечивают TLS/REALITY, поэтому они не подходят для прямого обхода блокировок.</small><br>
|
||||
<small id="protocol-security-note-3">[3] Когда `streamSettings.security` имеет значение `none`, VLESS (без включенного Encryption) и Trojan могут подключаться только к адресам частной сети.</small><br>
|
||||
<small id="protocol-security-note-4">[4] VLESS Encryption является опциональным и по умолчанию отключен (`encryption: "none"`). После включения он позволяет подключаться к публичным сетевым адресам, даже если `streamSettings.security` имеет значение `none`. Он защищает полезную нагрузку VLESS, но не создает видимость обычного HTTPS-трафика как TLS/REALITY, поэтому не подходит для прямого обхода блокировок.</small>
|
||||
|
||||
Reference in New Issue
Block a user