Mi-a luat cumva serverul DNS pentru a oferi funcții similare cu dyndns.com. dar aproape imediat a devenit clar că serverul ca atare în acces liber nu poate fi găsit. După ce am rătăcit în jurul rețelei, am găsit câteva soluții ca asta. dar nu mi-a plăcut o brutalitate de abordare și de complexitate a implementării.
Bind9 rulează pe server. și pentru el, desigur, există o soluție care vă permite să actualizați dinamic înregistrări de domeniu de la clienți la distanță. Cu toate acestea, se reduce la utilizarea metodei avansate nsupdate, care nu este suportată de un echipament de rețea de dimensiuni medii, nu de nivel industrial, ci mai ales de router-ul de acasă. Prin urmare, cea mai bună soluție, în opinia mea, era să am un server compatibil cu ddclient. care este aproape în toate dispozitivele de rețea existente.
Unele cuvinte introductive
Așadar, uitându-se la pată. Cayo a crezut că punerea în aplicare a unei astfel de Pribluda este o sarcină foarte simplă. Iată câteva reflecții care au condus la soluția descrisă în articol:
Ideea mai întâi. Schimbarea înregistrărilor direct ar fi relativ dificilă și nesigură, este mult mai bine să folosiți nsupdate pentru acest lucru. care în esență ia un fișier de intrare de modificări și aplică secvențial comenzile disponibile în el. Nu este nevoie să distorsionați legătura însăși. pentru ca schimbările să aibă efect.
Ideea este a patra. Pentru a administra utilizatorii în această implementare, sa decis să scrieți un mic script care generează automat chei și actualizează, de asemenea, baza de date a utilizatorilor și o listă de chei de legare.
Zonele actualizate dinamic în bind9
Înainte de a trece la descrierea instalării și a configurației serviciului, aș dori să vă spun cum funcționează nsupdate și bind.
Crearea cheilor
Deci, primul lucru pe care trebuie să-l facem este să setăm zonele pe care dorim să le actualizăm în mod dinamic. Utilitarul nsupdate interacționează cu legarea folosind cheile, deci acum trebuie să generăm cheia astfel:
Aici am specificat tipul cheii (hmac-md5), lungimea (512, puteți utiliza în mod normal orice pentru acest tip de cheie de la 1 la 512) și utilizatorul (ddserver).
După finalizare, vom avea câteva chei: publice și private, am următoarele:
Apoi, avem nevoie de hash (tot ce este după numărul 157 din fișierul .key) din cheia publică pentru ao adăuga la configurația serverului.
Creați fișierul /etc/bind/ddserver.conf cu următorul conținut:
Apoi, includeți-l în /etc/bind/named.conf.local (Cayo a adăugat o linie înainte de a descrie zonele de domeniu):
Acum tweak bind9:
Configurați accesul
Aproape totul, cu toate acestea, nu am dat încă permisiunea de a actualiza dinamic anumite zone, așa că facem următoarele: găsim descrierea zonei solicitate și adăugăm permisiunea de ao actualiza la cheia corespunzătoare:
Acest lucru, în general, va fi de ajuns, dar am oferit prea multe oportunități clientului cu cheia ddserver. Puteți stabili mai exact ce actualizări sunt permise să faceți, de exemplu adăugând următoarea directivă în locul blocului de actualizare a permisiunilor:
Astfel, am permis actualizarea numai a înregistrării A pentru subdomeniul kayo-home.illumium.org.
Pentru a evita aglomerarea inutilă a articolului, Cayo nu are în vedere reîmprospătarea zonelor inverse, însă esența este aproape aceeași.
Actualizarea zonei de testare
Adăugăm o intrare a tipului A kayo-home.illumium.org cu IP 1.2.3.4 și TTL 60 secunde. Durata de viață TTL ar trebui specificată, cu cât este mai lungă, cu atât mai mult va rămâne înregistrarea în cache-urile serverelor DNS. De exemplu, dacă specificați 600 (10 minute), înregistrarea timp de 10 minute nu va mai fi solicitată și dacă în acest timp IP-ul este actualizat, acesta va fi cunoscut numai după intervalul specificat.
Acum, încercați să actualizați (puteți face acest lucru din orice gazdă unde există nsupdate și cheia privată creată mai devreme este disponibilă):
Ne uităm la syslog de pe server la momentul executării comenzii, ar trebui să apară următoarele intrări:
În final, nsupdate nu trebuie să tipărească nimic la stdout și stderr. Dacă nu definiți corect privilegii, utilitarul va spune că actualizarea a eșuat. Deci, acum, pentru a vă asigura că nu putem actualiza alte înregistrări în acest fel, încercați să schimbați numele în update.ns și să suneți din nou nsupdate, dacă totul este configurat, după cum am descris de mine, vom obține următoarele:
Și în syslog de pe server bind va spune acest lucru:
Serverul DynDNS compatibil cu dyndns2
Cayo a dezvoltat ddserver ca backend FastCGI. Software-ul este scris în C și rulează ca un daemon sub un utilizator neprivilat, care are permisiunea de a găsi cheile de utilizator și de a rula nsupdate. Proiectul a fost postat pe SF.Net. Există și pachete disponibile pentru Debian. În general, am vrut-o mai ușor, sa dovedit ca întotdeauna ^
Scurtă descriere a protocolului
Numele de domeniu trebuie să fie trimise în format complet, dar fără un punct final. Dacă există mai multe nume de domenii, ele trebuie separate prin virgule.
Gestionarea utilizatorilor
Pentru a administra utilizatorii, scriptul ddserver-admin a fost scris, făcând următoarele:
- Lista de utilizatori ddserver-admin - afișează o listă a utilizatorilor existenți
- ddserver-admin user-add
- adaugă un utilizator nou sau actualizează un utilizator existent. - ddserver-admin user-del
- elimină un utilizator existent
Când adăugați și actualizați un utilizator, va trebui să introduceți o parolă pentru acces prin WEB. Scriptul generează automat cheile necesare și actualizează fișierul htpasswd cu utilitarul corespunzător din apache. Numele de utilizator va fi numele cheii pentru legare.
În directorul / etc / ddserver vom avea două fișiere:
Controlul accesului
Pentru a nu duplica documentația și a nu scrie prea mult aici, voi da doar câteva exemple de setare a zonelor actualizate automat:
De asemenea, este important să țineți cont de valorile TTL din fișierele de descriere a zonei pentru a reduce timpul pentru găsirea intrărilor dinamice în cache-urile de nume de servere.
Configurarea actualizării prin WEB în Nginx
Din moment ce Cayo utilizează Nginx, vă va spune cum să configurați serviciul ca un backend FastCGI la acesta. Să mergem imediat la configurația de exemplu, care este destul de simplă și aproape că nu necesită o explicație:
Starea proiectului
În timp ce proiectul se află în stadiul de testare activă, astfel încât pot apărea probleme.
Actualmente acceptate:
- Actualizați o înregistrare
- actualizarea mai multor nume simultan (cu același IP)
- actualizați înregistrările MX
- actualizarea automată a backlink-urilor