Що bypass-dhcp насправді додає до схеми маршрутів OpenVPN
Цей прапорець встановлює один хост-маршрут до сервера DHCP за межами тунелю. Це не пересилання інтернету, не політика DNS, не покриття IPv6 і не виправлення для мобільної мережі.
Профіль із redirect-gateway def1 bypass-dhcp поєднує заміну маршруту IPv4 за замовчуванням з одним вузьким винятком. Люди читають останнє слово й очікують загального рішення для мобільних з'єднань, а потім проводять півдня з теорією DHCP, яку цей прапорець ніколи не підтримував. Кожна частина робить одну справу, і виняток значно менший за свою репутацію.
Розберіть прапорці, перш ніж приписувати збій, що виникає лише в мобільній мережі, призначенню адрес. Дві половини цього рядка не мають одна до одної жодного відношення.
Два прапорці, дві не пов'язані задачі
З def1 клієнт додає два половинних маршрути IPv4 за замовчуванням замість заміни вже наявного маршруту за замовчуванням. 0.0.0.0/1 покриває нижню половину адресного простору, а 128.0.0.0/1 верхню, тож разом вони досягають будь-якого призначення, залишаючись при цьому конкретнішими, ніж 0.0.0.0/0. Початковий маршрут за замовчуванням тому залишається в таблиці, не виграючи цих пошуків, що зберігає доступність старого шлюзу для всього, що клієнт маршрутизує явно. Він також залишає в таблиці два перекривні маршрути за замовчуванням, і тому вивід маршрутів може виглядати дивніше, ніж припускає профіль.
bypass-dhcp окремий і взагалі не зачіпає маршрут за замовчуванням. Посібник OpenVPN 2.6 описує його як додавання прямого маршруту до сервера DHCP, який не перебуває в локальній підмережі, тож трафік оренди виходить за межі тунелю, і зазначає, що таку поведінку реалізовано на клієнтах Windows і в інших місцях вона може бути недоступною.
Причина його існування механічна. Щойно половинні маршрути за замовчуванням захоплять вихідний трафік, оновлення оренди DHCP, спрямоване до сервера у фізичній мережі, буде маршрутизовано в тунель, якщо щось не прив'яже цю адресу до реального інтерфейсу. Прапорець прив'язує її.
На що насправді поширюється виняток
Ілюстративна таблиця після успішного з'єднання показує форму: два половинних маршрути за замовчуванням через тунель і один хост-маршрут до сервера DHCP через фізичний шлюз. Читайте її як форму, а не як ваші власні адреси.
0.0.0.0/1 via 10.8.0.1 dev tun0
128.0.0.0/1 via 10.8.0.1 dev tun0
192.168.1.1/32 via 192.168.1.254 dev wlan0Третій рядок називає одне призначення. Це не налаштування резолвера, не загальний дозвіл для локальної мережі і не правило виходу на сервері. У телефона в стільниковій мережі може не бути сервера DHCP, який клієнт міг би визначити в такий спосіб, і тому прапорець там нічого не змінює.
Перевірте, що клієнт справді встановив
Розрізняйте параметр, записаний у профілі, параметр, запропонований сервером, і маршрут, який власник з'єднання справді застосував. Клієнт, який відхиляє непідтримуваний прапорець, може зберегти решту конфігурації, тож тунель піднімається, а виняток просто відсутній. Читайте власний журнал клієнта й отриману таблицю маршрутизації, а не припускайте, що рядок у файлі набув чинності. Три з цього можуть бути правдивими одночасно, і лише останнє змінює, куди насправді йдуть пакети.
Тримайте маршрут до кінцевої точки VPN одночасно працездатним. Цей виняток для кінцевої точки — інша вимога, ніж виняток DHCP, і без нього тунель може захопити транспорт, який його підтримує.
Для призначення застосунку дослідіть фактичний пошук у контексті, де він не спрацьовує. Конкретніші локальні маршрути, маршрутизація за політиками й винятки для застосунків змінюють відповідь, тож наявність двох половинних маршрутів за замовчуванням не є переліком кожного потоку.
Решта шляху не в цьому прапорці
Серверу все ще потрібен дозвіл пересилати інтернет-трафік клієнта та вихідний механізм, здатний його повернути. Жоден маршрут на боці клієнта не створює відсутнього пересилання чи трансляції джерела на сервері, і жоден прапорець не замінює робочий зворотний шлях.
Розв'язання імен і IPv6 кожне потребує власної політики. Заміна IPv4 не скеровує резолвер до сервера на боці тунелю і не встановлює покриття IPv6, а клієнт, який перенаправляє лише v4, залишає шлях v6 недоторканим.
Порівняйте один схвалений нешкідливий запит на робочому та збійному шляху доступу, тримаючи профіль і призначення незмінними. Запишіть, чи різниця в розв'язанні імен, встановленні тунелю, виборі маршруту чи в пересланому трафіку, і збережіть відповідь разом із профілем. Саме цей запис не дає наступній людині звинувачувати DHCP у проблемі, до якої він не дістає.