NEGOTIATION_FAILURE на туннеле Cloud VPN с Cisco ASA на дальнем конце почти всегда означает несовпадение предложения или селекторов, и первый полезный факт — никакая правка это не исправит. Cloud VPN фиксирует предложение IKE при создании объекта туннеля. Поля для смены алгоритма на месте нет, поэтому ремонт — это удаление и повторное создание с записанной отправной точкой. Отнеситесь к этому как к пересборке, и работа станет контрольным списком, а не полднем догадок.

Прочитайте сбой, прежде чем что-либо удалять

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

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

Зафиксируйте обе конфигурации, пока они ещё существуют

Удаление туннеля занимает полминуты и уничтожает единственное доказательство, которое у вас было. Перед этим запишите локальный и удалённый селекторы, адрес партнёра, кому принадлежит общий секрет и crypto map или профиль IKEv2 на ASA. ASA отвечает на два отдельных вопроса: что настроено и что сейчас поднято:

show running-config crypto ikev2
show crypto ikev2 sa
show crypto ipsec sa | include local ident|remote ident|status

На стороне Google читайте объект туннеля, а не сводку консоли, потому что адрес партнёра и поля селекторов — это значения, которые нужно воспроизвести точно:

gcloud compute vpn-tunnels describe tunnel-to-asa --region europe-west1 \
  --format="yaml(peerIp,localTrafficSelector,remoteTrafficSelector,ikeVersion,sharedSecret)"

Занесите эти значения в заявку до первого удаления. Пересборка ниже работает только потому, что вы можете заново создать тот же объект с одним намеренным отличием.

Алгоритмы, о которых одна сторона отказывается договариваться

Cloud VPN не выбирает из набора алгоритмов IKEv1, как традиционный партнёр. Ожидаемые настройки партнёра фиксированы: aes-cbc-128 для шифрования, sha1-96 и для целостности, и для PRF, группа Diffie-Hellman 2, 36,600 секунд для фазы 1 и 10,800 секунд для фазы 2. Политика ASA должна предлагать ровно этот набор. Второе предложение на ASA не вредит, если подходящее тоже есть в списке.

IKEv2 даёт обеим сторонам больше свободы, но правила сохраняют ту же форму: включите PFS, выберите группу DH, которую поддерживает туннель, и держите список предложений достаточно коротким, чтобы несовпадение было очевидным. Партнёр ASA на Cloud VPN означает и статическую маршрутизацию, поэтому защищённые префиксы нужно планировать и перечислять, а не отдавать BGP.

Время жизни, скопированное из шаблона другого производителя, — обычный неверный поворот здесь. Google публикует эти значения как обязательные настройки партнёра, поэтому задайте их; более короткое значение не согласуется вверх до того, чего хочет ASA.

Удалите, создайте заново и очистите старое состояние

Удаляйте туннель, а не шлюз, и отметьте имя, которое Cloud VPN даст замене, потому что имена назначаются, а не переиспользуются. Создайте его заново с записанными значениями и тем же адресом партнёра, затем добавьте подходящее предложение в список политик ASA.

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

clear crypto ikev2 sa
clear crypto ipsec sa

Убедитесь, что фаза 1 поднимается, прежде чем смотреть на фазу 2. Пока фаза 1 опущена, предложение или предварительно разделённый ключ неверны, и работа с селекторами это не изменит.

Селекторы зеркалятся, затем решают счётчики

Фаза 2 работает только когда обе стороны согласны насчёт защищаемых адресов, и согласие зеркальное, а не общее. Локальный селектор Google должен совпадать с селектором, который ASA называет удалённым, а удалённый селектор Google — с тем, что ASA называет локальным. Туннель с 0.0.0.0/0 с одной стороны и одной подсетью с другой проходит фазу 1 и затем срывается на фазе 2 с той же главной ошибкой. Ни одна сторона не может расширить список другой.

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

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

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