Как стать автором
Обновить

Комментарии 52

Интересная статья, пользуюсь регулярно данной фичей на МТС, никогда не задумывался о том что там под капотом у данной на вид очень простой технологии. Но в роуминге лучше звонить по wa/tg имхо

Ну это как посмотреть. Если друзьям и родным, то да, звонков через мессенджеры более чем хватает. Но вот недавно был в роуминге и у банка сработала антифрод-система на мои "махинации" со счётом, они мне позвонили и вот оно, то самое, ради чего всё затевалось)

Есть устройства, которые поддерживают VoWiFi, но, для определённых операторов, VoWiFi, из коробки, не работает (при том, что оператор сети его тоже поддерживает). Получается база MCC/MNC кодов хранится локально на устройстве и отсутствие в ней кодов конкретного оператора ломает VoWiFi для этого оператора?

Да, так и есть. Крупные производители телефонов (Appleç Samsung) даже вначале сертефицируют сеть оператора для своих устройст и только потом добавляют ее поддержку в прошивку.

Технически, устройство берет MCC/MNC с SIM карты.  Они являются частью идентификатора IMSI, который нужен для идентификации абонента в сотовой сети. Это прописано в стандарте.  Поэтому у устройства всегда есть MCC/MNC для используемого оператора.

Для того чтобы разобраться, на каком этапе ломается процесс регистрации VoWiFi, нужно собрать дополнительные данные:

·        Отправляет ли устройство DNS-Request с FQDN с этими MCC/MNC?

·        Получает ли ответ?

·        Инициирует ли устройство создание IPsec туннеля до ePDG шлюза?

·        Получает ли ответ?

·        Как происходит обмен трафиком с оператором с которым VoWiF работает успешно?

И так далее.

добрый вечер ! понимаю что с момента написания статьи прошло много времени и у вас могли смениться интересы приоритеты , но ваша статья единственная которая подробно показывает работу этой функции и поэтому я решил обратиться к вам с вопросом - у меня мото edge 2022 сделанный только для Америки и в нем wifi calling реализован только для некоторых операторов ( volte работает для всех) . у меня в телефоне работают volte и видеосвязь без проблем . перечитав характеристики телеффона на сайте мото подметил что wifi calling должен работать только в сетях 5g . у меня 4g и при включении 5 g в момент когда я подключен к вайфаю на полсекунды появляется значек wifi calling и пропадает , через время повляется volte значек в строке состояния. посмотрев в bild.prop увидел такой пункт (на скриншоте выделен зеленым) , может это изза него происходит отключение wifi calling?

wfc
wfc

все ползунки в меню *#*#4636#*#* включены и звонки по вайфай тоже. со стороны оператора услуга подключена и работает(проверял в другом аппарате). не могли бы вы подсказать есть ли решение этой проблемы или оставить все как есть и изменить ничего нельзя? рут есть , т.е.что возможно отредактировать в системе - сделаю ... прочитал через переводчик много инфы об этом вопросе ,но с такой ситуацией как у меня никто не сталкивался и все пишут(если вообще пишут ) чтобы я забил на это и все... но я чувствую что решение есть и оно где то рядом ,но вот где? в билд.пропе три пункта отвечают именно за wifi calling , два первых - включены а вот третий,выделенный меня смущает тем что если перевод не врет , то при включении перечисленных частот wifi calling или отключается или включается ( я точно не понял перевода)... не могли бы вы мне помочь в этом вопросе ?

В статье не указано, что должны быть обязательные настройки под каждого оператора!
В телефонах Samsung и LG например стек программный и файлики можно в андроиде поковырять.
На Qualcomm например все настройки лежат в EFS и теоретически их тоже можно поковырять.

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

Кстати не обязательно `epdg.epc.mncХХХ.mccХХХ.pub.3gppnetwork.org` а вообще любой адрес, какой оператор сообщил вендору.

Пример из /etc/epdg_apns.conf

```
<!-- United States : AT&T : ATT --> <settings mnoname="ATT_US" smartwifirssia="-74" smartwifirssib="-80" smartwifirssiroveinvoice="-74" smartwifirsrp1="-108" smartwifirsrp3="-90" smartwifisnrrovein="20" smartwifisnrroveout="-30" smartwifigsmeciorovein="-11" threshold5grovein="90" threshold5groveout="108" threshold4grovein="90" threshold4groveout="108" threshold3grovein="73" threshold3groveout="93" threshold2grovein="85" threshold2groveout="30" hodelaytimer="1" epdgserverip="epdg.epc.att.net" pcscfv4vendorattr="20" pcscfv6vendorattr="21" certi_path="ca.crt" roaming_handover_support="0" wfc_call_menu="1" wfc_setting_menu="1" wfc_quicksetting_menu="1" />
```

