Puncte:0

Înregistrați în mod dinamic nume de gazdă pe serverul DNS (prin DHCP)

drapel nl

Vreau să înființez o rețea mică, în care un server DHCP central închiriază adrese IPv4 clienților. Clienții au deja setate numele de gazdă și ar trebui să le facă publicitate serverului DNS central, astfel încât atât serverul, cât și toți clienții să se poată găsi unul pe altul cu acel nume de gazdă. Serverul DNS va rezolva adresele LAN ale domeniului „my.domain” și va indica un server DNS extern pentru toate celelalte domenii (internet).

În configurația mea actuală, am două casete: 10.0.100.1 este serverul (Ubuntu 22.04), unde sunt găzduite DHCP și DNS. 10.0.100.2 este configurat ca client (Fedora 35) (DHCP trimite acest IP fix în timpul fazei mele de testare).

Acesta este clientul (10.0.100.2) configurație:

$ cat /etc/hostname
clienthost

$ cat /etc/systemd/network/20-wired.network
[Meci]
Nume=enp0s31f6

[Reţea]
LinkLocalAddressing=ipv4
DHCP=ipv4
SendHostname=true

[DHCPv4]
UseDomains=true

$ resolvectl
Global
    Protocoale: LLMNR=resolve -mDNS -DNSoverTLS DNSSEC=nu/neacceptat
modul rezoluție.conf: stub

Link 2 (enp0s31f6)
  Domenii curente: DNS LLMNR/IPv4
    Protocoale: +DefaultRoute +LLMNR -mDNS -DNSoverTLS DNSSEC=nu/neacceptat
Server DNS curent: 10.0.100.1
    Servere DNS: 10.0.100.1
    Domeniu DNS: my.domain

IP-ul 10.0.100.2 este corect atribuit. Clientul poate face ping la server (10.0.100.1) cu IP-ul său, numele gazdă sau FQDN. De asemenea, pot vedea în tcpdump că numele de gazdă este trimis către serverul DHCP (opțiunea 81 Client FQDN). Până acum, bine.

Configurația serverului DHCP ar trebui să fie schimbată odată ce setarea inițială funcționează, pentru a distribui IP-uri dintr-un interval. Deci, în viitor, nu voi avea adrese IP alocate fixe pentru clienți. Voi sări peste afișarea fișierelor cheie rndc aici. Sunt identice și plasate în locațiile configurate. Serverul este configurat după cum urmează:

$ cat /etc/hostname
serverhost

$ cat /etc/systemd/network/20-wired.network
[Meci]
Nume=enp0s31f6

[Reţea]
LinkLocalAddressing=ipv4
Adresa=10.0.100.1/16
Gateway=10.0.1.1
DNS=10.0.100.1

[DHCPv4]
UseDomains=domeniul.meu

$ cat /etc/default/isc-dhcp-server
INTERFACESv4="enp0s31f6"

$ cat /etc/dhcp/dhcpd.conf
includ „/etc/dhcp/ddns-keys/my-domain.key”;
default-lease-time 7200;
max-lease-time 28800;
ddns-actualizări pe;
ddns-update-style standard;
ddns-domainname "my.domain.";
permit-clienti-necunoscuti;
autoritar;
zona mea.domeniu. {
    primar 10.0.100.1;
    cheie ddns-mydomain;
}

zona 10.0.in-addr.arpa. {
    primar 10.0.100.1;
    cheie ddns-mydomain;
}

# servi doar cutia client unic în mod specific în timpul fazei de testare
subrețea 10.0.0.0 mască de rețea 255.255.0.0 {}
gazdă testhost {
  hardware ethernet 00:00:00:00:00:00;
  cu adresă fixă ​​10.0.100.2;
  opțiunea subnet-mask 255.255.0.0;
  routere opționale 10.0.1.1;
  opțiune domain-name-servers 10.0.100.1;
  opțiunea nume-domeniu „domeniul.meu”;
  nume de fișier „pxelinux.0”;
}

