Замысел был отбросить один проталкиваемый маршрут. После изменения пропадает другая опция маршрутизации, или клиент переподключается в цикле. Оба результата происходят от чтения фильтра как правила подсети, хотя он сравнивает текст. Клиент проверяет, начинается ли проталкиваемый параметр с заданных вами символов, и ни на каком этапе не участвует адресная логика.

Что фильтр на самом деле сравнивает

Каждый проталкиваемый параметр приходит строкой из имени и его аргументов. Фильтр сравнивает ваши символы с началом этой строки, до разбора любого адреса и до установки любого маршрута. Поэтому правило, написанное для имени, ловит каждый параметр, начинающийся с этих букв, а не только тот, на который вы смотрели. Именно поэтому фильтр может выглядеть правильным сам по себе и всё же удалять что-то постороннее.

Строка, похожая на диапазон сети, остаётся просто символами. Она не выбирает префикс, не выполняет арифметику над сетевыми битами и не может выразить набор пунктов назначения. Когда такое правило кажется работающим, а затем перестаёт, проталкиваемый текст обычно изменил форму.

Один пробел меняет набор совпадений

Одно и то же имя параметра с конечным разделителем и без него выбирает разные строки. Без разделителя совпадение остаётся открытым, а с ним имя параметра должно закончиться именно там, прежде чем начнутся аргументы.

pull-filter ignore "route"
pull-filter ignore "route "

Открытая форма ловит и параметры, которые лишь начинаются с тех же букв, и так постороннее поведение маршрутизации исчезает вместе с маршрутом, который вы хотели отбросить. Скопируйте проталкиваемую строку из журнала, прежде чем писать фильтр. Держите неизменённую копию профиля рядом с изменённой, потому что широкое совпадение легче отменить из файла, чем из памяти.

Порядок и действие дают разные симптомы

Правила оцениваются по порядку, и первое совпадение решает исход, поэтому широкое правило, поставленное рано, делает каждое последующее конкретное правило недостижимым. Действие тоже меняет сбой: игнорирование совпадения отбрасывает параметр и сеанс продолжается, а отклонение поднимает ошибку, которая перезапускает соединение. Поэтому строка, проталкиваемая повторно, вместе с действием отклонения создаёт цикл переподключения. Этот цикл легко прочитать как сетевой сбой, и строка журнала с именем совпавшего параметра разделяет эти два случая.

ActionEffect on the sessionHow it gets reported
IgnoreOption dropped, session continuesSomething is missing afterwards
RejectError raised, connection restartsThe VPN keeps dropping

Запишите, какая строка совпала и какое действие выполнилось. Отброшенный маршрут и цикл перезапуска требуют разных исправлений, и в заметке должно быть сказано, что именно произошло, а не оба варианта сразу.

Проверьте, что установил хост

После переподключения прочитайте применённые маршруты и проверьте как пункт назначения, который вы хотели сохранить, так и тот, который хотели убрать. Отбрасывание проталкиваемого маршрута не даёт замены, поэтому ресурс может стать недоступным по другому пути, пока нежелательный маршрут исчез. Если имя теперь разрешается в другом месте, проверьте, не поймано ли проталкиваемый параметр распознавателя тем же широким префиксом. Изменение, которое проходит запущенный вами тест и не проходит задуманный, здесь обычный результат.

Сохраните это различие в заявке: маршрут, который вы убрали, маршрут, который рассчитывали оставить, и то, что таблица показывает сейчас. Следующее изменение будет оцениваться по этой записи.

Не считайте это границей доверия

Фильтр по тексту — это удобство настройки, а не контроль против сервера, которому вы не доверяете. Уже одни варианты форматирования его побеждают, поэтому руководство ограничивает это утверждение. Когда сервер принадлежит вашей организации, исправить политику проталкивания яснее, чем накапливать локальные исключения.

Запишите, зачем локальный фильтр вообще существует, чтобы следующий человек мог решить, нужен ли он ещё. Фильтры накапливаются ещё долго после исчезновения причины.

Похожие статьи