wie findet ENUM eine Durchwahl?

ViennaAustria

Neuer User
Mitglied seit
11 Okt 2005
Beiträge
177
Punkte für Reaktionen
0
Punkte
0
Hallo!

Bin schon etwas verzweifelt, denn ich finde keine Doku/Antworten zu meinen Fragen. Vielleicht kann mir hier jemand helfen.

Mit ENUM wird eine Rufnummer als Domain dargestellt. Schon klar: Zielrufnummer in internationaler Schreibweise darstellen, alles ausser Ziffern raus, Punkte dazwischen, String umkehren, e164.arpa (oder e164.org) anhängen und NAPTR Records suchen.

Möchte ich z.B. beim österreichischen Telekom-Regulator "RTR" per SIP anrufen, wird aus +43 1 58058

> host -t naptr 8.5.0.8.5.1.3.4.e164.arpa | grep -F "E2U+sip"
8.5.0.8.5.1.3.4.e164.arpa NAPTR 100 10 "u" "E2U+sip" "!^.*$!sip:[email protected]!" .

und damit hab ich eine SIP Adresse. Schön. So weit so klar.


In den NAPTR Records können auch reguläre Ausdrücke stehen, mit denen Durchwahlen verarbeitet werden können. Bloss: wie funktioniert das???

Ich meine hier nicht, wie reguläre Ausdrücke funktionieren, sondern wie der Anrufer/Endgerät/Sipserver den richtigen Record findet. Möchte ich der o.g. RTR beispielsweise ein Fax senden, so geht das an Durchwahl 9191, also an +43 1 58058 9191. Da ein Endgerät ja nicht weiss, was die Rumpfnummer (+43 1 58058 ) und was die Durchwahl (9191) ist, kann es im Grunde ja nur die gesamte Nummer ver-ENUM-en, also

> host -t naptr 1.9.1.9.8.5.0.8.5.1.3.4.e164.arpa | grep -F "E2U+sip"

Da kommt aber nix, weil die Durchwahlen "ja eh" bei der Rumpfnummer (=NAPTR 8.5.0.8.5.1.3.4.e164.arpa) definiert wurden und nicht 11.110 Sub-Einträge für alle möglichen 1-4stelligen Durchwahlen im DNS angelegt sind. Die Arbeit würd sich niemand machen - ausserdem gibt's ja genau dafür die RegExp in den NAPTR Records.

Aber wie erkennt ein Endgerät die Rumpfnummer, um an deren RegExp heranzukommen?

In den RFCs hab ich keinen Hinweis darauf gefunden. Offenbar hab ich in den falschen geschaut...

Müsste ich das implementieren, würde ich die zu wählende Nummer in DNS-Schreibweise umwandeln und mal einen DNS Lookup machen. Wenn nix kommt, würde ich so lange die ersten zwei Zeichen wegnehmen (=die letzte Ziffer der Nummer) und die Schleife wiederholen, bis ich entweder einen NAPTR Record bekomme, oder beim Countrycode angekommen bin. Die Länge der Durchwahlen ist ja nicht bekannt und manche Länder haben globale SIP Records z.B. für alle 0800/0180 Nummern, die von einem Provider kostenlos von SIP im PSTN terminiert werden. Deswegen scheint mir die einzig sinnvolle Abbruchbedingung zu sein, wenn ich beim Countrycode angekommen bin (der im Falle der USA bloss einstellig ist). Kommt ein NAPTR Record, würde ich dessen LHS RegExp mit meiner Zielrufnummer matchen. Wenn das passt, dann erhalte ich auf der RHS die SIP URL.

Das wirkt mir aber irgendwie "komisch" und DNS-Request-intensiv!

Weiss irgendjemand, wie das wirklich ablaufen soll? Ich brauch das leider auscodiert...

DANKE!
Thomas
 
Diese Frage ist schon etwas älter, aber nicht beantwortet...

In DNS gibt es auch Wildcard-Einträge, die Ergebnisse dann für alle Subdomains liefern. Letztendlich kann man auf diese Weise mit Bordmitteln in DNS erreichen, daß auch Durchwahlen oder Länder oder Städte mit einem Default versehen werden.

http://ietfreport.isoc.org/all-ids/draft-ietf-urn-naptr-00.txt

Ein Eintrag im DNS für *.9.4.e164.arpa. würde beispielsweise alle Nummern in Deutschland abfangen.

--gandalf.
 
Zuletzt bearbeitet von einem Moderator:
Hallo!

