CL_RFC3403_4_NAPTR_reg_repl - Both REGEXP and REPLACEMENT fields exist.
Verify a NUT process when NUT received message that includes multiple Naming Authority
Pointer (NAPTR) Resource Records (RR) containing both REGEXP and REPLACEMENT.
- This field and the REGEXP field together make up the Substitution Expression
- in the DDDS Algorithm. It is simply a historical optimization specifically for
- DNS compression that this field exists. The fields are also mutually exclusive.
- If a record is returned that has values for both fields then it is considered to
- be in error and SHOULD be either ignored or an error returned.
Client (ADVANCED)
CL_RFC3403_4_NAPTR_reg_repl.seq [-tooloption ...]: KOI tool option
See also DNSConfig.pm
AP Server1(TN):A.example.com DNS Server1(TN)
|3ffe:501:ffff:101::10 |3ffe:501:ffff:101::20
|192.168.1.10 |192.168.1.20
| |
Net-y --+--------+-----------------------+-------- 3ffe:501:ffff:101::/64
| 192.168.1/24
|
|
ROUTER1(TN)
|3ffe:501:ffff:100::1
|192.168.0.1
|
Net-z --+--------+-------------------------------- 3ffe:501:ffff:100::/64
| 192.168.0/24
DNS Client1(NUT)
3ffe:501:ffff:100:XXXX
192.168.0.10
XXXX: EUI64 address
Setup
Set the DNS Server1 (TN)'s address on DNS Client1 (NUT) as above mentioned Network Topology.
DNS Client1 (NUT) needs a SIP user agent as DDDS application.
Note that it doesn't use SIP Proxy.
Application Unique String (AUS): +81-90-1111-0001
Converted to the Key: 819011110001
Used domain-name to retrieve Rewrite Rules as NAPTR records: 1.0.0.0.1.1.1.1.0.9.1.8.e164.arpa.
This test sequence is following.
DNS Client1 (NUT) DNS Server1 (TN)
| |
| Invoke some application |
| on NUT (Ex. SIP UA) |
| |
|---------------------------------------------->|
| 1. Send standard query |
| QNAME="1.0.0.0.1.1.1.1.0.9.1.8.e164.arpa." |
| QTYPE=NAPTR |
| |
|<----------------------------------------------|
| 2. Send standard response |
| |
|---------------------------------------------->|
| 3. Send standard query |
| QNAME="sip.example.com" |
| QTYPE=NAPTR |
| |
|<----------------------------------------------|
| 4. Send standard query response |
| |
|---------------------------------------------->|
| 5. Send standard query |
| QNAME="_sip._udp.sip.example.com" |
| QTYPE=SRV |
| |
v v
1. DNS Client1 (NUT) sends a standard query with QNAME = "1.0.0.0.1.1.1.1.0.9.1.8.e164.arpa." type = NAPTR
2. DNS Server1 (NUT) transmits a response to DNS Client1 (NUT) with:
$ORIGIN 1.0.0.0.1.1.1.1.0.9.1.8.e164.arpa.
;; order pref flags service regexp replacement
IN NAPTR 0 0 "u" "E2U+sip" "!^.*$!sip:info1@hoge.example.com!i" _sip._udp.hoge.example.com.
IN NAPTR 0 0 "u" "E2U+sip" "!^.*$!sip:info1@sip.example.com!i" .
3. DNS Client1 (NUT) sends a standard query with QNAME = "sip.example.com." type = NAPTR. Judgment (Check *3)
4. DNS Server1 (NUT) transmits a response to DNS Client1 (NUT) with:
$ORIGIN sip.example.com.
;; order pref flags service regexp replacement
IN NAPTR 0 0 "s" "SIP+D2U" "!^.*$!sip:info1@hoge.example.com!i" _sip._udp.hoge.example.com.
IN NAPTR 0 0 "s" "SIP+D2U" "" _sip._udp.sip.example.com.
5. DNS Client1 (NUT) sends a standard query with QNAME = "_sip._udp.sip.example.com." type = SRV. Judgment (Check *5)
- Packet Description
- 1st packet.
|
Standard query from DNS Client1 (NUT) to Server1 (TN)
|
| IP Header |
Source Address |
NUT_NETZ |
| Destination Address |
SV1_NETY |
| UDP Header |
Src Port |
ANY |
| Dst Port |
53 |
| DNS Header |
ID |
ANY |
| QR |
0 |
| OPCODE |
0 |
| AA |
0 |
| TC |
0 |
| RD |
0 |
| RA |
0 |
| Z |
0 |
| RCODE |
0 |
| QDCOUNT |
1 |
| ANCOUNT |
0 |
| NSCOUNT |
0 |
| ARCOUNT |
0 |
| DNS Question section |
QNAME |
1.0.0.0.1.1.1.1.0.9.1.8.e164.arpa. |
| QTYPE |
NAPTR (0x0023) |
| QCLASS |
IN (0x0001) |
- 2nd packet.
|
Standard query response from DNS Server1 (TN) to Client1 (NUT)
|
| IP Header |
Source Address |
SV1_NETY |
| Destination Address |
NUT_NETZ |
| UDP Header |
Src Port |
53 |
| Dst Port |
Value that NUT uses |
| DNS Header |
ID |
Value that NUT uses |
| QR |
1 |
| OPCODE |
0 |
| AA |
1 |
| TC |
0 |
| RD |
0 |
| RA |
0 |
| Z |
0 |
| RCODE |
0 |
| QDCOUNT |
1 |
| ANCOUNT |
2 |
| NSCOUNT |
1 |
| ARCOUNT |
2 |
| DNS Question section |
QNAME |
1.0.0.0.1.1.1.1.0.9.1.8.e164.arpa. |
| QTYPE |
NAPTR (0x0023) |
| QCLASS |
IN (0x0001) |
| DNS Answer section |
NAME |
1.0.0.0.1.1.1.1.0.9.1.8.e164.arpa. (Pointer 0xC00C) |
| TYPE |
NAPTR (0x0023) |
| CLASS |
IN (0x0001) |
| TTL |
86400sec |
| RDLENGTH |
76 |
| ORDER |
0 |
| PREFERENCE |
0 |
| FLAGS |
u |
| SERVICES |
E2U+sip |
| REGEXP |
!^.*$!sip:info1@hoge.example.com!i |
| REPLACEMENT |
_sip._udp.hoge.example.com. |
| DNS Answer section |
NAME |
1.0.0.0.1.1.1.1.0.9.1.8.e164.arpa. (Pointer 0xC00C) |
| TYPE |
NAPTR (0x0023) |
| CLASS |
IN (0x0001) |
| TTL |
86400sec |
| RDLENGTH |
49 |
| ORDER |
0 |
| PREFERENCE |
0 |
| FLAGS |
u |
| SERVICES |
E2U+sip |
| REGEXP |
!^.*$!sip:info1@sip.example.com!i |
| REPLACEMENT |
. |
| DNS Authority section |
NAME |
1.1.1.1.0.9.1.8.e164.arpa. (Pointer 0xC014) |
| TYPE |
NS (0x0002) |
| CLASS |
IN (0x0001) |
| TTL |
86400sec |
| RDLENGTH |
17 |
| NSDNAME |
NS1.example.com |
| DNS Additional section |
NAME |
NS1.example.com (Pointer 0xC0D4) |
| TYPE |
A (0x0001) |
| CLASS |
IN (0x0001) |
| TTL |
86400sec |
| RDLENGTH |
4 |
| ADDRESS |
192.168.1.20 |
| DNS Additional section |
NAME |
NS1.example.com (Pointer 0xC0D4) |
TYPE
|
AAAA (0x001C) |
| CLASS |
IN (0x0001) |
| TTL |
86400sec |
| RDLENGTH |
16 |
| ADDRESS |
3ffe:501:ffff:101::20 |
- 3rd packet.
|
Standard query from DNS Client1 (NUT) to Server1 (TN)
|
| IP Header |
Source Address |
NUT_NETZ |
| Destination Address |
SV1_NETY |
| UDP Header |
Src Port |
ANY |
| Dst Port |
53 |
| DNS Header |
ID |
ANY |
| QR |
0 |
| OPCODE |
0 |
| AA |
0 |
| TC |
0 |
| RD |
0 |
| RA |
0 |
| Z |
0 |
| RCODE |
0 |
| QDCOUNT |
1 |
| ANCOUNT |
0 |
| NSCOUNT |
0 |
| ARCOUNT |
0 |
| DNS Question section |
QNAME |
sip.example.com. |
| QTYPE |
NAPTR (0x0023) |
| QCLASS |
IN (0x0001) |
- 4th packet.
|
Standard query response from DNS Server1 (TN) to Client1 (NUT)
|
| IP Header |
Source Address |
SV1_NETY |
| Destination Address |
NUT_NETZ |
| UDP Header |
Src Port |
53 |
| Dst Port |
Value that NUT uses |
| DNS Header |
ID |
Value that NUT uses |
| QR |
1 |
| OPCODE |
0 |
| AA |
1 |
| TC |
0 |
| RD |
0 |
| RA |
0 |
| Z |
0 |
| RCODE |
0 |
| QDCOUNT |
1 |
| ANCOUNT |
2 |
| NSCOUNT |
1 |
| ARCOUNT |
2 |
| DNS Question section |
QNAME |
sip.example.com. |
| QTYPE |
NAPTR (0x0023) |
| QCLASS |
IN (0x0001) |
| DNS Answer section |
NAME |
sip.example.com. (Pointer 0xC00C) |
| TYPE |
NAPTR (0x0023) |
| CLASS |
IN (0x0001) |
| TTL |
86400sec |
| RDLENGTH |
76 |
| ORDER |
0 |
| PREFERENCE |
0 |
| FLAGS |
s |
| SERVICES |
SIP+D2U |
| REGEXP |
"!^.*$!sip:info1@hoge.example.com!i" |
| REPLACEMENT |
_sip._udp.hoge.example.com |
| DNS Answer section |
NAME |
sip.example.com. (Pointer 0xC00C) |
| TYPE |
NAPTR (0x0023) |
| CLASS |
IN (0x0001) |
| TTL |
86400sec |
| RDLENGTH |
42 |
| ORDER |
0 |
| PREFERENCE |
0 |
| FLAGS |
s |
| SERVICES |
SIP+D2U |
| REGEXP |
(not present) |
| REPLACEMENT |
_sip._udp.sip.example.com |
| DNS Authority section |
NAME |
example.com. (Pointer 0xC010) |
| TYPE |
NS (0x0002) |
| CLASS |
IN (0x0001) |
| TTL |
86400sec |
| RDLENGTH |
17 |
| NSDNAME |
NS1.example.com |
| DNS Additional section |
NAME |
NS1.example.com (Pointer 0xC099) |
| TYPE |
A (0x0001) |
| CLASS |
IN (0x0001) |
| TTL |
86400sec |
| RDLENGTH |
4 |
| ADDRESS |
192.168.1.20 |
| DNS Additional section |
NAME |
NS1.example.com (Pointer 0xC099) |
TYPE
|
AAAA (0x001C) |
| CLASS |
IN (0x0001) |
| TTL |
86400sec |
| RDLENGTH |
16 |
| ADDRESS |
3ffe:501:ffff:101::20 |
- 5th packet.
|
Standard query from DNS Client1 (NUT) to Server1 (TN)
|
| IP Header |
Source Address |
NUT_NETZ |
| Destination Address |
SV1_NETY |
| UDP Header |
Src Port |
ANY |
| Dst Port |
53 |
| DNS Header |
ID |
ANY |
| QR |
0 |
| OPCODE |
0 |
| AA |
0 |
| TC |
0 |
| RD |
0 |
| RA |
0 |
| Z |
0 |
| RCODE |
0 |
| QDCOUNT |
1 |
| ANCOUNT |
0 |
| NSCOUNT |
0 |
| ARCOUNT |
0 |
| DNS Question section |
QNAME |
_sip._udp.sip.example.com. |
| QTYPE |
SRV (0x0021) |
| QCLASS |
IN (0x0001) |
- Exp.
| NUT_NETZ |
DNS Client1's (NUT) Net-z address |
| SV1_NETY |
DNS Server1's (TN) Net-y address |
3. Received a query message that it includes QNAME=sip.example.com, TYPE=NAPTR.
5. Received a query message that it includes QNAME=_sip._udp.sip.example.com, TYPE=SRV.
If NUT has cache function, clear the cache.
RFC3403 Dynamic Delegation Discovery System (DDDS)
Part Three: The Domain Name System (DNS) Database
4. NAPTR RR Format
RFC3263 Session Initiation Protocol (SIP): Locating SIP Servers
RFC3761 The E.164 to Uniform Resource Identifiers (URI)
Dynamic Delegation Discovery System (DDDS) Application (ENUM)
RFC2782 A DNS RR for specifying the location of services (DNS SRV)