|
|
noxaDNS InterfaceDieses Dokument beschreibt das Interface des noxaDNS/noxaDynDNS-Backends in der Version 1.0. Es ist abwärtskompatibel zu 0.9.2.
Ein
Es werden folgende Befehle unterstützt: Befehle Standard Command SetÜbersicht Befehle
Ausgabe von HELP210-Available Commands: (Protocol Version 1.0) 210-HELP - show this help message 210-EHLP - show help for Advanced Command Set (needs EHLO first) 210-MOTD - show message of the day 210-QUIT - exit interface 210- 210-Authorization: 210-HELO fqdn - great each other, get salt 210-EHLO fqdn - great each other, get salt, 210- use Advanced Command Set 210-USER user pass - authorize yourself 210-USER user md5 - md5(pass+salt) 210-USER user sha1 - sha1(pass+salt) 210- 210-Updates: 210-UPDATE host domain type [value [ttl]] - update record 210-CREATE host domain [type [value [ttl]]] - create new host 210-DELETE host domain [type] 210- delete type from host entry or purge entire host 210- (use UPDATE!, CREATE!, or DELETE! to force 210- even if not owned or attached to) 210- 210-Misc: 210-LIST [pattern [sortorder [limit [typepattern]]]] 210- list records for this account matching pattern, if given 210-LIST! - as above, but list even unattached zones 210-CHPASS new - change password to new 210-GET setting - get value of setting 210-SET setting newvalue - set value 210- 210-Available Record Types: 210-A AAAA MX CNAME NS TXT PTR 210-Available Sort Orders: 210-ASC DESC VALUE VALUEDESC 210-Available Special Pattern Chars: 210-% 210-Available Settings: 210-EMAIL DEFAULT_TTL 210-Available Domains: 210-noxadyndns.de h3c.de 210-Blank Char Substitute: 210-# 210 . Befehle Advanced Command Set
Das Advanced Command Set wird durch Folgende zusätzlichen Kommandos werden unterstützt: Übersicht Befehle
Ausgabe von EHLP211-Advanced Command Set Available Commands: (Protocol Version 1.0) 211-EHLP - show this help message 211-HELP - show other help message 211-MOTD - show message of the day 211-QUIT - exit interface 211- 211-Zone Administration: 211-ZONE_ADD zone master - add zone to NS as SLAVE 211-ZONE_DEL zone - delete zone and all records of zone from NS 211-ZONE_CREATE zone email.address 211- create new MASTER zone with email@address as contact 211-ZONE_LIST [pattern [sortorder [limit [typepattern]]]] 211- list zones matching pattern, if given 211-ZONE_ATTACH zone [user] 211- attach zone to user, if omitted attach to ourself 211-ZONE_DETACH zone - detach zone 211-ZONE_ALIST [pattern [sortorder [limit]]] 211- list attachments matching pattern 211- 211-Advanced Administration: 211-BUMP zone [newserial] 211- increment serial of zone or set serial (i.e., to change schema) 211-DELAY_BUMP true|false 211- turn off/on automatic bumping of serial on CREATE|UPDATE|DELETE 211-FORWARD server1[,server2[,serverN]] COMMAND [param1 [param2 [paramN]]] 211- forward command to server(s) 211- 211-User Administration: 211-USER_CREATE user firstname lastname email passwd [userlevel [maxhosts]] 211- create new user 211-USER_CHANGE user newuserlevel [newmaxhosts [newpasswd]] 211- change userlevel or more 211-USER_DEL user - delete user 211-USER_LIST [pattern [sortorder [limit]]] 211- list users matching pattern 211-USER_HLIST [pattern [sortorder [limit]]] 211- list user hosts matching pattern 211-HOST_ATTACH fqhost [user] 211- attach host to user, if omitted attach to ourself 211-HOST_DETACH fqhost - detach host 211- 211-Guru Meditation Commands: 211-SQL sqlstatement - execute SQL statement 211-FETCH [numrows] - fetch results for last SQL statement 211- 211-Available Advanced Record Types: 211-SOA PTR 211-Available Zone Sort Orders: 211-ASC DESC TYPE MASTER NOTIFIED 211-Available Attachment Sort Orders: 211-ASC DESC USER USERDESC 211-Available User Sort Orders: 211-ASC DESC USERLEVEL USERLEVELDESC MAXHOSTS MAXHOSTSDESC 211-Available User Host Sort Orders: 211-ASC DESC USER USERDESC 211 . Rückgabe- und FehlercodesDie Codes sind in 4 Gruppen eingeteilt: Codegruppen
Auswahl von Fehlercodes für noxaDynDNSStatus- und Fehlercodes
Alle Status und Fehlercodes
220 %s noxaDNS Backend %s (%s), Protocol Version %s (on connection)
221 %s disconnecting (QUIT)
230 user [%s] created (USER_CREATE)
231 user [%s] changed (USER_CHANGE)
232 user [%s] deleted (USER_DEL)
240 (message of the day MOTD)
250 %s, welcome [%s]. {%s} (HELO/EHLO)
250 Oh, hello again, good friend.. (HELO/EHLO)
250 password for [%s] changed (CHPASS)
250 success, user [%s] logged in; userlevel (%s) maxhosts (%s) (USER)
260 host [%s] domain [%s] type [%s] value [%s] updated (UPDATE)
270 host [%s] domain [%s] type [%s] value [%s] created (CREATE)
271 host [%s] attached to [%s] (HOST_ATTACH)
272 host [%s] detached (HOST_DETACH)
280 host [%s] domain [%s] type [%s] deleted (DELETE)
290 [%s] is now slave for zone [%s] with master [%s] (ZONE_ADD)
291 zone [%s] deleted (ZONE_DEL)
292 zone [%s] created (ZONE_CREATE)
293 zone [%s] attached to [%s] (ZONE_ATTACH)
294 zone [%s] detached (ZONE_DETACH)
295 serial bumped on zone [%s] (BUMP)
296 session value for DELAY_BUMP changed to [%s] (DELAY_BUMP)
300 (results from LIST)
301 (results from USER_HLIST)
310 (results from GET)
320 (results from SET)
330 (results from USER_LIST)
350 (results from ZONE_LIST)
351 (results from ZONE_ALIST)
380 (results from SQL)
381 (results from FETCH)
390 (results from FORWARD)
391 (results per server from FORWARD (in 390))
450 temporary failure (*)
451 no changes made (UPDATE)
452 cannot get old SOA for zone, can't update serial (UPDATE, CREATE, DELETE)
453 service currently n/a (*)
500 please authorize yourself first (Standard and Advanced Command Set)
500 polite people say EHLO or at least HELO first.. (Standard and Advanced Command Set)
501 already authorized (USER)
502 unknown command (*)
503 ProgrammingError: syntax error in your SQL statement [%s] [%s] (SQL)
504 OperationalError: SQL statement could not be executed [%s] [%s] (SQL)
505 unknown error occured on SQL statement [%s] [%s] (SQL)
506 rows needs to be a number (FETCH)
507 ProgrammingError: guess there was no previous SQL statement (FETCH)
508 unknown error on fetching results (FETCH)
(Standard and Advanced Command Set)
510 missing values, see HELP/EHLP
511 invalid hostname
512 invalid domain, valid public domains: %s
513 unknown type, valid: %s
514 invalid value, not an IPv4 address
514 invalid value, not an IPv6 address
515 invalid value, not a full hostname
516 invalid value, too long
517 unknown sort order, valid: %s
518 invalid ttl
520 invalid password (CHPASS)
521 invalid setting, possible keys: %s (SET, GET)
522 invalid value, possible values: %s (SET)
530 host [%s] already exists and is not delegated to you (CREATE)
530 host [%s] does not exist or is not delegated to you (UPDATE)
531 mapping [%s] for host [%s] already exists (CREATE)
531 mapping [%s] for host [%s] does not exist (UPDATE)
532 CNAME exists for host [%s], can not add [%s] record (CREATE)
533 CNAME requested, but other records exist (CREATE)
534 unallowed record type for a reverse zone (CREATE)
535 unallowed record type for a normal zone (CREATE)
540 host [%s] is not delegated to you or does not exist (DELETE)
541 no mapping [%s] for host [%s] (DELETE)
550 authorization failed for [%s] (Advanced Command Set)
551 your are not authorized to execute this command. (Advanced Command Set)
560 too many hosts, maximum is %d (CREATE)
570 need fully qualified domain name (ZONE_ADD, ZONE_DEL, ZONE_CREATE)
571 need IPv4 or IPv6 address for master (ZONE_ADD)
572 zone already exists (ZONE_ADD, ZONE_CREATE)
573 zone does not exist (ZONE_DEL)
574 email contact is invalid (ZONE_CREATE)
575 cannot attach zone, already attached or non-existing zone (ZONE_ATTACH)
577 cannot detach zone or host (ZONE_DETACH)
580 invalid user name (USER_CREATE)
581 invalid email address (USER_CREATE)
583 user [%s] already exists (USER_CREATE)
584 userlevel needs to be a number (USER_CREATE)
585 maxhosts needs to be a number (USER_CREATE)
586 you cannot set userlevels higher than yours (USER_CREATE)
587 user [%s] not found (USER_DEL)
595 cannot bump non-existing zone [%s] (BUMP)
596 cannot bump zone [%s] (BUMP)
597 invalid serial (BUMP)
598 expected boolean, TRUE or FALSE (DELAY_BUMP)
Verfügbare Record-Typen
Derzeit werden
Hat bzw. soll ein Host einen
Bei
Wird beim Update von
Die Standard Verbindung aufnehmen zum noxaDNS-Server
Das Backend ist erreichbar unter Wir empfehlen die grundsätzliche Verwendung einer SSL-gesicherten Verbindung. Sollte dies nicht möglich sein, sollte zumindest die angebotene Challenge Response Authentification mit MD5/SHA1 benutzt werden, damit das Passwort nicht im Klartext uebertragen wird. Die Backend-Server verwenden untereinander SSL-Verbindungen zur Kommunikation. Sollte dies fehschlagen, verwenden diese die MD5/SHA1 Authentification. Des weiteren sind diese über IPv6 zu erreichen. Derzeit sind folgende Server verfügbar:
noxaDynDNS-Nutzer verwenden bitte nur
Um zu (Die Schritte 1 und 2 sind optional und nur einmalig erforderlich) # (1) CA-Cert von noxa.de holen (zur Verifikation): # z.B. mit curl(1), wget(1) oder lynx(1): <0>[4:59]niklas@mayhem:~$ curl -s -o noxa-ca.crt http://noxa.de/ca.crt <0>[4:59]niklas@mayhem:~$ wget -q -O noxa-ca.crt http://noxa.de/ca.crt <0>[5:00]niklas@enterprise:~$ lynx -dump http://noxa.de/ca.crt > noxa-ca.crt # (2) Fingerprint überprüfen: # http://www.noxa.de/?sslcert <0>[5:00]niklas@mayhem:~$ openssl x509 -noout -fingerprint < noxa-ca.crt SHA1 Fingerprint=92:11:9B:B6:64:33:B8:0F:D0:AD:A1:F2:CD:76:A3:AA:F3:44:5F:EF # (3) Verbindung aufnehmen: <0>[5:01]niklas@mayhem:~$ openssl s_client -quiet -CAfile noxa-ca.crt -connect dyndns.noxa.de:64201 depth=1 /C=DE/O=noxa.de Network/CN=noxa.de/emailAddress=hostmaster@noxa.de verify return:1 depth=0 /C=DE/O=noxa.de Network/CN=*.noxa.de/emailAddress=hostmaster@noxa.de verify return:1 220 enterprise.noxa.de noxaDNS Backend 1.0 ($Revision: 1.1 $), Protocol Version 1.0 Beispielabläufe noxaDynDNSAnmelden und Ändern eines RecordsNach dem Verbindungsaufbau zu dyndns.noxa.de auf Port 64200 liefert der Server eine Meldung der Form: > 220 enterprise.noxa.de noxaDNS Backend <version> (<revision>), Protocol Version <version>
Nun erwartet der Server eine Antwort in der Form
< HELO centaur.noxa.de
> 250 enterprise.noxa.de, Welcome [centaur.noxa.de]. {97110}
Jetzt kann die Authentifizierung durch eine von drei verschiedenen Methoden stattfinden: Im Klartext, als MD5 oder als SHA1-Hash. Der Salt für die letzteren wurde bei der Begrüßung in den geschweiften Klammern übergeben.
Wir verwenden die Klartext-Variante: < USER andrea geheim > 250 success, user [andrea] logged in; level (0), maxhosts (10)
Mit
< LIST
> 300-entries for [andrea] matching () type (%)
> 300-[andrea.h3c.de] {h3c.de}
> 300- * [MX] [b.mx.noxa.de] (180) (1)
> 300- * [A] [127.0.0.1] (180) (1)
> 300-[rhcp-fansite.noxadyndns.de] {noxadyndns.de}
> 300- * [MX] [a.mx.noxa.de] (14400) (1)
> 300- * [MX] [c.mx.noxa.de] (14400) (2)
> 300- * [A] [212.60.197.61] (7200) (1)
> 300- * [A] [195.122.181.61] (7200) (2)
> 300 .
Wir haben also die Hosts
Update des < UPDATE andrea h3c.de A 80.146.61.21 > 260 host [andrea] domain [h3c.de] type [A] value [80.146.61.21] updated
Sofern die IP-Adresse der Verbindung mit dem gewünschten
Wert übereinstimmt, kann diese auch weggelassen werden. < UPDATE andrea h3c.de A > 260 host [andrea] domain [h3c.de] type [A] value [80.146.61.21] updated
Die Ausgabe von < LIST andrea.h3c.de > 300-entries for [andrea] matching (andrea.h3c.de) type (%) > 300-[andrea.h3c.de] > 300- * [MX] [b.mx.noxa.de] (180) (1) > 300- * [A] [80.146.61.21] (180) (1) > 300 . Wir haben als Parameter bei List den Host angegeben, den wir sehen wollen. So verlieren wir bei vielen Hosts und Records nicht die Übersicht.
Mit < QUIT > 221 enterprise.noxa.de disconnecting Connection closed by foreign host. Host oder Record anlegen
Bei neuen Accounts ist noch kein Hostname vorhanden. Hostnames und
Records dazu werden mit dem Befehl
< CREATE cyber noxadyndns.de
> 270 host [cyber] domain [noxadyndns.de] type [A] value [127.0.0.1] created
< LIST %noxadyndns.de
> 300-entries for [andrea] matching (%noxadyndns.de) type (%)
> 300-[cyber.noxadyndns.de] {noxadyndns.de}
> 300- * [A] [127.0.0.1] (180) (1)
> 300-[rhcp-fansite.noxadyndns.de] {noxadyndns.de}
> 300- * [MX] [a.mx.noxa.de] (14400) (1)
> 300- * [MX] [c.mx.noxa.de] (14400) (2)
> 300- * [A] [212.60.197.61] (7200) (1)
> 300- * [A] [195.122.181.61] (7200) (2)
> 300 .
Uns wurde der Hostname
Diesen ändern wir und fügen mit einem weiteren
< UPDATE cyber noxadyndns.de A 131.6.137.10
> 260 host [cyber] domain [noxadyndns.de] type [A] value [131.6.137.10] updated
< CREATE cyber h3c.de MX1 andrea.h3c.de 7200
> 270 host [cyber] domain [noxadyndns.de] type [MX1] value [andrea.h3c.de] created
< CREATE cyber h3c.de MX3 b.mx.noxa.de 7200
> 270 host [cyber] domain [noxadyndns.de] type [MX3] value [b.mx.noxa.de] created
< LIST cyber.noxadyndns.de
> 300-entries for [andrea] matching (%noxadyndns.de) value (%)
> 300-[cyber.noxadyndns.de] {noxadyndns.de}
> 300- * [A] [131.6.137.10] (180) (1)
> 300- * [MX] [andrea.h3c.de] (7200) (1)
> 300- * [MX] [b.mx.noxa.de] (7200) (3)
> 300- .
Host oder Record löschen
Records und ganze Hosts lassen sich mit dem Befehl
Dabei ist zu beachten, dass es möglich ist, einen Hostname
delegiert zu haben, der keine Records besitzt.
Wir löschen den
< DELETE cyber noxadyndns.de A1
> 280 host [cyber] domain [noxadyndns.de] type [A1] deleted
< LIST cyber.noxadyndns.de
> 300-entries for [andrea] matching (cyber.noxadyndns.de) type (%)
> 300-[cyber.noxadyndns.de] {noxadyndns.de}
> 300- * [MX] [andrea.h3c.de] (7200) (1)
> 300- * [MX] [b.mx.noxa.de] (7200) (3)
> 300 .
Da die
Wenn wir keinen Gefallen an < DELETE cyber noxadyndns.de > 280 host [cyber] domain [noxadyndns.de] type [] deleted Authentifikation via MD5/SHA1
Wir bieten neben der Klartext-Authentifikation auch MD5- und
SHA1-Authentifikation an. Dazu liefert der Server beim
Der Hashwert wird, anstelle des Klartextpassworts, mit dem
Befehl Beispiel:
Connected to ds9.noxa.de.
Escape character is '^]'.
> 220 ds9.noxa.de noxaDNS Backend 1.0 ($Revision 1.42 $), Protocol Version 1.0
< HELO bender.noxadyndns.de
> 250 ds9.noxa.de, welcome [bender.noxadyndns.de]. {443493}
Wir haben für diese Session den Salt
<0>[21:03]niklas@mayhem:~$ echo -n 'geheim443493' | openssl sha1
935b403e4cde930c5d85a64b5650c42bb9bb3325
# oder, falls wir openssl nicht haben, jedoch das Programm md5:
<0>[19:04]niklas@martyr:~$ echo -n 'geheim443493' | md5
ae0f418ae57dd0d7cf5bc12ede7e4773
# oder, falls wir lieber Python benutzen:
<0>[21:05]niklas@mayhem:~$ python2.3
Python 2.3.5 (#1, Jul 11 2006, 09:47:28)
[GCC 4.1.2 20060628 prerelease (NetBSD nb1 20060628)] on netbsd3
Type "help", "copyright", "credits" or "license" for more information.
>>> import sha
>>> digest = sha.new()
>>> digest.update('geheim')
>>> digest.update('443493')
>>> digest.hexdigest()
'935b403e4cde930c5d85a64b5650c42bb9bb3325'
Nun können wir uns authentifizieren. USER niklas 935b403e4cde930c5d85a64b5650c42bb9bb3325 250 success, user [niklas] logged in; level (255), maxhosts (2000) Beispielabläufe noxaDNSDie Grundlagen aus dem vorigen Abschnitt werden vorrausgesetzt. Secondary/Slave-NS für eine Zone anlegenDer aktuelle noxaDNS-Server soll Slave für example.com werden, der authoritative NS für die Zone sei 23.42.23.42: < ZONE_ADD example.com 23.42.23.42 > 290 [h.dns.noxa.de] is now slave for zone [example.com] with master [23.42.23.42] < ZONE_LIST (falls genügende Rechte für dieses Kommando!) > 350-zones matching () type (%) > 350-[example.com] master [23.42.23.42] type [SLAVE] ntfy'd serial [None] > 350 . < ZONE_ALIST > 351-attachments matching () > 351-[example.com] user [jessica] > 351 .
Die noxaDNS-Server ds9.noxa.de und defiant.noxa.de sollen Slave für die
Reverse-Delegation des IPv6-Netzes 2001:6f8:96c::/48 werden, der
authoritative NS für die Zone sei 212.60.197.71. Wir benutzen dazu
zusätzlich das < FORWARD ds9.noxa.de,defiant.noxa.de ZONE_ADD c.6.9.0.8.f.6.0.1.0.0.2.ip6.arpa 212.60.197.71 > 390-executing command [ZONE_ADD c.6.9.0.8.f.6.0.1.0.0.2.ip6.arpa 212.60.197.71] on [2] server(s): > 390-391-response from [ds9.noxa.de]: > 390-391-[290 [h.dns.noxa.de] is now slave for zone [c.6.9.0.8.f.6.0.1.0.0.2.ip6.arpa] with master [212.60.197.71]] > 390-391 . > 390-391-response from [defiant.noxa.de]: > 390-391-[290 [b.dns.noxa.de] is now slave for zone [c.6.9.0.8.f.6.0.1.0.0.2.ip6.arpa] with master [212.60.197.71]] > 390-391 . > 390 . < FORWARD ds9.noxa.de ZONE_LIST c.6.9.%.ip6.arpa (falls genügende Rechte für dieses Kommando!) > 390-391-response from [ds9.noxa.de]: > 390-391-[350-zones matching (c.6.9.%.ip6.arpa) type (%)] > 390-391-[350-[c.6.9.0.8.f.6.0.1.0.0.2.ip6.arpa] master [212.60.197.71] type [SLAVE] ntfy'd serial [None]] > 390-391-[350 .] > 390-391 . > 390 . < FORWARD ds9.noxa.de ZONE_ALIST > 390-391-response from [ds9.noxa.de]: > 390-391-[351-attachments matching ()] > 390-391-[351-[example.com] user [jessica]] > 390-391-[351-[c.6.9.0.8.f.6.0.1.0.0.2.ip6.arpa] user [jessica]] > 390-391-[351 .] > 390-391 . > 351 . Neue Zone mit primärem und sekundärem NS anlegenDie Zone example.com soll auf dem aktuellen noxaDNS-Server angelegt werden (der dann Primärer NS wird) und defiant.noxa.de soll Slave werden. Es werden zusätzlich ein paar Records angelegt:
< ZONE_CREATE example.com hostmaster.example.com
> 292 zone [example.com] created
< LIST %example.com
> 300-entries for [ines] matching (%example.com) type (%)
> 300-[example.com] {example.com}
> 300- * [NS] [a.dns.noxa.de] (14400) (1)
> 300- * [SOA] [a.dns.noxa.de hostmaster.example.com 1153683996 14400 1800 2419200 1800] (14400) (0)
> 300 .
< FORWARD defiant.noxa.de ZONE_ADD example.com 212.60.197.41
(212.60.197.41 ist die IP-Adresse von a.dns.noxa.de, siehe SOA)
> 390-executing command [ZONE_ADD example.com 212.60.197.41 of a.dns.noxa.de] on [1] server(s):
> 390-391-response from [defiant.noxa.de]:
> 390-391-[290 [b.dns.noxa.de] is now slave for zone [example.com] with master [212.60.197.41]]
> 390-391 .
> 390 .
< SET DEFAULT_TTL 14400
> 320 value for key [DEFAULT_TTL] is now [14400]
< CREATE . example.com NS2 b.dns.noxa.de
> 270 host [.] domain [example.com] type [NS2] value [b.dns.noxa.de] created
< CREATE . example.com A 127.0.0.1
> 270 host [.] domain [example.com] type [A] value [127.0.0.1] created
< CREATE www example.com CNAME example.com
> 270 host [www] domain [example.com] type [CNAME] value [example.com] created
< CREATE . example.com MX1 a.mx.noxa.de 7200
> 270 host [.] domain [example.com] type [MX1] value [a.mx.noxa.de] created
< CREATE . example.com MX3 c.mx.noxa.de 7200
> 270 host [.] domain [example.com] type [MX3] value [c.mx.noxa.de] created
< CREATE . example.com TXT1 v=spf1#a#mx#-all
> 270 host [.] domain [example.com] type [TXT1] value [v=spf1 a mx -all] created
< LIST %example.com
> 300-entries for [ines] matching (%example.com) type (%)
> 300-[example.com] {example.com}
> 300- * [A] [127.0.0.1] (14400) (1)
> 300- * [MX] [a.mx.noxa.de] (7200) (1)
> 300- * [MX] [c.mx.noxa.de] (7200) (3)
> 300- * [NS] [a.dns.noxa.de] (14400) (1)
> 300- * [NS] [b.dns.noxa.de] (14400) (2)
> 300- * [SOA] [a.dns.noxa.de hostmaster.example.com 1153684315 14400 1800 2419200 1800] (14400) (0)
> 300- * [TXT] [v=spf1 a mx -all] (14400) (1)
> 300-[www.example.com] {example.com}
> 300- * [CNAME] [example.com] (14400) (0)
> 300 .
Serial-Schema einer Zone von Unixtimestamp auf
|