Dns 执行NAPTR查询

Dns 执行NAPTR查询,dns,sip,srv,Dns,Sip,Srv,这看起来可能是一个非常简单的问题,但我还没有在互联网上找到答案 任何人都可以给我一些关于如何对SIP域执行NAPTR查询的线索吗?(这主要是用于DNS查找),或者任何对我来说也很好的参考(这一个存在于rfc2915上) 也许是使用终端或任何工具,也许更进一步,我想使用java来做这件事,因此如果有任何代码将非常有用。您正在寻找的RFC是“” 下面是如何选择传输协议和解析SIP服务器地址的简要摘要 如果指定了传输参数,则以该参数为准 如果没有传输参数且目标是IP地址,则sip应使用udp和sips

这看起来可能是一个非常简单的问题,但我还没有在互联网上找到答案

任何人都可以给我一些关于如何对SIP域执行NAPTR查询的线索吗?(这主要是用于DNS查找),或者任何对我来说也很好的参考(这一个存在于rfc2915上)


也许是使用终端或任何工具,也许更进一步,我想使用java来做这件事,因此如果有任何代码将非常有用。

您正在寻找的RFC是“”

下面是如何选择传输协议和解析SIP服务器地址的简要摘要

  • 如果指定了传输参数,则以该参数为准
  • 如果没有传输参数且目标是IP地址,则sip应使用udp和sips tcp
  • 如果没有传输参数且目标是具有显式端口的主机名,则sip应使用udp和sips tcp,并且应使用a或AAAA记录DNS查找解析主机(第4.2节)
  • 如果没有传输协议,也没有明确的端口和目标是主机名,则客户端应进行NAPTR查找,并使用服务SIP+D2U、SIP+D2T、SIP+D2S、SIPS+D2T和SIPS+D2S的记录
  • 如果找到NAPTR记录,选择所需的传输并查找SRV记录
  • 如果未找到NAPTR记录,请查找所需协议的SRV记录\u sip.\u udp、\u sip.\u tcp、\u sips.\u tcp、\u sip.\u tls
  • 如果未找到SRV记录,请查找一条或AAAA记录
  • 在现实世界中,几乎没有SIP提供商使用NAPTR记录,可能有一半或更少使用SRV记录,其余的仅依赖于A记录。在我自己的SIP软件中,我关闭了NAPTR查找,因为这只是浪费时间,而且如果SIP提供商费心设置NAPTR记录,他们也很可能设置了标准SRV记录

    事后看来,SIP协议设计者可能应该将整个SIP服务器地址解析放在一边,让实现者使用标准的IP负载平衡和故障切换机制。因为SIP客户端并不都支持SRV记录,根据我不到一半的经验,使用这些记录总比什么都不支持要好,但对于故障切换或负载平衡来说,这并不是一个很好的解决方案

    如果您正在查找具有SIP NAPTR记录的主机名,请尝试columbia.edu和snom.com,上次我检查它们时,它们都有一些。

    与中的任何其他记录一样

    NAPTR记录最常用于Internet电话中的应用程序,例如,在会话启动协议(SIP)中映射服务器和用户地址。NAPTR记录与服务记录(SRV)的组合允许多个记录的链接形成复杂的重写规则,从而生成新的域标签或统一资源标识符(URI)

    NAPTR记录的DNS类型代码为35

    要查询它们,可以使用命令行工具
    dig
    ,并使用
    -t
    开关指定查询类型。例如:

    $ dig -t naptr 4.4.2.2.3.3.5.6.8.1.4.4.e164.arpa
    
    ; <<>> DiG 9.10.6 <<>> -t naptr 4.4.2.2.3.3.5.6.8.1.4.4.e164.arpa
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64886
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;4.4.2.2.3.3.5.6.8.1.4.4.e164.arpa. IN  NAPTR
    
    ;; ANSWER SECTION:
    4.4.2.2.3.3.5.6.8.1.4.4.e164.arpa. 86400 IN NAPTR 100 20 "u" "E2U+pstn:tel" "!^(.*)$!tel:\\1!" .
    4.4.2.2.3.3.5.6.8.1.4.4.e164.arpa. 86400 IN NAPTR 100 10 "u" "E2U+sip" "!^\\+441865332(.*)$!sip:\\1@nominet.org.uk!" .
    
    ;; Query time: 356 msec
    ;; SERVER: 192.168.1.85#53(192.168.1.85)
    ;; WHEN: Sat Oct 13 12:31:29 EDT 2018
    ;; MSG SIZE  rcvd: 179
    
    $dig-t naptr 4.4.2.2.3.3.5.6.8.1.4.4.e164.arpa
    ;  挖掘9.10.6-t naptr 4.4.2.2.3.3.5.6.8.1.4.4.e164.arpa
    ;; 全局选项:+cmd
    ;; 得到答案:
    
    ;; ->>头NAPTR记录和SRV记录在LTE(4G)解决方案中很常见。EPC节点(网络节点)使用DNS选择使用S-NAPTR和SRV记录的其他EPC节点。这使操作员在添加/删除节点时有很大的自由度,而无需更改MME节点上的任何配置。您可以参考一些3gpp标准29.003或23.401,或谷歌的主题“使用DNS的epc节点选择”

    你好sipwiz,德克萨斯州为你的回答,它真的让我更了解,因为我真的在这一个新的。但是我真的很想知道如何进行NAPTR查找,假设我从您的总结的第4点开始,我得到了这个example.org作为fqdn。实际上,我在这里查找一些代码。执行NAPTR查找与执行任何DNS查找相同,您只需指定不同的记录类型。例如,使用Unix dig命令执行NAPTR查找的方法是:dig columbia.edu NAPTR。我的C#代码可以解析SIP名称服务器。嗨,sipwiz,感谢这个挖掘工具,默认情况下,它会出现在OSX终端上,也会在internet上传播到windows版本。java代码有DNSJAVA库,它很容易实现。非常感谢。@dejoong如果您的代码使用的是ENUM(可能找到NAPTR记录的更常见的地方),请在Google代码上查找我的“enumdroid”应用程序-它包括一个通用的Java RFC3401-5 DDDS实现。