$ cat /etc/bind/named.conf
includ „/etc/bind/keys/my.domain.key”;
includ „/etc/bind/named.conf.options”;
includ „/etc/bind/named.conf.local”;
includ „/etc/bind/named.conf.default-zones”;

$ cat /etc/bind/named.conf.options
acl „intern” {
    127.0.0.1;
    10.0.0.0/16;
};

Opțiuni {
    directorul „/var/cache/bind”;

    recursivitate da;
    allow-recursion { intern; };
    listen-on { 10.0.100.1; };
    permit-transfer { niciunul; };

    allow-query { intern; };
    allow-query-cache { intern; };

    expeditori {
        1.1.1.1;
    };

    listen-on-v6 { orice; };
};

$ cat /etc/bind/named.conf.local
zona „domeniul.meu” {
    tip master;
    fișierul „/etc/bind/zones/db.my.domain”;
    update-policy { acordă ddns-mydomain name my.domain ORICE; };
    permit-transfer { niciunul; };
};

zona "0.10.in-addr.arpa" {
    tip master;
    fișierul „/etc/bind/zones/db.0.10”;
    update-policy { acordă ddns-mydomain name my.domain ORICE; };
    permit-transfer { niciunul; };
};

$ cat /etc/bind/zones/db.my.domain
86400 USD TTL
@ ÎN SOA serverhost.my.domain. admin.domeniul.meu. (
                  3; Serial
              28800; Reîmprospăta
               3600; Reîncercați
              28800; Expira
              43200); Cache negativ TTL
;

; servere de nume - înregistrări NS
    ÎN NS serverhost.my.domain.

; A înregistrează
serverhost.my.domain. ÎN A 10.0.100.1

$ cat /etc/bind/zones/db.10.0
86400 USD TTL
@ ÎN SOA serverhost.my.domain. admin.domeniul.meu. (
                  3; Serial
              28800; Reîmprospăta
               3600; Reîncercați
              28800; Expira
              43200); Cache negativ TTL
;

; servere de nume - înregistrări NS
    ÎN NS serverhost.my.domain.

; înregistrări PTR
100.1 IN PTR serverhost.my.domain. ; 10.0.100.1

Cred că ar trebui să fie toată configurația relevantă. Vă rog să-mi spuneți dacă aveți nevoie de altceva.

Problema aici este că, fiind pe 10.0.100.1 (serverhost) Pot doar să pun ping clienthost prin IP-ul său 10.0.100.2 dar nici după numele său de gazdă sau FQDN.Din păcate, nu am o idee bună de unde să încep depanarea pentru a vedea dacă numele de gazdă a clientului este trimis la serverul DNS și înregistrat sau nu.

Poate o notă secundară potențial fără legătură: rularea comenzii dhcp-list-lease pe server-gazdă returnează o listă goală. Jurnalele arată un DHCPACK pentru 10.0.100.2 dar nu apare niciodată în această ieșire specială (ceea ce ar fi fost interesant, deoarece există o coloană „nume de gazdă”).

Edit: Se pare că cheia ar putea fi importantă până la urmă. Inițial am creat manual o cheie cu rndc-confgen -a -b 512, apoi a copiat acel fișier în /etc/dhcp/rndc-keys/. În prezent, am generat o cheie nouă cu ddns-confgen -a -b 512 și a pus cheia ambele înăuntru /etc/bind/keys/my.domain.key si in /etc/dhcp/ddns-keys/my.domain.key (și a actualizat instrucțiunile include în fișierele de configurare respective). Mai am cheia rndc sub /etc/bind/rndc.key care este preluat și de bind9 după cum arată jurnalele.

Edit 2: Funcționează manual nactualizare arata asa:

