Я пытаюсь найти недостающую часть головоломки.
Настройка:
*
- интерфейс: tun0 (VPN), wlp3s0 (физический/Интернет)
- IP-адрес сервера: 46.38.146.91 (проверено через Wireshark)
- Логика маршрутизации: маршрутизация на основе политик с использованием правила IP
Код: Выделить всё
ip rule show
Код: Выделить всё
0: from all lookup local
9000: from all to 172.19.0.0/28 lookup 2022
9001: from all lookup 2022 suppress_prefixlength 0
9002: from all lookup 2022
...
32766: from all lookup main
Код: Выделить всё
ip route show table 2022
Код: Выделить всё
default dev tun0 scope link
Код: Выделить всё
46.38.146.91/32
Теоретический цикл (логический разрыв):
Вот моя разбивка того, что должно произойти, когда VPN-клиент пытается отправить зашифрованный пакет на IP-адрес сервера (
Код: Выделить всё
46.38.146.91
1. Генерация пакетов. Приложение VPN создает зашифрованный пакет, предназначенный
Код: Выделить всё
46.38.146.91
2. Проверка по правилу 9001: ядро соответствует правилу 9001 (
Код: Выделить всё
lookup 2022 suppress_prefixlength 0
* Смотрит в Таблице 2022.
* Находит
Код: Выделить всё
default dev tun0
* Поскольку префикс равен 0, правило подавляет это совпадение и переходит к следующему правилу.
3. Проверка по правилу 9002: ядро соответствует правилу 9002 (
Код: Выделить всё
from all lookup 2022
* Он снова ищет в Таблице 2022.
* Он находит
Код: Выделить всё
default dev tun0
* Соответствие найдено.
4. Решение о маршрутизации: ядро направляет зашифрованный пакет в
Код: Выделить всё
tun0
5. Петля: Пакет попадает в туннельный интерфейс, приложение VPN считывает его, снова шифрует и пытается отправить... повторяя шаг 1.
Реальность:
Несмотря на приведенную выше логику, соединение работает. Я проверил Wireshark и начальное TCP-подтверждение
Код: Выделить всё
46.38.146.91
Код: Выделить всё
wlp3s0
Код: Выделить всё
tun0
Поскольку в Таблице 2022 нет конкретного маршрута для «перехвата» трафика до того, как Правило 9001 подавляет маршрут по умолчанию, а Правило 9002 неизбежно перехватывает все остальное и отправляет его в `tun0`, какой механизм позволяет исходящему трафику VPN избежать этого цикла?
Я проверил, что `iptables -t mangle` пусто, поэтому оно не основано на Fwmark. Что мне не хватает?
Подробнее здесь: https://stackoverflow.com/questions/798 ... policy-rou
Мобильная версия