gandalf94305 schrieb:
In DNS gibt es auch Wildcard-Einträge, die Ergebnisse dann für alle Subdomains liefern.
Danke für die Antwort. Mittlerweile hab ich das auch schon herausgefunden und mein Perl-Miniscript fertig gestellt. Tut bisher brav.

Nochmal danke!
Thomas
 
Hola,

Also, irgendwie krieg ich das mit den DNS Einträgen für Durchwahlen (Wildcards) nicht hin. Ich verwende einen Bind Nameserver und hab folgende Konfiguration für eine fiktive Nummer:

Meine Zone:
Code:
zone "*.5.5.9.9.9.3.4.e164.arpa" {
	type master;
	file "/etc/bind/db.sip_tst";
};

Das Zonen file
Code:
$TTL 1800
@ IN SOA ns1.domain.xx. hostmaster.domain.xx. (
                        1              ; serial
                        3H              ; refresh
			1H              ; retry
			1W              ; expiry
			1H )            ; ttl

@ IN NS ns1.domain.xx.
@ IN NS ns2.domain.xx.
*.5.5.9.9.9.3.4.e164.arpa IN NAPTR 5 10 "u" "E2U+tel" "!^.*$!tel:+43662999!".
*.5.5.9.9.9.3.4.e164.arpa IN NAPTR 2 10 "u" "E2U+sip" "!^.*$!sip:[email protected]!".

Aber irgendwie haut das nicht so hin. Beim Starten vom Bind krieg ich diese Fehlermeldung:
Code:
dns_master_load: /etc/bind/db.sip_tst:10: *.5.5.9.9.9.3.4.e164.arpa: invalid NS owner name (wildcard)
zone *.5.5.9.9.9.3.4.e164.arpa/IN: loading master file /etc/bind/db.sip_tst: invalid NS owner name (wildcard)
Was genau mach ich da falsch ? Is da nur ein kleiner Fehler drinnen od. mach ich da prinzipiell was falsch? Wenn mir wer weiterhelfen könnt, wär super. Od. sagen wo ich nachschaun kann ist auch ok : D

chris...
 
Die Zone sollte 5.5.9.9.9.3.4.e164.arpa heissen und keinen * enthalten. Die Wildcard-Records stehen erst in der Zonendatei selbst. Du kannst dort dann Records eintragen mit "* IN ..." oder wenn mit vollem Namen, dann auch mit Punkt nach .arpa.

Die Fehlermeldung sagt ja eigentlich schon, wo der Fehler liegt. Der Zonenname ist nicht erlaubt, da ein Wildcard enthalten ist ;-)

--gandalf.
 
Enum DNS Einträge für Nebenstellen

Hallo Gandalf,

Danke für deine Antwort. Die Fehlermeldung hab ich schon gelesen, aber nicht gewusst wo das dann mit den Wildcards hingehört.

Habs jetzt hinbekommen, sieht so aus:
Die Zone:
Code:
zone "5.5.9.9.9.3.4.e164.arpa" {
	type master;
	file "/etc/bind/db.sip_tst";
};
Und das Zonenfile:
Code:
$TTL 1800
@ IN SOA ns1.domain.xx. hostmaster.domain.xx. (
                        1              ; serial
                        3H              ; refresh
			1H              ; retry
			1W              ; expiry
			1H )            ; ttl

@ IN NS ns1.domain.xx.com.
@ IN NS ns2.domain.xx.com.

@ IN NAPTR 5  10 U E2U+sip  "!^.*$!sip:[email protected]!".
@ IN NAPTR 10 10 U E2U+tel   "!^.*$!tel:\+4399955!". 

*.5.5.9.9.9.3.4.e164.arpa. IN NAPTR 5  10 U E2U+sip "!^\\+4399955([0-9][0-9][0-9])$!sip:\\[email protected]!".
*.5.5.9.9.9.3.4.e164.arpa. IN NAPTR 10 10 U E2U+tel "!^\\+4399955([0-9][0-9][0-9])$!tel:\+4399955\\1!".

Damit funktionierts, für alle die's interessiert : D

chris...
 
Kleine Anmerkung noch: bei einer Expiration von 1 Woche ist eine TTL von 1/2 Stunde vielleicht nicht so gut ;-) Auch ein Refresh von 3 Stunden ist recht kurz.

Ich würde empfehlen: TTL 3-5 Tage, Refresh 1-5 Tage.

--gandalf.
 
hallo,

damit hab ich mich eigentlich garnicht auseinander gesetzt : D Die Werte hab ich aus zwei verschiedenen Beispielkonfigurationen zusammenkopiert. : ) Wer deinen Rat aber befolgen.

chris...
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.