4

すべての iOS アプリが IPV6 ネットワークで動作するという Apple の新しい要件により、完全に壊れた PJSIP に基づく VOIP クライアント アプリがあります。段階的に問題を解決しようとしています。最初に修正したい問題は、SRV の解像度です。

アプリでこのような srv 解決を行ったところ、失敗しました (タイムアウト/結果なし)。同じ ipv6 ネットワークにある Mac で dig コマンドを使用すると、pjsip から実行しようとしている SRV レコードが正しく解決されます。ここで IPV6 に使用する正しい API に関する入力は大歓迎です。

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 )
}
4

1 に答える 1

3

私は同じことに取り組んでいます。

Apple は、すべての iOS 開発者に、Mac のネットワーク共有を使用してアプリをテストするように依頼しました。そのネットワーク共有は NAT64 を使用します:ここに画像の説明を入力

複数のスレッドと PJSIP 自身のドキュメントに基づくと、IPv6 は NAT 環境の PJSIP ではまだサポートされていません。

参考1.: https://trac.pjsip.org/repos/wiki/IPv6

pjnath での IPv6 サポート (STUN および ICE)

行われなければ。

pjnath に IPv6 サポートを追加する作業は、チケット #422 で文書化されています。

参考2.: http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2016-February/018965.html

2016 年 1 月 29 日の 04:49 に、Riza Sulistyo は次のように書いています。

こんにちはニック、

(#419) と (#422) で ipv6 のオープン チケットがあります。いずれかのチケットの優先度を 2.6 に上げることを考えていますが、現時点ではまだ決定されていません。

+

こんにちはニック、

残念ながら、回避策があるため、DNS (ipv6) のサポートは現在ロードマップに含まれていません。ただし、実装に興味がある場合は、パッチを受け入れることができます。

+

しかし、これには回避策があるようです:

ありがとうリザ、

サーバーのipv6アドレスを解決し、それをプロキシとして指定することで、pjsipをipv6経由で接続させることができました。

まったく同じバージョンの PJSIP ライブラリ (2.4.5) を使用しようとしていますが、この方法でサーバーに接続しようとするとアサートが発生します。

この方法で接続できますか?

ありがとう!

于 2016-05-19T13:31:14.060 に答える