VPN филиала через 4G: сохраняйте идентичность при смене IP
Мобильный филиал меняет адрес, не меняя того, кем он является. Закрепите идентичность IKE на концентраторе, оставьте филиал инициатором, затем проверьте реальную смену адреса.
Начните с самого филиала, на странице состояния WAN 4G-роутера. Если адрес, который вы видите, лежит в приватном диапазоне оператора, а не в публичном, никакая переадресация портов на этом устройстве никогда не позволит концентратору позвонить внутрь, и туннель придётся строить наружу от филиала. Это одно наблюдение определяет проект. Остальная работа — убедиться, что концентратор узнаёт филиал по чему-то лучшему, чем адрес, который меняется каждые несколько часов.
Откуда должен начинаться туннель
Проверьте адрес на соответствие общему адресному пространству, которое операторы используют для собственного NAT, 100.64.0.0/10, и обычным приватным диапазонам. Если на мобильном канале виден один из них, это обычно означает, что NAT уровня оператора стоит между филиалом и интернетом, а входящие соединения недоступны ни за какую цену, которую филиал может заплатить. Если адрес WAN публичный, но меняется, у вас другая, более простая проблема.
Динамический DNS помогает только во втором случае. Он даёт меняющемуся публичному адресу стабильное имя для звонка и не может создать сопоставление, которого оператор никогда не предоставлял. Его всё же стоит настроить для публичного случая, потому что он убирает единственный ручной шаг при перенумерации. Чего он не должен стать — ответом для филиала, который оператор так и не сделал доступным.
Отделите адрес, по которому вы звоните, от идентичности, которую сопоставляете
Концентратору нужно что-то стабильное, по чему его можно найти: утверждённый фиксированный адрес или поддерживаемое имя хоста. Филиалу нужен стабильный способ быть узнанным, и в IKEv2 это полезная нагрузка идентичности, которую он предъявляет при аутентификации, независимо от адреса источника, который случайно несут его пакеты. Строка вроде @branch-a.vpn.example работает как эта идентичность даже при смене мобильного адреса каждый час.
Эта строка сопоставляется с политикой, а не разрешается через DNS, поэтому не ждите поиска при настройке туннеля. Конфигурация концентратора должна явно называть ожидаемую идентичность, а при аутентификации сертификатом идентичность также должна совпадать с тем, что сертификат действительно утверждает.
Принимать любую идентичность только потому, что адрес источника выглядит правдоподобно, — это тот режим отказа, которого нужно избегать. На отвечающей стороне это означает принимать любого партнёра, с шаблоном идентичности и общим секретом, а это аутентифицирует строку, а не устройство.
Напишите сторону концентратора как именованного партнёра
В терминах strongSwan сторона ответчика — это соединение с right=%any, которое принимает партнёра с любого адреса источника, плюс [email protected], которое закрепляет, кем этот партнёр должен себя объявлять. Добавьте rightsubnet=10.20.0.0/16 для LAN филиала, auto=add чтобы соединение загружалось без вызова, dpd_delay=30s для живучести и mobike=yes чтобы смена адреса поглощалась, а не трактовалась как новый партнёр.
Другие производители выражают те же объекты под другими именами, обычно тип динамического партнёра или партнёра филиала с полем идентичности и полем защищённой подсети. Заполните оба; общий флажок динамического режима — это не план совместимости.
Оставьте филиал инициатором
В филиале действует зеркальное отражение: left=%defaultroute чтобы использовался локальный мобильный адрес, какой он есть сейчас, [email protected] для предъявления идентичности, right=hub.example.com для стабильного имени концентратора и auto=start чтобы туннель поднимался без человека. Когда мобильный канал переподключается, филиал снова инициирует, а концентратор сопоставляет ту же идентичность с тем же объектом политики.
Разрешите IKE на UDP 500, прохождение NAT на UDP 4500 и инкапсулированный ESP, который следует за ним, с обеих сторон. Затем оставьте их разрешёнными: правило, открывающееся только в рабочие часы, будет выглядеть как прерывистый туннель.
Проверьте смену адреса, а не только первое рукопожатие
Поднимите туннель, подтвердите его, затем на минуту принудительно переведите филиал на новый адрес, переключив мобильные данные или авиарежим. Следите за списком ассоциаций безопасности на концентраторе и проверьте, что адрес партнёра изменился, а идентичность нет. Туннель, который работает только до первого перераспределения оператором, вообще не проверен.
Затем проверьте защищённые подсети отдельно. Установленная SA говорит, что партнёры аутентифицировались; она не говорит, что у концентратора есть маршрут к LAN филиала или что филиал принимает трафик со стороны концентратора. Прочитайте таблицу маршрутизации и политику брандмауэра отдельно, затем отправьте ping с хоста, а не со шлюза, поскольку шлюз — наименее представительное устройство в любой сети.
Стабильная идентичность превращает филиал в объект политики, который концентратор может назвать. Она не делает адрес NAT оператора достижимым и сама по себе не даёт остальной организации доступа к филиалу.