Trojan — sing-box
sing-box реализует обе стороны Trojan. Поля flow нет — реализация следует оригинальной спецификации Trojan, а не форку XTLS. Семантика fallback богаче, чем в Xray: одна цель fallback плюс карта fallback_for_alpn с ключами по ALPN.
Входящий
Входящий type: "trojan":
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
users | []TrojanUser | [] | [TrojanUser] | Список принимаемых пользователей. |
fallback | *ServerOptions | (none) | ServerOptions | Цель fallback — если запрос не проходит аутентификацию Trojan, исходный поток перенаправляется сюда. Содержит `server` + `server_port`. |
fallback_for_alpn | map[string]*ServerOptions | {} | {<alpn>: ServerOptions} | Карта fallback по ALPN. Имеет приоритет над `fallback`, когда согласованный ALPN совпадает с одним из ключей. |
multiplex | *InboundMultiplexOptions | (disabled) | InboundMultiplexOptions | Мультиплексирование на стороне сервера. |
transport | *V2RayTransportOptions | (plain TCP) | V2RayTransportOptions | Необязательный транспорт в стиле V2Ray (ws, http, grpc, quic). |
Исходный код: option/trojan.go:3-11 · зафиксировано на v1.13.15 (3708fa1)
Структура встраивает ListenOptions (адрес прослушивания, порт, сниффинг, …) и InboundTLSOptionsContainer (материал TLS).
users[]
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
name | string | (unset) | <string> | Отображаемое имя, используемое в статистике и журналах. |
password | string | (required) | <string> | Пароль Trojan. |
Исходный код: option/trojan.go:13-16 · зафиксировано на v1.13.15 (3708fa1)
Исходящий
Исходящий type: "trojan":
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
password | string | (required) | <string> | Пароль, который ожидает вышестоящий сервер. |
network | NetworkList | (tcp+udp) | tcp | udp | | Ограничение только TCP или только UDP. Пустое значение включает оба. |
multiplex | *OutboundMultiplexOptions | (disabled) | OutboundMultiplexOptions | Мультиплексирование на стороне клиента (должно совпадать с настройками сервера). |
transport | *V2RayTransportOptions | (plain TCP) | V2RayTransportOptions | Транспортная обёртка в стиле V2Ray. |
Исходный код: option/trojan.go:18-26 · зафиксировано на v1.13.15 (3708fa1)
Встраивает DialerOptions, ServerOptions (server, server_port) и OutboundTLSOptionsContainer (tls).
Примеры
Входящий с одним пользователем и HTTPS-fallback:
{
"inbounds": [
{
"type": "trojan",
"tag": "trojan-in",
"listen": "::",
"listen_port": 443,
"users": [
{ "name": "alice", "password": "<password>" }
],
"tls": {
"enabled": true,
"server_name": "example.com",
"certificate_path": "/etc/ssl/cert.pem",
"key_path": "/etc/ssl/key.pem"
},
"fallback": { "server": "127.0.0.1", "server_port": 8080 },
"fallback_for_alpn": {
"h2": { "server": "127.0.0.1", "server_port": 8443 },
"http/1.1": { "server": "127.0.0.1", "server_port": 8080 }
}
}
]
}Исходящий:
{
"outbounds": [
{
"type": "trojan",
"tag": "trojan-out",
"server": "example.com",
"server_port": 443,
"password": "<password>",
"tls": {
"enabled": true,
"server_name": "example.com"
},
"transport": { "type": "ws", "path": "/tj" }
}
]
}Примечания
- Устройство fallback отличается от Xray: Xray принимает список fallback-целей, сопоставляемых по кортежам
(sni, alpn, path), тогда как sing-box принимает одну цельfallbackпо умолчанию плюс карту с ключами по ALPN. Сопоставление по пути недоступно — для этого терминируйте TLS перед sing-box. fallback_for_alpnпроверяется первой; если согласованный ALPN совпадает с одним из ключей, используется соответствующая цель; иначе применяется цельfallbackпо умолчанию.- Параметра
flowнет. Клиенты с XTLS Vision для Trojan (Xray-core с непустымflow) не смогут подключиться к Trojan-серверу sing-box.
Сравнение с другими ядрами
- Xray использует
clients[]иfallbacks[]в форме списка. См. Trojan — Xray-core. - mihomo использует единый объект прокси с
passwordна исходящей стороне и пользовательскимpasswordна входящей; он также предоставляетss-optsиз trojan-go для цепочки шифрования Shadowsocks. См. Trojan — mihomo.
Исходный код: option/trojan.go:3-26 · v1.13.15 (3708fa1)