А еще там задаются параметры IPSec

<apn mnoname="ATT_US" connname="imsApn" apnname="ims" subnettype="IPV4V6" ownidentity="023430123456701@nai.epc.mnc030.mcc310.3gppnetwork.org" remoteidentity="ims" ipsecintegrity="IPSEC_INTEGRITY_HMAC_SHA_256_128" ipsecgroup="IPSEC_GROUP_MODP_2048" ikeintegrity="IKE_INTEGRITY_HMAC_SHA_256_128" ikegroup="IKE_GROUP_MODP_2048" vendorattribute="P-CSCF-V4V6" periodicdpdtimer="300" mtu="1300" />

А возможен ли MiTM этого IPsec трафика?

По конфигу мне непонятно

VoWiFi - это способ заставить платить дважды: и за WiFi, и за голос - оператору...

Нет, это способ связи, например, если на вашей стороне только Wi-Fi, а на другой стороне только голос (человек с кнопочным телефоном или человек со смартфоном, не подключённым к интернету — например, у меня не подключён мобильный интернет, и когда я где-то, где нет домашнего или бесплатного Wi-Fi, то со мной можно связаться только через мобильный звонок).


А за Wi-Fi большинство людей и не платят. А платят за проводной интернет дома, который затем роутер раздаёт совершенно бесплатно.

Смотрите, логика простая. Там где есть wifi там я могу связаться со 100% своих контактов, без опсоса, бесплатно. А с этой функцией за деньги и с опсосом. Это же "я понесу чемодан, а ты - меня" в чистом виде. Поэтому я рад Вашим -4. Всего дебилов на хабре немного, и те возможно наоборот, лоббисты. И все таки жаль, когда худенький, маленький Гена, которому в детстве читали сказку про лису, готов тащить гигантских Чебурашек, под песню "Битый не битого везет".

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

Я жила в отдалённом НП. Есть модем и тарелка-усилитель от МТС на крыше, но у меня-то теле2. В доме не ловит вообще ничего. И, чтобы позвонить человеку, которого нельзя просто набрать в телеграме, мне бы очень пригодились wi-fi звонки. Вот только теле2 их не поддерживает, к сожалению

Или описанный ТС сценарий - когда ты находишься за рубежом, в дичайшем роуминге, но у тебя есть местный интернет (да хоть wifi в гостинице) и тебе нужно совершить или принять звонок.

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

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

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

любопытного в тему vowifi:
пишут, что если mac dns-сервера не совпадает с mac шлюза (что бывает редко, но не невозможно: dns-сервер должен отличаться от шлюза, и быть в той же сети, что клиент), то на квалкоммах vowifi не будет работать.


взято отсюда

вы как-то странно смогли переврать цитату с превращением ip в mac: "... Если в Wi-Fi сети default gateway и DNS server имеют разные IP-адреса, то VoWiFi работать не будет. Это такой замшелый баг в Qualcomm-овских чипах, который уже два года как никто не хочет исправлять. Смешно."

так я специально оставил ссылку на англоязычный источник:
Configure a Network (at least IPv4, IPv6 presence does not matter) 192.168.1.0/24 with the Gateway at 192.168.1.1, DNS server at 192.168.1.2 (these need to be on different machines / have different MAC addresses). The Gateway hands out IPv4 addresses in the 192.168.1.0/24 with the DNS server at 192.168.1.2 propagated to clients.


написано именно то, что в том случае, если dns-сервер за роутером (или совпадает с роутером), баг проявляться не будет.
для его проявления нужно, чтобы телефону dns-сервер был виден с маком отличным от мака шлюза.

