Diameter S-NAPTR #################### SRV ========================================================== RFC2782 SRV的场景是 _foo._proto.example.com 标识服务+协议,例如 _ldap._tcp 之类 NAPTR ========================================================== RFC3403 NAPTR的场景是 提供一个正则替换表达式,借此为指定的URN提供对应的业务域名 例如 urn:cid:199606121851.1@bar.example.com .. note:: cid.urn.arpa. ;; order pref flags service regexp replacement IN NAPTR 100 10 "" "" "!^urn:cid:.+@([^\.]+\.)(.*)$!\2!i" . SIP ========================================================== RFC3824 是NAPTR的典型应用场景,将E.164电话地址转换为SIP电话地址 .. note:: $ORIGIN 0.0.6.2.3.3.5.2.0.2.1.e164.arpa. IN NAPTR 100 10 "u" "E2U+sip" "!^.*$!sip:user@example.com!" . IN NAPTR 100 20 "u" "E2U+mailto" "!^.*$!mailto:info@example.com!" . 注意第8节的隐私讨论,知道电话号码,就能反推sip地址,如果该地址没有匿名化处理,由于明文交互,这也可能是有security concern的 Diameter Straightforward-Naming Authority Pointer(S-NAPTR) ===================================================================== RFC6408: Diameter S-NAPTR Diameter 协议的场景是通信双方对等协商,计费,认证之类,RFC3588 这个S-NAPTR简化了NAPTR的设定,不再设置正则式了,而是直接返回最后一项replacement的值 RFC3958 section 5 有简化思路讨论,Dynamic Delegation Discovery Service(DDDS),为啥SRV太弱,NAPTR太复杂,blablabla 服务标识 "aaa+apX:Y" 的X是登记的应用号码,Y是传输层协议 例如查询一个ex1.example.com域名的Diameter服务,flag="s" .. note:: ;; order pref flags service regexp replacement IN NAPTR 50 50 "s" "aaa:diameter.sctp" "" _diameter._sctp.ex1.example.com IN NAPTR 50 50 "s" "aaa+ap1:diameter.sctp" "" _diameter._sctp.ex1.example.com IN NAPTR 50 50 "s" "aaa+ap4:diameter.sctp" "" _diameter._sctp.ex1.example.com 得到SRV记录,再查SRV,得到服务域名 或者直接返回域名flag="a" .. note:: ;; order pref flags service regexp replacement IN NAPTR 150 50 "a" "aaa:diameter.sctp" "" server1.ex2.example.com IN NAPTR 150 50 "a" "aaa:diameter.tls.tcp" "" server2.ex2.example.com