Всем привет!
Уже и не думал что вернусь к этому кейсу, но Cisco Open Air Wireless Marathon подтолкнул меня вспомнить и рассказать про личный опыт, когда чуть больше года назад мне довелось потратить довольно много времени над изучением проблемы с беспроводной сетью на базе Cisco и телефонами iPhone. Мне поручили разобраться над вопросом одного из руководителей: «Почему после перезагрузки iPhone не может автоматически подключиться к Wi-Fi сети, а при ручном подключении просит ввести логин и пароль?».
![image](https://habrastorage.org/webt/st/mt/2i/stmt2ixreojm1oa7tutkb-6zfui.jpeg)
Сведения о Wi-Fi сети:
Беспроводной контроллер — AIR-CT5508-K9.
Версия ПО контроллера — 8.5.120.0.
Точки доступа — в основной массе AIR-AP3802I-R-K9.
Метод аутентификации — 802.1x.
RADIUS-сервер — ISE.
Проблемные клиенты — iPhone 6.
Версия ПО клиентов — 12.3.1.
Частота 2,4ГГц и 5ГГц.
Изначально были попытки решить проблему с наскока на клиенте. К счастью, у меня была такая же модель телефона, как у заявителя, и я мог проводить тестирование в удобное для меня время. Проверил проблему на своем телефоне — действительно, сразу же после включения телефон пытается подключиться к ранее известной ему корпоративной сети, но примерно секунд через 10 остается неподключенным. Если выбрать SSID вручную, то телефон просит ввести логин и пароль. После их ввода всё работает корректно, но после перезагрузки телефон снова не может автоматически подключиться к SSID, несмотря на то, что логин и пароль были сохранены, SSID значился в списке известных сетей, автоподключение включено.
Были произведены безуспешные попытки забыть SSID и добавить его заново, сбросить сетевые настройки телефона, обновить телефон через iTunes и даже обновиться на beta-версию iOS 12.4 (на тот момент самой последней). Но всё это не помогало. Также были проверены модели коллег — iPhone 7 и iPhone X, на них проблема тоже воспроизводилась. А вот на телефонах с Android проблема не зафиксирована. Дополнительно был создан тикет в Apple Feedback Assistant, но до текущего дня ответ на него не получен.
После всего вышеперечисленного было решено искать проблему в WLC. Параллельно я открыл тикет в Cisco TAC. По рекомендации TAC обновил контроллер до версии 8.5.140.0. Поигрался с различными таймерами и Fast Transition. Не помогло.
Для тестирования я создал новый SSID с аутентификацией 802.1x. И вот это поворот — на новом SSID проблема не воспроизводится. Вопрос инженера TAC заставляет задуматься — какие изменения на Wi-Fi сети мы делали до того, как проблема проявилась. Начинаю вспоминать… И есть одна зацепка — изначально проблемный SSID долгое время имел метод аутентификации WPA2-PSK, но для повышения уровня безопасности мы сменили его на 802.1x с доменной аутентификацией.
Проверяю зацепку — меняю метод аутентификации на тестовом SSID с 802.1x на WPA2-PSK, а затем обратно. Проблема не воспроизводится.
Надо думать изощренней — создаю еще один тестовый SSID с аутентификацией WPA2-PSK, подключаю к нему телефон, запоминаю в телефоне SSID. Меняю аутентификацию на 802.1x, аутентифицирую телефон с доменной учетной записью, включаю автоподключение.
Перезагружаю телефон… И да! Проблема повторилась. Т.е. главный триггер — смена на известном телефону SSID метода аутентификации с WPA2-PSK на 802.1x. Я сообщил об этом инженеру Cisco TAC. Совместно с ним несколько раз воспроизвели проблему, сняли дамп трафика, в котором было видно, что телефон после включения запускает фазу аутентификации (Access-Challenge), но через некоторое время отправляет на точку доступа diassociation message и отключается от нее. Это явная проблема на стороне клиента.
За неимением контракта поддержки с Apple, была долгая, но успешная попытка дозвониться до их второй линии поддержки, в которой я рассказал о проблеме. Затем было множество самостоятельных попыток найти и определить причину проблемы в телефоне и она была найдена. Проблема оказалась во включенной функции "iCloud keychain". Довольно полезная функция, отключать которую на телефонах для workaround я и заявитель проблемы не захотели. По моему предположению, телефон не может перезаписать информацию о методе подключения к известным SSID на серверах iCloud. О находке было сообщено Apple, на что они признали, что такая проблема есть, известна разработчикам, и будет исправлена в будущих релизах. В каком именно не сообщили. Не готов сказать, как обстоят дела на текущий момент, но в начале декабря 2019 года проблема всё еще воспроизводилась на iPhone 11 Pro Max с iOS 13.
Для нашей компании проблема решилась благополучно. Ввиду того, что наименование компании было изменено, было решено изменить и корпоративный SSID. А новый SSID был уже сразу создан с аутентификацией 802.1x, что не являлось триггером для проблемы.
Уже и не думал что вернусь к этому кейсу, но Cisco Open Air Wireless Marathon подтолкнул меня вспомнить и рассказать про личный опыт, когда чуть больше года назад мне довелось потратить довольно много времени над изучением проблемы с беспроводной сетью на базе Cisco и телефонами iPhone. Мне поручили разобраться над вопросом одного из руководителей: «Почему после перезагрузки iPhone не может автоматически подключиться к Wi-Fi сети, а при ручном подключении просит ввести логин и пароль?».
![image](https://habrastorage.org/webt/st/mt/2i/stmt2ixreojm1oa7tutkb-6zfui.jpeg)
Сведения о Wi-Fi сети:
Беспроводной контроллер — AIR-CT5508-K9.
Версия ПО контроллера — 8.5.120.0.
Точки доступа — в основной массе AIR-AP3802I-R-K9.
Метод аутентификации — 802.1x.
RADIUS-сервер — ISE.
Проблемные клиенты — iPhone 6.
Версия ПО клиентов — 12.3.1.
Частота 2,4ГГц и 5ГГц.
Поиск проблемы на клиенте
Изначально были попытки решить проблему с наскока на клиенте. К счастью, у меня была такая же модель телефона, как у заявителя, и я мог проводить тестирование в удобное для меня время. Проверил проблему на своем телефоне — действительно, сразу же после включения телефон пытается подключиться к ранее известной ему корпоративной сети, но примерно секунд через 10 остается неподключенным. Если выбрать SSID вручную, то телефон просит ввести логин и пароль. После их ввода всё работает корректно, но после перезагрузки телефон снова не может автоматически подключиться к SSID, несмотря на то, что логин и пароль были сохранены, SSID значился в списке известных сетей, автоподключение включено.
Были произведены безуспешные попытки забыть SSID и добавить его заново, сбросить сетевые настройки телефона, обновить телефон через iTunes и даже обновиться на beta-версию iOS 12.4 (на тот момент самой последней). Но всё это не помогало. Также были проверены модели коллег — iPhone 7 и iPhone X, на них проблема тоже воспроизводилась. А вот на телефонах с Android проблема не зафиксирована. Дополнительно был создан тикет в Apple Feedback Assistant, но до текущего дня ответ на него не получен.
Поиск проблемы на беспроводном контроллере
После всего вышеперечисленного было решено искать проблему в WLC. Параллельно я открыл тикет в Cisco TAC. По рекомендации TAC обновил контроллер до версии 8.5.140.0. Поигрался с различными таймерами и Fast Transition. Не помогло.
Для тестирования я создал новый SSID с аутентификацией 802.1x. И вот это поворот — на новом SSID проблема не воспроизводится. Вопрос инженера TAC заставляет задуматься — какие изменения на Wi-Fi сети мы делали до того, как проблема проявилась. Начинаю вспоминать… И есть одна зацепка — изначально проблемный SSID долгое время имел метод аутентификации WPA2-PSK, но для повышения уровня безопасности мы сменили его на 802.1x с доменной аутентификацией.
Проверяю зацепку — меняю метод аутентификации на тестовом SSID с 802.1x на WPA2-PSK, а затем обратно. Проблема не воспроизводится.
Надо думать изощренней — создаю еще один тестовый SSID с аутентификацией WPA2-PSK, подключаю к нему телефон, запоминаю в телефоне SSID. Меняю аутентификацию на 802.1x, аутентифицирую телефон с доменной учетной записью, включаю автоподключение.
Перезагружаю телефон… И да! Проблема повторилась. Т.е. главный триггер — смена на известном телефону SSID метода аутентификации с WPA2-PSK на 802.1x. Я сообщил об этом инженеру Cisco TAC. Совместно с ним несколько раз воспроизвели проблему, сняли дамп трафика, в котором было видно, что телефон после включения запускает фазу аутентификации (Access-Challenge), но через некоторое время отправляет на точку доступа diassociation message и отключается от нее. Это явная проблема на стороне клиента.
И снова на клиенте
За неимением контракта поддержки с Apple, была долгая, но успешная попытка дозвониться до их второй линии поддержки, в которой я рассказал о проблеме. Затем было множество самостоятельных попыток найти и определить причину проблемы в телефоне и она была найдена. Проблема оказалась во включенной функции "iCloud keychain". Довольно полезная функция, отключать которую на телефонах для workaround я и заявитель проблемы не захотели. По моему предположению, телефон не может перезаписать информацию о методе подключения к известным SSID на серверах iCloud. О находке было сообщено Apple, на что они признали, что такая проблема есть, известна разработчикам, и будет исправлена в будущих релизах. В каком именно не сообщили. Не готов сказать, как обстоят дела на текущий момент, но в начале декабря 2019 года проблема всё еще воспроизводилась на iPhone 11 Pro Max с iOS 13.
Заключение
Для нашей компании проблема решилась благополучно. Ввиду того, что наименование компании было изменено, было решено изменить и корпоративный SSID. А новый SSID был уже сразу создан с аутентификацией 802.1x, что не являлось триггером для проблемы.