2016-05-18 3 views
4

С новым требованием Apple, чтобы все приложения iOS работали в сети IPV6, у меня есть клиентское приложение VOIP на основе полностью разбитого PJSIP. Я пытаюсь решить проблемы шаг за шагом. Проблема, которую я хочу исправить, - это разрешение SRV.PJSIP iOS не может разрешить запись SRV в сети IPV6

Я делаю разрешение srv как это в моем приложении, и он терпит неудачу (тайм-аут/нет результата). Я мог бы использовать команду dig на моем mac, которая находится в той же сети ipv6, и правильно решает запись SRV, которую я пытаюсь сделать из pjsip. Любой вход на правильный API для использования для IPV6 здесь приветствуется.

pj_dns_resolver* m_pDnsResolver = NULL; 

::pj_dns_resolver_create(
       &(m_cachingPool.Get().factory), // pf (pool factory) 
       NULL,        // name 
       0,         // options - must be 0 
       NULL,        // timer - unused 
       NULL,        // ioqueue - unused 
       &m_pDnsResolver));    // p_resolver 

// Set the name server to be used (nameServer is 8.8.8.8) 
const std::string localNameServer = nameServer; 

pj_str_t servers[] = { ::pj_str(const_cast< char* >(localNameServer.c_str())) }; 


::pj_dns_resolver_set_ns(
       m_pDnsResolver, 
       1,   // count 
       servers, 
       NULL)); // ports 

// Resolver start query method (DomainName cannot be mentioned here. SRV resolution works fine in IPV4 network) 

void StartQuery(const std::string& domainName) 
{ 
    PJString name(domainName); 

    ::pj_dns_resolver_start_query(
       m_pDnsResolver,    // resolver 
       &(name.Get()),   // name 
       PJ_DNS_TYPE_SRV,   // type 
       0,       // options - must be 0 
       &ResolverCallback, 
       this,      // user_data 
       &m_pAsyncQuery) 
} 

ответ

3

Я работаю над тем же.

Apple попросила всех разработчиков iOS протестировать свои приложения, используя общий доступ к сети Mac. Этот сетевой ресурс использует NAT64: enter image description here

На основе нескольких потоков и собственной документации PJSIP IPv6 еще не поддерживается PJSIP в среде NAT.

Ref1 .: https://trac.pjsip.org/repos/wiki/IPv6

Поддержка IPv6 в pjnath (STUN и ICE)

Чтобы сделать.

Работа по добавлению поддержки IPv6 в pjnath документирована по билетам № 422.

Ref2 .: http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2016-February/018965.html

29 января 2016 года, в 04:49, Риза Sulistyo писал:

Здравствуйте, Ник,

У нас есть открытый билет на ipv6 в (# 419) и (№ 422). Мы думаем о том, чтобы натолкнуть приоритет одного из билетов на 2.6, , однако пока это не принято.

+

Привет Ник,

К сожалению, поддержка DNS (IPv6) в настоящее время не на нашей дорожной карты, так как у нас есть обходной путь. Однако, если вы заинтересованы в его реализации, мы открыты для исправления.

+

Но мне кажется, что есть обходной путь для этого:

Благодаря Риза,

Решая ipv6 адрес сервера и указав, что в качестве прокси-сервера, у меня есть смог получить pjsip для подключения через ipv6.

Я пытаюсь использовать ту же самую версию библиотеки PJSIP (2.4.5), но я запускаю assert, когда пытаюсь подключиться к моему серверу таким образом.

Вы можете подключиться таким образом?

Спасибо!

+1

Я не мог соединиться таким образом. Моей главной проблемой сейчас является разрешение DNS SRV, и я смог получить временное решение, используя API-интерфейс API обслуживания DNS Apple (Bonjour). Хорошая реализация онлайн. Я последовал за ним, и он, похоже, разрешил записи SRV для меня в среде ipv6. Дайте мне знать, если это сработает и для вас. https://justanapplication.wordpress.com/category/ios/ios_api/dns_sd_api/dnsservicequeryrecord/ – adsun

+1

Обратите внимание, что последнее обновление поддерживает ipv6 NAT –

+0

Я использую PJSIP 2.6. В этой версии мое приложение работает с IPv6, только если я предоставляю адрес IPv6. Но проблема стоит, если мой SIP-сервер не поддерживает адрес IPv6. В этом случае есть ли способ получить мое приложение, одобренное яблоком? –