Чому VPN із повним тунелем ховає ваші маршрутизовані локальні VLAN
Дозвіл локальної мережі не знає про VLAN за вашим маршрутизатором. Конкретний маршрут через локальний шлюз зберігає доступ до підмереж сховища й лабораторії.
Перемикач «дозволити локальну мережу» у VPN-клієнті звучить так, ніби охоплює все в будівлі. На практиці він зазвичай додає кілька винятків для приватних адрес до типового маршруту тунелю і на цьому зупиняється. Ваш VLAN сховища залишається доступним лише якщо маршрут для цього конкретного префікса переживе появу тунелю, а в багатьох клієнтах він не переживає.
Це питання маршрутизації, а не налаштування VPN, що є доброю новиною: у нього є конкретна відповідь.
Що насправді охоплює дозвіл локальної мережі
Клієнти реалізують цю опцію по-різному. Одні додають маршрути для підмережі, до якої підключено машину, інші додають діапазони RFC 1918, а деякі лише виключають типовий шлюз. Жоден із них не знає, що ваш офісний маршрутизатор також обслуговує VLAN сховища, лабораторний сегмент або підмережу принтерів, бо цих префіксів немає на лінії, яку клієнт бачить. Читайте власну документацію клієнта щодо точної поведінки, а не припускайте, що етикетка описує вашу топологію.
Ця різниця найважливіша в конструкції повного тунелю, де клієнт навмисно замінює типовий маршрут, щоб увесь трафік ішов через VPN. Це і є весь сенс конструкції, і саме це змушує локальні маршрутизовані мережі зникати. Вони ніколи не були охоплені власним маршрутом; вони їхали на типовому маршруті, який щойно замінено. Клієнт не може маршрутизувати те, про існування чого не знає, і дізнається лише про префікси, приєднані до його власного інтерфейсу. Усе інше має описати той, хто знає топологію.
Підключені маршрути зупиняються на першому маршрутизаторі
Робоча станція на 192.168.10.20/24 зі шлюзом 192.168.10.1 автоматично отримує підключений маршрут для 192.168.10.0/24. VLAN сховища на 192.168.20.0/24 — це інший префікс, доступний лише через цей шлюз, і робоча станція не має для нього маршруту, крім типового. До підняття тунелю звичайний типовий маршрут випадково надсилає трафік сховища на 192.168.10.1, і все працює.
Коли VPN встановлює типовий маршрут повного тунелю, пакети для 192.168.20.1 ідуть за новим типовим маршрутом у тунель. Віддалений шлюз гадки не має, де живе цей префікс, тож він або відкидає їх, або пересилає кудись марно. На VLAN сховища нічого не було налаштовано неправильно; його шлях було позичено, і позику витребувано.
Спокуса — сягнути по широкий виняток, як-от пара маршрутів /1 або другий типовий маршрут. Опирайтеся їй. Що вужчий виняток, то легше його пояснити, перевірити й прибрати, коли мережа зміниться.
Покладіть виняток у таблицю, яка перемагає
У межах однієї таблиці маршрутизації /24 перемагає /0 або /1 за найдовшим збігом префікса, тож конкретного маршруту до VLAN сховища через локальний шлюз достатньо, за умови що таблицю взагалі переглядають. У Linux звичайна форма коротка:
ip route add 192.168.20.0/24 via 192.168.10.1 dev eth0Маршрутизація за політикою ускладнює цю гарантію. Раніше правило може надіслати трафік до таблиці, чий власний типовий маршрут вказує в тунель, і головна таблиця, що тримає ваш /24, тоді ніколи не досягається. Перевірте правила, перш ніж вважати маршрут авторитетним, бо коректний на вигляд запис у неправильній таблиці пояснює збій, що виглядає як зламаний маршрут.
Потім зробіть запис постійним через підтримуваний клієнтом механізм або через мережевий менеджер, який володіє інтерфейсом. Маршрут, набраний у рядку запрошення, зникає при наступному перепідключенні, а маршрут, прив'язаний до одного Wi-Fi шлюзу, не переноситься до наступної мережі, яку відвідає ноутбук.
Імена та політика не йдуть за маршрутами
Виправлення маршруту повертає пакети, а не імена. Якщо локальні пристрої розв'язуються через надісланий резолвер, який нічого про них не знає, монтування все одно не вдається, хоча адреса доступна. Локальні імена потребують локального або розділеного DNS, і це окреме рішення від винятку маршруту.
Політика знову окрема. Фільтр локального доступу VPN-клієнта може навмисно заборонити трафік до приватних діапазонів, і маршрут не скасовує це правило. У недовіреній мережі приватна адреса також не є доказом, що призначення — ваш сервер сховища, тож виняток має бути таким самим конкретним, як і маршрут.
Контракт, який можна передати
Готова конструкція має читатися як короткий список: загальний інтернет-трафік іде тунелем, а ці названі локальні префікси зберігають свій шлях через локальний маршрутизатор. Запишіть префікси, наступний хоп і DNS-суфікс, що з ними йде, і тримайте список достатньо коротким, щоб хтось міг перевірити його, не читаючи таблицю маршрутизації.
Стежте за перекриттям між локальними та віддаленими діапазонами. VLAN сховища, що поділяє префікс із чимось за VPN, розв'яжеться на той маршрут, який конкретніший, і отримана поведінка заплутує так, що виглядає періодичною. Перенумерувати одну сторону зазвичай дешевше, ніж вічно налагоджувати цю неоднозначність.
Перевірте контракт двічі: раз із піднятим тунелем і раз з опущеним. Якщо локальний шлях працює лише в одному з цих станів, виняток ще не контракт.