mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-08-02 23:49:34 +08:00
167 lines
8.4 KiB
Markdown
167 lines
8.4 KiB
Markdown
🇬🇧 [English](Custom-JSON-Config-en) | 🇷🇺 [Русский](Custom-JSON-Config-ru)
|
||
|
||
# Пользовательский JSON конфиг
|
||
|
||
**Пользовательский JSON** — режим маршрутизации, позволяющий полностью обойти UCI-конфигурацию Re:HomeProxy и использовать «сырой» JSON-конфиг формата [sing-box](https://sing-box.sagernet.org) / hiddify-core напрямую. Предназначен для опытных пользователей, которым нужен тонкий контроль, недоступный через веб-интерфейс.
|
||
|
||
Чтобы включить режим: **Re:HomeProxy → Клиент → Настройки маршрутизации** → установить **Режим маршрутизации** в значение **Пользовательский JSON**.
|
||
|
||
Файл конфигурации размещается по пути `/etc/homeproxy/hiddify-c.json`.
|
||
|
||
---
|
||
|
||
## Структура конфига
|
||
|
||
Конфиг hiddify-core — это JSON-объект. Основные секции верхнего уровня:
|
||
|
||
| Секция | Назначение |
|
||
|--------|-----------|
|
||
| `log` | Уровень логирования и путь к файлу лога |
|
||
| `dns` | DNS-серверы, правила и стратегия разрешения |
|
||
| `inbounds` | Как трафик попадает в прокси (tproxy, tun, socks, http и др.) |
|
||
| `outbounds` | Куда трафик выходит (прямо, через прокси-серверы, цепочки) |
|
||
| `route` | Правила сопоставления входящего трафика с исходящими |
|
||
| `experimental` | Кэш, Clash API и другие экспериментальные возможности |
|
||
|
||
Минимальный рабочий конфиг требует как минимум одного inbound, двух outbound (`proxy` + `direct`) и правил маршрутизации.
|
||
|
||
**Полная документация:** [Конфигурация sing-box](https://sing-box.sagernet.org/configuration/)
|
||
|
||
Отдельные разделы:
|
||
- [DNS](https://sing-box.sagernet.org/configuration/dns/)
|
||
- [Inbounds](https://sing-box.sagernet.org/configuration/inbound/)
|
||
- [Outbounds](https://sing-box.sagernet.org/configuration/outbound/)
|
||
- [Route](https://sing-box.sagernet.org/configuration/route/)
|
||
|
||
---
|
||
|
||
## hiddify-core и sing-box
|
||
|
||
hiddify-core — форк sing-box, в целом совместимый по формату конфига. Ключевые отличия:
|
||
|
||
- **Дополнительные протоколы** — hiddify-core поддерживает протоколы, которых нет в upstream sing-box или которые появились в нём позже. Это AnyTLS, расширенные опции для некоторых существующих протоколов. Полный список — на странице [Поддерживаемые протоколы](Supported-Protocols-ru).
|
||
- **Расширения hiddify** — некоторые дополнительные поля и опции специфичны для hiddify. Они задокументированы в [руководстве HiddifyCli](https://hiddify.com/app/HiddifyCli-guide/#run-config-or-subscription-link-in-hiddifycli-with-hiddifyapp-settings).
|
||
- **Различия версий** — hiddify-core может опережать или отставать от конкретного релиза sing-box. Если функция sing-box не работает — проверьте release notes hiddify-core.
|
||
|
||
При написании конфигов отталкивайтесь от документации sing-box, обращаясь к руководству hiddify-core там, где поведение отличается.
|
||
|
||
---
|
||
|
||
## Пример скелета конфига
|
||
|
||
```json
|
||
{
|
||
"log": {
|
||
"disabled": false,
|
||
"level": "warn",
|
||
"output": "/var/run/homeproxy/hiddify-c.log",
|
||
"timestamp": true
|
||
},
|
||
"dns": {
|
||
"servers": [
|
||
{ "tag": "remote", "address": "tls://1.1.1.1" },
|
||
{ "tag": "local", "address": "223.5.5.5", "detour": "direct" }
|
||
],
|
||
"rules": [
|
||
{ "geosite": "cn", "server": "local" }
|
||
]
|
||
},
|
||
"inbounds": [
|
||
{
|
||
"type": "tproxy",
|
||
"tag": "tproxy-in",
|
||
"listen": "::",
|
||
"listen_port": 5332,
|
||
"network": "udp",
|
||
"sniff": true
|
||
}
|
||
],
|
||
"outbounds": [
|
||
{
|
||
"type": "vless",
|
||
"tag": "proxy",
|
||
"server": "your.server.example",
|
||
"server_port": 443
|
||
},
|
||
{ "type": "direct", "tag": "direct" },
|
||
{ "type": "block", "tag": "block" },
|
||
{ "type": "dns", "tag": "dns-out" }
|
||
],
|
||
"route": {
|
||
"default_mark": 100,
|
||
"rules": [
|
||
{ "protocol": "dns", "outbound": "dns-out" },
|
||
{ "geosite": "cn", "outbound": "direct" },
|
||
{ "geoip": "cn", "outbound": "direct" }
|
||
],
|
||
"final": "proxy"
|
||
}
|
||
}
|
||
```
|
||
|
||
Это только иллюстрация — адаптируйте тип/порт inbound, настройки outbound и правила маршрутизации под свою конфигурацию.
|
||
|
||
---
|
||
|
||
## Советы
|
||
|
||
- **Проверяйте перед сохранением.** Некорректный JSON будет молча проигнорирован. Используйте JSON-валидатор перед вставкой — ошибки синтаксиса не отображаются в интерфейсе. После сохранения проверьте лог (см. ниже), чтобы убедиться, что конфиг загрузился корректно.
|
||
|
||
- **Логи.** Если конфиг применился, но трафик не работает — проверьте лог ядра в **Re:HomeProxy → Ядро и службы** или через SSH: `tail -f /var/run/homeproxy/hiddify-c.log`.
|
||
|
||
- **Порты входящих соединений.** Правила файрвола Re:HomeProxy ожидают конкретные порты. Если вы меняете порты inbound в пользовательском JSON, правила nftables перестанут совпадать и трафик не достигнет inbound. Стандартная конфигурация inbounds, используемая Re:HomeProxy:
|
||
|
||
```json
|
||
"inbounds": [
|
||
{
|
||
"type": "direct",
|
||
"tag": "dns-in",
|
||
"listen": "::",
|
||
"listen_port": 5333
|
||
},
|
||
{
|
||
"type": "mixed",
|
||
"tag": "mixed-in",
|
||
"listen": "::",
|
||
"listen_port": 5330,
|
||
"udp_timeout": "300s",
|
||
"sniff": true,
|
||
"sniff_override_destination": true,
|
||
"set_system_proxy": false
|
||
},
|
||
{
|
||
"type": "redirect",
|
||
"tag": "redirect-in",
|
||
"listen": "::",
|
||
"listen_port": 5331,
|
||
"sniff": true,
|
||
"sniff_override_destination": true
|
||
},
|
||
{
|
||
"type": "tproxy",
|
||
"tag": "tproxy-in",
|
||
"listen": "::",
|
||
"listen_port": 5332,
|
||
"network": "udp",
|
||
"udp_timeout": "300s",
|
||
"sniff": true,
|
||
"sniff_override_destination": true
|
||
}
|
||
]
|
||
```
|
||
|
||
Если нужно изменить порты — обновите их и в пользовательском JSON, и в `/etc/config/homeproxy` (опции `mixed_port`, `redirect_port`, `tproxy_port`, `dns_port`), чтобы правила файрвола оставались согласованными.
|
||
|
||
- **`default_mark`.** **Обязательное** поле в секции `route` для предотвращения петель маршрутизации tproxy. Без него собственный исходящий трафик hiddify-core перехватывается правилами nftables и снова направляется в прокси. Значение должно совпадать с `self_mark` в `/etc/config/homeproxy` (по умолчанию: `100`):
|
||
|
||
```json
|
||
"route": {
|
||
"default_mark": 100,
|
||
...
|
||
}
|
||
```
|
||
|
||
Если вы меняете это значение — обновите `self_mark` в `/etc/config/homeproxy` соответственно.
|
||
|
||
- **Теги outbound.** Правила маршрутизации ссылаются на outbound по имени тега — следите за их согласованностью.
|