Есть несколько "наивных" вопросов, которые хотелось бы прояснить. Если Вас не затруднит...

  1. Какова роль именно SIM-карты оператора для этой технологии? Используется ли какой-то ключ шифрования из неё, или в определённой ячейке хранится особый идентификатор? Если знать цифры MSIDN и MCC/MNC нужной сети - что ещё нужно из реквизитов чтобы "залогиниться"?

  2. "...мобильное устройство определяет IP-адрес ePDG-шлюза сотового оператора, обслуживающего SIM-карту. Для этого используетcя FQDN (доменное имя) специального вида, регламентированное стандартами 3GPP. "

    Кому принадлежит домен *3gppnetwork.org и почему все операторы ломятся именно на него, а не на какой-нибудь условный vowifihub.mts.ru (от балды)?
    Получается очевидная точка отказа, как и в случае c A-GPS, когда Qualcomm может решить больше не отдавать альманахи определённым диапазонам IP, странам, провайдерам.

  3. Где прописан этот адрес, куда телефон должен ломиться для идентификации? Конфигурационный файл? Прошивка? Ячейка SIM-карты?

  4. Всё же, что ещё необходимо для авторизации телефона у оператора через WiFi при отсутствии сигнала сотовой сети?
    Реально ли зная MSIDN, MCC, MNC и адрес, куда нужно ломиться, написать например клиентское приложение для VoWiFi под Win32 по типу SIP-клиента, и "выйти в онлайн" со своего мобильного номера, к примеру с ноутбука на Ethernet (окей, можно с WiFi вместо Ethernet если это принципиально)?

  5. Есть ли какой-то тайм-аут авторизации, после которого абонента "разлогинит" и потребуется повторная проверка чтобы заветный значок "в сети с использованием WiFi" появился?

  6. Сперва небольшая предыстория.
    В некоторых ранних флагманах HTC и Samsung был встроенный SIP-клиент. Ещё до того, как это стало мэйнстримом. Понятное дело что его можно было использовать за границей, самостоятельно вписав туда сервер, логин и пароль, не обязательно от своего сотового оператора, а вообще от любого SIP-провайдера. Но самый шик был именно в сочетании со своим сотовым оператором. В РФ до сих пор можно извлечь логин и пароль на SIP у оператора "МегаФон", т.е. услуга "МультиФОН" ещё работает, а не только своё фирменное приложение. У МТСа извлечь реквизиты от SIP было нельзя, как и у Теле2, а их говённое приложение ещё требовало SIM-карту в слоте для работы.
    Так вот, вопрос - в тех флагманах была возможность получать реквизиты для SIP-клиента откуда-нибудь. Своего рода реализация Auto-Provision, только не от DHCP, а то ли с SIM-карты, то ли от ОПСоСа.
    Вопрос - является ли процесс авторизации в VoWiFi чем-то сродни этому?

Какова роль именно SIM-карты оператора для этой технологии?

Используется для аутентификации. SIM-AKA называется. Деталей не знаю, но интуиция подсказывает, что должно быть похоже на аутентификацию в мобильной сети.

Не уверен, но. SIM-AKA это для так называемого Carrier WiFi, когда ключи с сим карты используются для аутентификации при подключении к WiFi. При VoWiFi этап подключения к WiFi не рассматривается, подразумевается, что устройство уже как-то подключилось. И данные с sim используются для аутентификации при установлении туннеля до ePDG.

Оно там как-то в EAP заворачивается и IKE аутентифицирует. Для strongswan даже плагин специальный есть eap-aka-3gpp.

  1. Авторизация в IMS осуществляется по протоколу Diameter задействуя функционал симкарты. Не знаю, просто ключи или какие-то криптопреобразования.

    2. Я выше уже описал, что адрес может быть любой, какой захочет оператор, другой вопрос, что это адрес нужно как-то сообщить всем вендорам телефонов.
    Есть некий профиль по умолчанию, в котором прописан алгоритм из статьи. Операторы могут использовать его, а могут задать свой адрес.

    3. В настройках телефона

    4. В общем случае нужна симка, в моменты тестирования операторы могли снижать требования и к шифрованию IPSec и к авторизации. (я расшифровывал в своё время WireShark трафик VoLTE одного оператора в период тестирования) наверное и авторизация была упрощенная. Но я думаю у них Реглятор не примет такое, да и уязвимости были...

    5. Есть, задаётся в настройках (профиле)

    6. Нет

я расшифровывал в своё время WireShark трафик VoLTE одного оператора в период тестирования

Интересны детали

Там были Null encrypted ESP payloads никакие ключи не вводил.

Трафик захватывал с помощью https://github.com/fgsect/scat

  1. Для авторизации используется imsi и ключи, хранящиеся на симкарте.

  2. Этот домен принадлежит 3gpp. Но физически через него ничего не ходит, трафик идет сразу на ip ePDG

  3. Адрес нигде не хранится и поменять его нельзя. Он формируется в соответсии со стандартом с использованием MCC и MNC прописанных в симкарте

  4. Нереально. Для подключения устанавливается IPsec туннель с аутентификацией через IKEv2 с использованием крипты с симкарты.

  5. Какойто таймаут определенно есть. После каждого обрыва Ipsec идет повторная аутентификация.

Адрес нигде не хранится и поменять его нельзя Он формируется в соответсии со стандартом с использованием MCC и MNC прописанных в симкарте

Я же выше приводил путь где лежит этот адрес на телефонах Samsung и что он может быть любым.

На Xiaomi вот сейчас смотрю, такого файла нет, видимо в EFS лежит.

Кстати, дамп EFS средствами самого телефона можно как то посмотреть?

