Пул клиентов, выбранный потому, что номера выглядят аккуратно, — это маршрут, ожидающий установки. Префикс не обязан быть приватным, чтобы VPN работал, и использование блока, принадлежащего кому-то другому, тоже не раскрывает ваших пользователей в интернете автоматически. Что он делает — это заставляет эти адреса означать другое, пока туннель поднят, а затем снова означать другое, когда он падает. Пройдите пять проверок ниже по порядку и остановитесь там, где ответ «назначено в другом месте».

Назначение — это не объявление

Размещение адреса на интерфейсе туннеля не объявляет его в интернете. Публичная доступность требует маршрута, авторизованного пути и провайдера, готового его нести, и ничего из этого не появляется потому, что клиент получил адрес из пула. Политика межсетевого экрана и авторизация хоста — снова отдельные решения.

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

Это различие важно при выборе пула. Если бы единственной заботой было раскрытие в интернете, публичный блок выглядел бы безопасно, потому что никто его не объявляет. Забота — это локальный маршрут, который клиент устанавливает для этого префикса, и этот маршрут устанавливается независимо от того, видит ли его кто-то ещё.

Что на самом деле захватывает маршрут клиента

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

ip route get 198.51.100.20
ip -br addr show tun0
traceroute -n 198.51.100.20

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

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

Сравните пул с каждой сетью, которую вы знаете

RFC 1918 выделяет три блока для частного использования: 192.168.0.0/16, 172.16.0.0/12 и 10.0.0.0/8. Миллионы отдельных организаций используют их повторно, поэтому «частный» — это утверждение о распределении и никогда обещание, что никто другой не выбрал те же номера.

Сравните кандидатный пул с офисными LAN, облачными VPC, другими пулами VPN, партнёрскими каналами и диапазонами, которые удалённые сотрудники, вероятно, имеют дома. Домашний случай — не причина изобретать странный префикс; это причина держать пул небольшим и задокументированным.

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

Когда публичная адресация — правильный ответ

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

Что он даёт — это уникальность, свойство, которого не хватает заимствованному префиксу. Если блок принадлежит вам, маршрут, который устанавливает ваш клиент, указывает на адреса, которые действительно ваши, и смысл не меняется, когда туннель падает.

Не добавляйте NAT автоматически, чтобы компенсировать выбор пула. Маршрутизируемый частный дизайн с явными обратными маршрутами чище, чем трансляция, применяемая потому, что адресация никогда не планировалась, а IPv6 нужен собственный осознанный план, а не копия допущений IPv4.

Выведите плохой пул из эксплуатации, не потеряв доступ

Если пул уже развёрнут, проведите инвентаризацию перед изменением: резервирования адресов, установленные маршруты, DNS-записи, разрешающиеся в блок, области межсетевого экрана и приложения, которые от них зависят. Затем запланируйте изменение с той же тщательностью, что и любой другой переход маршрутизации. Объявите его людям, которые это заметят, потому что их сеансы прервутся, когда пул сдвинется. Тихая смена адресации клиентов порождает обращения в поддержку, которые кажутся не связанными с работой.

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

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

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