Виртуальный адаптер ловит тех, кто игнорирует прокси
TUN создаёт виртуальный сетевой адаптер, и система отдаёт трафик ему. Программе больше не нужно знать, что такое прокси: её пакеты приходят на адаптер, а дальше за дело берётся ядро. Именно так под контроль попадают игры, загрузчики и консольные утилиты, которые системный прокси не замечают.
Плата за это — глубина. Когда ломается системный прокси, перестаёт работать один браузер. Когда ломается TUN, перестаёт работать вся машина.
Есть и предварительное условие. В Windows сначала нужно установить режим службы, а в macOS и Linux при первом включении запрашивается пароль администратора для вспомогательного компонента. Без этого шага переключатель сам возвращается обратно.
Отскакивающий переключатель — не поломка
Это значит, что привилегированная часть ещё не на месте. Установите службу и вернитесь к переключателю.
Решите эти три вопроса до включения
- 1
Выключите системный прокси
Вместе они не быстрее. Как только охват начинает пересекаться, странно ведущая себя программа оставляет вас в неведении: пришли её пакеты через адаптер или через прочитанную настройку прокси. Один путь разбирать намного проще.
- 2
Сетевой стек пока не трогайте
В настройках доступно несколько реализаций: gVisor, system, mixed и подобные. У варианта по умолчанию самая широкая совместимость. Меняйте только тогда, когда конкретный вид трафика ведёт себя неправильно, и после смены выключите и включите TUN: стек выбирается в момент подъёма адаптера.
- 3
Определите, что не должно попадать на адаптер
Внутренние домены, имена устройств в локальной сети, принтер и NAS лучше развести правилами заранее. Если обнаружить это посреди работы, подозрение сначала падёт на устройство, а не на TUN.
Что меняется, когда уезжает и DNS
С включённым TUN разрешение имён тоже переходит к нему. Это не побочный эффект, а сам механизм: без контроля над DNS невозможно маршрутизировать трафик по доменам. Отсюда же и неприятности: внутренние домены и имена локальных устройств могут не разрешаться вовсе или разрешаться и уходить на удалённый узел. Правило DIRECT для локальной подсети и этих доменов возвращает их на место. Что до игр, с UDP режим TUN справляется лучше системного прокси, но итог зависит от того, пропускает ли UDP сам узел.
- Пока включён TUN, системный прокси выключен
- Локальные подсети и имена устройств уходят в DIRECT ближе к началу правил
- После смены стека выключите и включите TUN, иначе загружен старый
Частые вопросы
Можно ли включить системный прокси и TUN одновременно?
Можно, но повода для этого почти нет. Их охват сильно пересекается, быстрее ничего не станет, зато добавится неизвестное. Когда программа поведёт себя странно, вы не скажете, пришли её пакеты через адаптер или через настройку прокси, которую она прочитала.
После включения TUN не открываются NAS и принтер в домашней сети.
Маршрутизация и DNS ушли на виртуальный адаптер, поэтому имя устройства либо не разрешается, либо разрешается и уходит в прокси. Поставьте правило DIRECT для локальной подсети и имён устройств ближе к началу списка, а в настройках DNS направьте эти домены на локальный сервер. Пул fake-ip по умолчанию равен 198.18.0.1/16, и если ваша сеть использует близкий диапазон, исключите и его.