Это не из EFS а из самого android. На самсунге стек IMS программный.

Я не знаю таких инструментов.

Я только вчера начал плотно читать про технологию, как понял это я:

Есть 2 этапа. Первый: Устройство устанавливает шифрованный канал до ePDG. Насколько я понял, авторизация происходит с помощью предустановленного сертификата. Второй: Устройство регистрируется в системе IMS. Вот этот этап полностью SIP подобный.

Как извлечь пароль из мультифона?

Насколько я помню прыжок возможен только VoWiFI -> VoLTE -> 3G/2G

А еще многие операторы требуют местоположение отправлять им. У некоторых операторов VoWiFi работает только внутри страны, а за извне берут денег :)

Оператор Билайн, iPhone 13 Pro Max, дошел до "Вызовы по Wi-Fi" там можно включить или выключить, никаких VoWiFi нет, что-то не так?

А это скажи эпплам спасибо, за то, что не могут отдать выбор приоритета пользователю, а сами решили, что звонки через мобильную сеть более приоритетны :)
https://www.reddit.com/r/ios/comments/p4fymd/is_there_any_way_to_prioritize_wifi_over_cellular/

"name": "MTS IMS",
"network": [
        {
          "type": "lte,wifi",
          "services": [
            "mmtel",
            "mmtel-video",
            "smsip"
          ],
          "enabled": true,
          "dereg_timeout": 8000
        }

"name": "Sberbank RUSSIA IMS",
"network": [
        {
          "type": "wifi",
          "services": [
            "mmtel",
            "smsip"
          ],
          "enabled": true
        }
      ]
"name": "TELE2 Russia IMS"
"network": [
        {
          "type": "lte,wifi",
          "services": [
            "mmtel",
            "mmtel-video",
            "smsip"
          ],
          "enabled": true
        }
      ]
"name": "Beeline VoLTE",
"network": [
        {
          "type": "lte,wifi",
          "services": [
            "mmtel",
            "smsip"
          ],
          "enabled": true
        }
      ]
"name": "Megafon VoLTE",
"network": [
        {
          "type": "lte,wifi",
          "services": [
            "mmtel",
            "smsip"
          ],
          "enabled": true,
          "dereg_timeout": 8000
        }
      ]
"name": "Letai Tattelecom IMS",
"network": [
        {
          "type": "lte,wifi",
          "services": [
            "mmtel"
          ],
          "enabled": true
        }
      ]
"name": "Motiv IMS",
"network": [
        {
          "type": "lte,wifi",
          "services": [
            "mmtel",
            "smsip"
          ],
          "enabled": true
        }
      ]


Как видите у всех кроме Летая есть.
А еще можно заметить что у МТС и Теле2 есть видеозвонки

Это что за конфиг?

Маленький кусочек imsprofile.json из приложения imsservice.apk из телефона Samsung.

На устройствах микротик достаточно

ip -> firewall -> service ports -> set sip ports=500,4500,5060,5061,5080,5081,5082

А для чего достаточно?

для создания комментария под комментарием.

Что это даёт, если и без этого нет проблем? И при чём тут sip?

В смартфонах Samsung одна из сим-карт может быть подключенной к своему оператору через мобильный интернет второй сим-карты, на которой активен интернет. Значок будет такой же, как у VoWiFi

Думаю, что если получится подключить к смартфону сетевую карту (через usb, например), то vowifi тоже будет работать.

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

Мне как-то сложно найти место где у меня не работает первый оператор и работает второй...

Теоретически да, но зависит от реализации.
У меня если зарегистрироваться в wowifi через wifi и подключиться по проводу, то какбы работает, но достоверно проверить невозможно, потому что как только я отключаю wifi то сразу пропадает значок. А сразу через провод он не регистрируется в wowifi.

Где эта настройка? У меня самсунг, но vowifi отваливается при отключении вайфая, хотя LTE стабильный на другой симке.

Нашёл, работает. Я в восторге ☺️

Как заставил работать Backup Calling?

у МТС есть мобильное приложение МТС-Коннект или Мой-Коннект
у Мегафона - eMotion
работают и по вафле и по мобильному трафику любой сторонней сим-ки
(на всякий случай)

в eMotion уже давно не регистрируют новых пользователей и качество связи там отвратительное, гораздо хуже, чем по vowifi

У меня происходит отвал vowifi при включении сим-модуля (выключение режима полета). Если симка не видит сеть в роуминге, то vowifi работает. На более современной прошивке тела vowifi работает в обоих режимах, но прошивка тормозит, поэтому я откатил. Пробовал прошивать разные версии модемов, но проблема не решается. Видимо, надо где-то ковырять конфиги, хотелось бы узнать, где :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий