Ничто в сертификате или адресе не объясняет, почему iPhone, который в прошлом году подключался к strongSwan, в этом году терпит неудачу. Ни адрес, ни предварительно разделённый ключ, ни идентификатор клиента не обязаны были меняться. Изменился список преобразований, которые встроенный клиент телефона готов согласовывать, и как только этот список перестаёт пересекаться со списком сервера, обмен завершается раньше, чем проверяется чья-либо идентичность.

Строка журнала, которая это решает

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

Разделите две формы отказа, прежде чем что-либо править. Никакая правка преобразований не спасает отклонённые учётные данные, и никакое исправление учётных данных не спасает отклонённое преобразование. Запись в журнале, где названо выбранное предложение, говорит, какой из двух случаев у вас. Без этой записи вы гадаете.

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

Что изменилось в телефоне

Один выпуск iOS урезал алгоритмы, которые его клиент готов использовать. Слабые хеши целостности, небольшие группы Diffie-Hellman и предложения, где старые параметры перечислены первыми, перестали быть приемлемыми.

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

Одна пара, которая всё ещё согласуется

Для нынешних телефонов достаточно одной современной комбинации. Одна согласующаяся пара выглядит так:

ike=aes256-sha2_256-modp2048
esp=aes256-sha2_256

Строка ike несёт шифрование, целостность и группу Diffie-Hellman, используемые пока идёт обмен ключами. Строка esp покрывает только канал данных, потому что группа определена раньше, чем он применяется. Перезагрузите соединение или перезапустите демон, затем подключите телефон снова. Сохраняйте это значение группы только если каждый обслуживаемый клиент его ещё принимает, и не расширяйте предложение для всех только потому, что одному старому партнёру нужно больше.

Три места, где это исправить, одно обычно закрыто

  • Одно современное предложение для каждого партнёра. Верно, когда все клиенты — нынешние телефоны и настольные компьютеры. Удаляет старые преобразования, вместо того чтобы согласовывать вокруг них.
  • Второе определение соединения для клиентов Apple. Держит одного старого партнёра живым и даёт телефону предложение, которое тот принимает. Это стоит ещё одного блока соединения и делает исключение видимым.
  • Смена клиента. Редко доступно вам: когда профиль поставляет система управления или приложение, редактора предложений нет, а встроенный клиент такого не показывает.

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

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

Докажите это, затем запишите

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

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

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