$ nsupdate -D -k /etc/bind/keys/my.domain.key
> update add clienthost.my.domain 7200 A 10.0.100.2
> trimite
[...]
Răspuns de la interogarea de actualizare:
;; ->>HEADER<<- opcode: UPDATE, stare: REFUSED, id: 39064
;; steaguri: qr; ZONA: 1, PRECERERE: 0, ACTUALIZARE: 0, SUPLIMENTARE: 1
;; SECȚIUNEA ZONĂ:
;domeniul.meu. ÎN SOA

;; PSEUDOSECȚIE TSIG:
ddns-domeniul meu. 0 ORICE TSIG hmac-sha256. 1652972427 300 32 4e/XXXXXXXXXXXXXXXXXXXXXXXX/bmg= 39064 NU EROARE 0

Și în timpul actualizării manuale, se afișează jurnalele

client @0x7f61d8004cb8 10.0.100.1#39791/key ddns-mydomain: zona de actualizare „my.domain/IN”: actualizare eșuată: respins de actualizare securizată (REFUSĂ)
Nikita Kipriyanov avatar
drapel za
Aveți jurnale de actualizare DNS? Activați-l (consultați [aici](https://serverfault.com/questions/1100116/how-to-log-verbose-details-about-dns-update-queries-in-bind/1100228#1100228)). De asemenea, încercați să adăugați manual actualizări DNS prin „nsupdate” cu cheia dvs. Apropo, ce este `rndc.key`? Ar trebui să creați o cheie dedicată pentru actualizări dinamice, nu utilizați cheia automată care este folosită pentru utilitarul `rndc`.
a.ilchinger avatar
drapel nl
Actualizarea manuală prin `nsupdate` returnează codul de stare REFUSED, dar rezultatul de depanare spune „verificarea tsig reușită”.
Nikita Kipriyanov avatar
drapel za
Ce este în jurnale în același moment? Și, acum, când vedeți o problemă, începeți cu depanarea acesteia. Voi vorbi din nou, nu te baza pe acea cheie, generează una dedicată. Când `nsupdate` începe să funcționeze conform așteptărilor cu acea cheie, deplasați-vă mai departe și configurați-o în `dhcpd`.
drapel mx
opțiunea de actualizare permisă nu pare corectă. În prezent, permite doar cheile rndc. Puteți adăuga o listă de potrivire a adreselor (cum ar fi „allow-update { 10.0.0.0/16}”) sau puteți utiliza o politică de actualizare.
a.ilchinger avatar
drapel nl
Am trecut de la subcomanda `allow-update` la subcomanda `update-policy` și am făcut ca înregistrarea să funcționeze. Am folosit și o cheie ddns nouă, dedicată. Acum sunt un pic pierdut. Pagina de manual pentru nsupdate spune că cheia dată pentru opțiunile -k trebuie să arate ca `K{name}.+157.+{random}.private`, care, din experiența mea, arată ca o cheie dnssec, ceea ce eu am nu folosesc deloc.Cheia pe care am generat-o cu `ddns-confgen` și am folosit-o are un format diferit. Nu există nicio indicație în jurnalele că ar fi necesar un alt format de cheie.
Nikita Kipriyanov avatar
drapel za
Dacă doriți să permiteți cheii să actualizeze orice înregistrare din zonă, utilizați fie `update-policy { grant mykey zonesub any; }` sau `allow-update { cheie cheia mea; }`; acelea functioneaza exact la fel. Noile versiuni ale BIND oferă un „tsig-keygen” dedicat, folosiți-l dacă aveți. În caz contrar, generați o cheie cu `dnssec-keygen -a HMAC-SHA256 -b 256 -n HOST mykey`. Ambele fișiere vor conține același secret, doar formatați-l corect, cum ar fi `key "mykey" { algorithm hmac-sha256; secret ; };`. O cheie formatată astfel este inclusă în ambele servere DNS și DHCP: `include "/mykey.key"`.
Nikita Kipriyanov avatar
drapel za
... și același fișier cheie cu acest format este folosit cu nsupdate: `nsupdate -k /mykey.key`.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.