# Настройка конфига

## 1. Обзор

Мы используем формат YAML для файлов конфигурации.

С помощью конфигурации вы можете:

* Определить все настройки, используемые для подключения к VPN.
* Установить правила туннелирования, если это необходимо.
* Обновить настройки, чтобы применить новые правила подключения.
* Отслеживать работоспособность сервера для обеспечения надежных VPN-подключений.

Вы также можете добавлять headers вместе с конфигом в ответ сервера. [#id-4.-primenenie-headers](#id-4.-primenenie-headers "mention")

Конфиги Xray также могут обрабатываться, но мы рекомендуем использовать YAML для простоты и полной совместимости.

## 2. Обычный пример конфига&#x20;

Ниже типичный файл конфига в формате YAML, который поддерживает приложение. Для наглядности даны пояснения некоторым  полям.

{% embed url="<https://wiki.metacubex.one/en/example/conf/?h=config#__tabbed_2_1>" %}

```yaml
# Fill in your subscription URL. Names must not be duplicated.
proxy-providers:
  provider1:
    url: ""
    type: http
    interval: 86400
    health-check: {enable: true,url: "https://www.gstatic.com/generate_204", interval: 300}
    override:
      additional-prefix: "[provider1]"

  provider2:
    url: ""
    type: http
    interval: 86400
    health-check: {enable: true,url: "https://www.gstatic.com/generate_204",interval: 300}
    override:
      additional-prefix: "[provider2]"

proxies: 
  - name: "Direct"
    type: direct
    udp: true

mixed-port: 7890
ipv6: true
allow-lan: true
unified-delay: false #We recommend setting this to true. In Rabbit Hole, true is applied by default if the field is left empty.
tcp-concurrent: true
external-controller: 127.0.0.1:9090
external-ui: ui
external-ui-url: "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip"

geodata-mode: true
geox-url:
  geoip: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat"
  geosite: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat"
  mmdb: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country-lite.mmdb"
  asn: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/GeoLite2-ASN.mmdb"

find-process-mode: strict
global-client-fingerprint: chrome

profile:
  store-selected: true
  store-fake-ip: true

sniffer:
  enable: true
  sniff:
    HTTP:
      ports: [80, 8080-8880]
      override-destination: true
    TLS:
      ports: [443, 8443]
    QUIC:
      ports: [443, 8443]
  skip-domain:
    - "Mijia Cloud"
    - "+.push.apple.com"

tun:
  enable: true
  stack: mixed
  dns-hijack:
    - "any:53"
    - "tcp://any:53"
  auto-route: true
  auto-redirect: true
  auto-detect-interface: true

dns:
  enable: true
  ipv6: true
  enhanced-mode: fake-ip
  fake-ip-filter:
    - "*"
    - "+.lan"
    - "+.local"
    - "+.market.xiaomi.com"
  default-nameserver:
    - tls://223.5.5.5
    - tls://223.6.6.6
  nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query

proxy-groups:

  - name: Default
    type: select
    proxies: [Auto Select,Direct,Hong Kong,Taiwan,Japan,Singapore,United States,Other Regions,All Nodes]

  - name: Google
    type: select
    proxies: [Default,Hong Kong,Taiwan,Japan,Singapore,United States,Other Regions,All Nodes,Auto Select,Direct]

  - name: Telegram
    type: select
    proxies: [Default,Hong Kong,Taiwan,Japan,Singapore,United States,Other Regions,All Nodes,Auto Select,Direct]

  - name: Twitter
    type: select
    proxies: [Default,Hong Kong,Taiwan,Japan,Singapore,United States,Other Regions,All Nodes,Auto Select,Direct]

  - name: YouTube
    type: select
    proxies: [Default,Hong Kong,Taiwan,Japan,Singapore,United States,Other Regions,All Nodes,Auto Select,Direct]

  - name: NETFLIX
    type: select
    proxies: [Default,Hong Kong,Taiwan,Japan,Singapore,United States,Other Regions,All Nodes,Auto Select,Direct]

  - name: Spotify
    type: select
    proxies: [Default,Hong Kong,Taiwan,Japan,Singapore,United States,Other Regions,All Nodes,Auto Select,Direct]

  - name: Github
    type: select
    proxies: [Default,Hong Kong,Taiwan,Japan,Singapore,United States,Other Regions,All Nodes,Auto Select,Direct]

  - name: China
    type: select
    proxies: [Direct,Default,Hong Kong,Taiwan,Japan,Singapore,United States,Other Regions,All Nodes,Auto Select]

  - name: Others
    type: select
    proxies: [Default,Hong Kong,Taiwan,Japan,Singapore,United States,Other Regions,All Nodes,Auto Select,Direct]

  # Separator, region groups below
  - name: Hong Kong
    type: select
    include-all: true
    exclude-type: direct
    filter: "(?i)港|hk|hongkong|hong kong"

  - name: Taiwan
    type: select
    include-all: true
    exclude-type: direct
    filter: "(?i)台|tw|taiwan"

  - name: Japan
    type: select
    include-all: true
    exclude-type: direct
    filter: "(?i)日|jp|japan"

  - name: United States
    type: select
    include-all: true
    exclude-type: direct
    filter: "(?i)美|us|unitedstates|united states"

  - name: Singapore
    type: select
    include-all: true
    exclude-type: direct
    filter: "(?i)(新|sg|singapore)"

  - name: Other Regions
    type: select
    include-all: true
    exclude-type: direct
    filter: "(?i)^(?!.*(?:🇭🇰|🇯🇵|🇺🇸|🇸🇬|🇨🇳|港|hk|hongkong|台|tw|taiwan|日|jp|japan|新|sg|singapore|美|us|unitedstates)).*"

  - name: All Nodes
    type: select
    include-all: true
    exclude-type: direct

  - name: Auto Select
    type: url-test
    include-all: true
    exclude-type: direct
    tolerance: 10

rules:
  - GEOIP,lan,Direct,no-resolve
  - GEOSITE,github,Github
  - GEOSITE,twitter,Twitter
  - GEOSITE,youtube,YouTube
  - GEOSITE,google,Google
  - GEOSITE,telegram,Telegram
  - GEOSITE,netflix,NETFLIX
  - GEOSITE,spotify,Spotify
  - GEOSITE,CN,China
  - GEOSITE,geolocation-!cn,Others

  - GEOIP,google,Google
  - GEOIP,netflix,NETFLIX
  - GEOIP,telegram,Telegram
  - GEOIP,twitter,Twitter
  - GEOIP,CN,China
  - MATCH,Others
```

## 3. Логика обработки&#x20;

**1. UDP для VLESS**

Для соединений VLESS протокол UDP включается автоматически, чтобы обеспечить правильную работу таких сервисов, как VoIP.

***

**2. Unified Delay**

Функция Unified Delay включена по умолчанию для обеспечения согласованности измерений задержки на всех прокси-серверах.

***

**3. Базовый режим (особенности интерфейса и работы)**

В базовом режиме интерфейс автоматически выбирает доступные outdounds. Собираются все прокси определенные в proxies и proxy-providers.

* Когда пользователь выбирает outdound в базовом режиме, он применяется ко всем селекторам в конфиге, где имеется этот outboud.
* Если селектор не содержит выбранный outbound, правила провайдера по умолчанию остаются неизменными.

Это позволяет упростить переключение аутбаундов и в целом использование VPN для пользователей, которые имеют начальный уровень понимания цифровых технологий.&#x20;

***

**4. Автопереключение**

В конфиг автоматически добавляется группа автопереключения:

* Создается новая группа URLTEST с именем urltestrabbithole.
* В эту группу включаются все прокси из списка прокси.
* Скрытые и отфильтрованные прокси переключаются

Эта группа используется для автоматического тестирования и выбора прокси.

Функция автопереключение доступна только в базовом режиме и отключена в про-режиме.

***

**5. Обработка для iOS**

На iOS некоторые параметры проставляются автоматически:

* disableKeepAlive = true
* findProcessMode = off
* profile = null

Также, ruleProviders\[].sizeLimit устанавливается динамически:

* Минимум: 2 МБ
* Рекомендуемый максимум: 25–30 МБ

***

**6. Туннелирование / Маршрутизация**

Поведение маршрутизации зависит от режима туннелирования, выбранного в приложении.

* Туннелирование ВЫКЛ. → применяется режим GLOBAL.
* Режим «Исключить / Включить» → применяется режим RULE.

Когда включена маршрутизация на основе RULE:

* Сниффер активируется с предопределенными настройками.
* Все правила маршрутизации, определенные в конфиге провайдера, удаляются.
* Приложение применяет пользовательские правила маршрутизации, настроенные внутри приложения.

***

**7. Обработка других форматов конфигов**

Конфиги, предоставленные в форматах V2Ray или Outline, автоматически обрабатываются и преобразуются в формат, совместимый с Mihomo, перед использованием приложением.

## 4. Применение headers

Вы можете использовать настраиваемые headers для гибкой настройки приложения.&#x20;

```yaml
rabbit hole headers:
    use-progress-bar: 1 / 0 # health (0) by default
    pro-mode: off / on # off by default
    protocols-hidden: 1 / 0 # 0 by default
    
default headers:
    profile-title: VlBOIG5hbWU= # base64
    subscription-userinfo: upload=0; download=17084549; total=1073741824000; expire=1774990740 # traffic in bytes, expire unix time
    subscription-refill-date: 1775002200 # unix time
    support-url: https://example.com
```

Мы отправляем headers при каждом запросе конфига с сервера провайдера. Обычно это происходит при добавлении или обновлении подписки.

```yaml
headers:
    x-hwid: 03A813E5-83AD-4CF5-892C-C511762E25CC 
    x-device-model: iPhone14,1
    x-device-os: iOS
    x-ver-os: 26.1
    User-Agent: Clash-Meta/RabbitHole (Build #versionNumber; language #lang)
```

## 5. Рекомендации

Следуйте этим рекомендациям, чтобы обеспечить стабильную работу и лучшую совместимость с приложением.

#### Размещайте основной селектор первым

Основной селектор следует размещать первым в конфигурации, чтобы он правильно отображался в базовом режиме. Под основным селектором мы подразумеваем селектор, предназначенный для обработки всех сервисов и общего трафика.

***

#### Учитывайте ограничения памяти iOS

В iOS установлено ограничение в 50 МБ для расширения VPN. Старайтесь не добавлять в конфигурацию чрезмерно объёмные наборы правил.

***

#### Рекомендуемый размер ruleProviders

Мы не рекомендуем превышать 25–30 МБ для общего размера ruleProviders, так как более крупные наборы правил могут повлиять на производительность и стабильность.

***

#### Избегайте размещения Hysteria первым в fallback группах

Не размещайте прокси Hysteria в качестве первого прокси в fallback группе, так как это может привести к нестабильной работе при переключении клиента между проксями.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://rabbit-hole-1.gitbook.io/rabbit-hole-docs/ru-rabbit-hole-docs/for-devs/nastroika-konfiga.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
