Hi,
I'm testing an ENUM DNS server (BIND9) with Openser 1.2.0. It seems that Openser Enum module doesn't support wildcard and non terminal NAPTR record.
Enum module is working well when the NAPTR record is defined in the ENUM DNS with complete phone number and ‘u’ flag. Here is an example of the NAPTR record: 1.2.3.4.5.6.7.8.9.3.3.enum1.net IN NAPTR 10 100 "u" "E2U+sip" "!^.*$!sip:+33987654321@example.com!".
When I declared a wildcard in the ENUM DNS (ie: *.enum1.net IN NAPTR 10 100 "u" "E2U+sip" "!^.*$!sip:+33987654321@example.com!".), enum_query function didn't find the NAPTR record. The following message is returned in the log, enum_query(): No NAPTR record found for 1.2.3.4.5.6.7.8.9.3.3.enum1.net.
Should resolver (ie resolve.c source file) or enum module be modified to handle wildcard or is it just a parameter to set ?
In case of wildcard CNAME record instead of NAPTR, openser behave in the same way, the CNAME record was not found.
I also tried to use a non-terminal NAPTR to forward the ENUM DNS query towards another domain. Here is the NAPTR record declared in the ENUM DNS: 1.2.3.4.5.6.7.8.9.3.3.enum1.net IN NAPTR 10 100 "" "" "!^.*([0-9]{11})$!\1.enum2.net!".
By using sip_match function, the enum_query (ie do_query) function discards the NAPTR record without ‘u’ flag. I removed the check on the flag (comment sip_match function) so the NAPTR record is not discarded. But instead of looking for the terminal NATR record, enum_query function overwrites the Request URI with the non-terminal NAPTR record.
Is the handling of non terminal NAPTR fixed in a new version of enum module ? If not, is it planned ?
Thanks in advance for your help.
Best regards,
Jérôme
--text follows this line-- jerome boileau writes:
When I declared a wildcard in the ENUM DNS (ie: *.enum1.net IN NAPTR 10 100 "u" "E2U+sip" "!^.*$!sip:+33987654321@example.com!".), enum_query function didn't find the NAPTR record. The following message is returned in the log, enum_query(): No NAPTR record found for 1.2.3.4.5.6.7.8.9.3.3.enum1.net.
it means that enum module makes NATPR query on the above name and doesn't get back a positive reply.
check with wireshark what you get back.
By using sip_match function, the enum_query (ie do_query) function discards the NAPTR record without ôòøuôòù flag.
is this "non-terminal" NAPTR record specified in the original enum rfc?
-- juha
jerome boileau schrieb:
Hi,
I'm testing an ENUM DNS server (BIND9) with Openser 1.2.0. It seems that Openser Enum module doesn't support wildcard and non terminal NAPTR record.
Enum module is working well when the NAPTR record is defined in the ENUM DNS with complete phone number and ‘u’ flag. Here is an example of the NAPTR record: 1.2.3.4.5.6.7.8.9.3.3.enum1.net IN NAPTR 10 100 "u" "E2U+sip" "!^.*$!sip:+33987654321@example.com!".
When I declared a wildcard in the ENUM DNS (ie: *.enum1.net IN NAPTR 10 100 "u" "E2U+sip" "!^.*$!sip:+33987654321@example.com!".), enum_query function didn't find the NAPTR record. The following message is returned in the log, enum_query(): No NAPTR record found for 1.2.3.4.5.6.7.8.9.3.3.enum1.net.
Openser is not able to differ between wildcard and normal records. The wildcard handling is done in the DNS server. So, there can not be a problem with openser, but with your zone file.
e.g. this should work: ====================== *.enum1.net IN NAPTR 10 100 "u" "E2U+sip" Here 1.2.3.4.5.6.7.8.9.3.3.enum1.net should return the wildcard NAPTR
e.g this does not work: ======================= *.enum1.net IN NAPTR 10 100 "u" "E2U+sip" 1.2.3.enum1.net IN NAPTR 10 100 "u" "E2U+sip" Here 4.enum1.net should return the wildcard NAPTR, but 1.2.3.4.5.6.7.8.9.3.3.enum1.net will return NXDOMAIN as wildcard works only if there are not other records below the lable.
regardind non-terminal NAPTR. AFAIK they are not supported. IMO they are impossible to understand and implement correctly :-)
regards Klaus
Should resolver (ie resolve.c source file) or enum module be modified to handle wildcard or is it just a parameter to set ?
In case of wildcard CNAME record instead of NAPTR, openser behave in the same way, the CNAME record was not found.
I also tried to use a non-terminal NAPTR to forward the ENUM DNS query towards another domain. Here is the NAPTR record declared in the ENUM DNS: 1.2.3.4.5.6.7.8.9.3.3.enum1.net IN NAPTR 10 100 "" "" "!^.*([0-9]{11})$!\1.enum2.net!".
By using sip_match function, the enum_query (ie do_query) function discards the NAPTR record without ‘u’ flag. I removed the check on the flag (comment sip_match function) so the NAPTR record is not discarded. But instead of looking for the terminal NATR record, enum_query function overwrites the Request URI with the non-terminal NAPTR record.
Is the handling of non terminal NAPTR fixed in a new version of enum module ? If not, is it planned ?
Thanks in advance for your help.
Best regards,
Jérôme
Hi,
Thank you very much for your help.
It seems that many enum clients do not support non-terminal NAPTRs. Openser is one of them. The wildcard behaviour is clear now.
Best regards,
/Jérôme
Klaus Darilion-2 wrote:
jerome boileau schrieb:
Hi,
I'm testing an ENUM DNS server (BIND9) with Openser 1.2.0. It seems that Openser Enum module doesn't support wildcard and non terminal NAPTR record.
Enum module is working well when the NAPTR record is defined in the ENUM DNS with complete phone number and ‘u’ flag. Here is an example of the NAPTR record: 1.2.3.4.5.6.7.8.9.3.3.enum1.net IN NAPTR 10 100 "u" "E2U+sip" "!^.*$!sip:+33987654321@example.com!".
When I declared a wildcard in the ENUM DNS (ie: *.enum1.net IN NAPTR 10 100 "u" "E2U+sip" "!^.*$!sip:+33987654321@example.com!".), enum_query function didn't find the NAPTR record. The following message is returned in the log, enum_query(): No NAPTR record found for 1.2.3.4.5.6.7.8.9.3.3.enum1.net.
Openser is not able to differ between wildcard and normal records. The wildcard handling is done in the DNS server. So, there can not be a problem with openser, but with your zone file.
e.g. this should work:
*.enum1.net IN NAPTR 10 100 "u" "E2U+sip" Here 1.2.3.4.5.6.7.8.9.3.3.enum1.net should return the wildcard NAPTR
e.g this does not work:
*.enum1.net IN NAPTR 10 100 "u" "E2U+sip" 1.2.3.enum1.net IN NAPTR 10 100 "u" "E2U+sip" Here 4.enum1.net should return the wildcard NAPTR, but 1.2.3.4.5.6.7.8.9.3.3.enum1.net will return NXDOMAIN as wildcard works only if there are not other records below the lable.
regardind non-terminal NAPTR. AFAIK they are not supported. IMO they are impossible to understand and implement correctly :-)
regards Klaus
Should resolver (ie resolve.c source file) or enum module be modified to handle wildcard or is it just a parameter to set ?
In case of wildcard CNAME record instead of NAPTR, openser behave in the same way, the CNAME record was not found.
I also tried to use a non-terminal NAPTR to forward the ENUM DNS query towards another domain. Here is the NAPTR record declared in the ENUM DNS: 1.2.3.4.5.6.7.8.9.3.3.enum1.net IN NAPTR 10 100 "" "" "!^.*([0-9]{11})$!\1.enum2.net!".
By using sip_match function, the enum_query (ie do_query) function discards the NAPTR record without ‘u’ flag. I removed the check on the flag (comment sip_match function) so the NAPTR record is not discarded. But instead of looking for the terminal NATR record, enum_query function overwrites the Request URI with the non-terminal NAPTR record.
Is the handling of non terminal NAPTR fixed in a new version of enum module ? If not, is it planned ?
Thanks in advance for your help.
Best regards,
Jérôme
Users mailing list Users@lists.kamailio.org http://lists.kamailio.org/cgi-bin/mailman/listinfo/users