TUN¶
enable¶
Включение tun
stack¶
Стек режима tun, если нет проблем с использованием, рекомендуется использовать стек mixed
, по умолчанию используется gvisor
Возможные значения: system/gvisor/mixed
Различия между стеками протоколов
system
использует системный стек протоколов, обеспечивает более стабильный/комплексный опыт работы с tun и потребляет относительно меньше ресурсов, чем другие стекиgvisor
реализует сетевой стек протоколов в пользовательском пространстве, обеспечивая повышенную безопасность и изоляцию, а также позволяет избежать переключений между ядром операционной системы и пользовательским пространством, что в определенных ситуациях может обеспечить лучшую производительность обработки сетиmixed
смешанный стек, tcp использует стекsystem
, udp использует стекgvisor
, опыт использования может быть относительно лучше- Простое тестирование производительности
- Если включен брандмауэр, невозможно использовать стеки протоколов
system
иmixed
. Разрешите ядро через:- Windows: Параметры -> Центр безопасности Windows -> Разрешить приложение через брандмауэр -> Выберите ядро
- MacOS: Обычно настройка не требуется, брандмауэр по умолчанию разрешает подписанное ПО. Если при включенном брандмауэре возникают проблемы, попробуйте разрешить: Системные настройки -> Сеть -> Брандмауэр -> Параметры -> Добавить приложение mihomo
- Linux: Обычно настройка не требуется, брандмауэр по умолчанию не блокирует приложения. Если при включенном брандмауэре возникают проблемы, попробуйте разрешить исходящий трафик для TUN-интерфейса (предположим, что TUN-интерфейс называется Mihomo):
sudo iptables -A OUTPUT -o Mihomo -j ACCEPT
device¶
Указывает имя TUN-устройства, на устройствах MacOS можно использовать только имена сетевых карт, начинающиеся с utun
auto-route¶
Автоматическая настройка глобальной маршрутизации, автоматически направляет весь глобальный трафик в TUN-устройство
auto-redirect¶
Поддерживается только на Linux, автоматически настраивает iptables/nftables для перенаправления TCP-соединений, требует включенного auto-route
На Android:
Перенаправляет только локальные IPv4-соединения. Для совместного использования VPN-соединения через точку доступа или ретранслятор используйте VPNHotspot.
На Linux:
auto-redirect с auto-route теперь может работать на роутерах без вмешательства, как и ожидалось.
auto-detect-interface¶
Автоматически определяет интерфейс для исходящего трафика. На устройствах с несколькими сетевыми картами, подключенными одновременно, рекомендуется вручную указать исходящую сетевую карту
dns-hijack¶
Перехват DNS, направляет соответствующие соединения во внутренний модуль dns, если протокол не указан, то используется udp://
- На
MacOS
/Windows
невозможно автоматически перехватывать DNS-запросы, отправляемые в локальную сеть - На
Android
при включенномЧастном DNS
невозможно автоматически перехватывать DNS-запросы
strict-route¶
Применяет строгие правила маршрутизации при включенном auto-route
На Linux:
- Делает недоступными неподдерживаемые сети
- Маршрутизирует все соединения через tun
Это предотвращает утечку адресов и обеспечивает работу перехвата DNS на Android.
На Windows:
- Добавляет правила брандмауэра для блокирования поведения разрешения DNS для мульти-хост систем Windows, которое может вызвать утечку DNS
Это может привести к тому, что некоторые приложения (например, VirtualBox) не будут работать должным образом в определенных ситуациях.
mtu¶
Максимальная единица передачи, влияет на скорость в экстремальных условиях. Обычным пользователям достаточно значения по умолчанию.
gso¶
Включает Generic Segmentation Offload, поддерживается только на Linux
gso-max-size¶
Максимальная длина блоков данных
udp-timeout¶
Время истечения UDP NAT в секундах, по умолчанию 300 (5 минут)
iproute2-table-index¶
Индекс таблицы маршрутизации iproute2, создаваемой auto-route
, по умолчанию используется 2022
iproute2-rule-index¶
Начальный индекс правил iproute2, создаваемых auto-route
, по умолчанию используется 9000
endpoint-independent-nat¶
Включает NAT, независимый от конечной точки. Производительность может немного снизиться, поэтому не рекомендуется включать, если в этом нет необходимости.
route-address-set¶
Добавляет правила целевых IP CIDR из указанного набора правил в брандмауэр, несоответствующий трафик обходит маршрутизацию.
Поддерживается только на Linux и требует nftables, а также включенных auto-route
и auto-redirect
.
Конфликтует с routing-mark в любой конфигурации
route-exclude-address-set¶
Добавляет правила целевых IP CIDR из указанного набора правил в брандмауэр, соответствующий трафик обходит маршрутизацию.
Поддерживается только на Linux и требует nftables, а также включенных auto-route
и auto-redirect
.
Конфликтует с routing-mark в любой конфигурации
route-address¶
Маршрутизирует пользовательские сегменты сети вместо маршрута по умолчанию при включенном auto-route
. Обычно не требует настройки.
route-exclude-address¶
Исключает пользовательские сегменты сети при включенном auto-route
include-interface¶
Ограничивает маршрутизируемые интерфейсы, по умолчанию без ограничений. Конфликтует с exclude-interface
, не может быть настроено одновременно.
exclude-interface¶
Исключает интерфейсы из маршрутизации. Конфликтует с include-interface
, не может быть настроено одновременно.
include-uid¶
Включает пользователей, чей трафик будет маршрутизирован через Tun. Пользователи, не указанные в настройке, не будут маршрутизированы через Tun. По умолчанию без ограничений.
Правила UID поддерживаются только на Linux и требуют auto-route
include-uid-range¶
Включает диапазоны пользователей, чей трафик будет маршрутизирован через Tun. Пользователи, не указанные в настройке, не будут маршрутизированы через Tun.
exclude-uid¶
Исключает пользователей, чей трафик не будет маршрутизирован через Tun.
exclude-uid-range¶
Исключает диапазоны пользователей, чей трафик не будет маршрутизирован через Tun.
include-android-user¶
Включает пользователей Android, чей трафик будет маршрутизирован через Tun. Пользователи, не указанные в настройке, не будут маршрутизированы через Tun.
Правила для пользователей и приложений Android поддерживаются только на Android и требуют auto-route
Частые пользователи | ID |
---|---|
Владелец устройства | 0 |
Второй профиль | 10 |
Многоэкземплярные приложения | 999 |
include-package¶
Включает пакеты приложений Android, чей трафик будет маршрутизирован через Tun. Пакеты приложений, не указанные в настройке, не будут маршрутизированы через Tun.
exclude-package¶
Исключает пакеты приложений Android, чей трафик не будет маршрутизирован через Tun.
Устаревший синтаксис, скоро будет удален¶
inet4-route-address¶
Маршрутизирует пользовательские сегменты сети вместо маршрута по умолчанию при включенном auto-route
. Обычно не требует настройки.
inet6-route-address¶
Маршрутизирует пользовательские сегменты сети вместо маршрута по умолчанию при включенном auto-route
. Обычно не требует настройки.
inet4-route-exclude-address¶
Исключает пользовательские сегменты сети при включенном auto-route
inet6-route-exclude-address¶
Исключает пользовательские сегменты сети при включенном auto-route
Тестирование производительности сетевых стеков Tun¶
Сверху вниз: system/gvisor/lwip
, только для справки, платформа - linux, Windows и MacOS могут иметь различия