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Ă)