7 modulis · 7.1
DNS į Jūsų VPS ir atvirkštinis DNS
7 modulis: Domenas, žiniatinklio serveris ir https · Skaitymo laikas: 10 min.
Mokymosi tikslas: Po šios pamokos galėsite A ir AAAA įrašais nukreipti domeną ar subdomeną į savo VPS, teisingai nustatyti serverio atvirkštinį DNS ir patikrinti, ar vardas ir adresas sutampa abiem kryptimis.
Pagrindinės sąvokos: A įrašas, AAAA įrašas, TTL, atskiras subdomenas kiekvienai paslaugai, www, serverio pagrindinio kompiuterio vardas (hostname), PTR, atvirkštinis DNS (reverse DNS), patvirtintas atvirkštinis DNS (forward-confirmed reverse DNS, FCrDNS), CAA, pamirštas IPv6
Nuo IP adreso iki vardo
Iki šiol prie serverio jungėtės naudodami jo IP adresą, pavyzdžiui, ssh anna@192.0.2.10. Svetainei, sertifikatui (pamoka 7.3) ir 9 modulio paslaugoms Jums reikia vardo. Šį susiejimą atliekate savo domeno DNS, pas tą, kuris tvarko Jūsų DNS: registratorių, prieglobos įmonę arba DNS paslaugą. Pats VPS su tuo neturi nieko bendra: Jūsų serveris „nežino“, kokie vardai į jį nukreipti.
DNS pagrindus išmokote DNS kurse. VPS daugiausia reikės dviejų įrašų:
| Įrašas | Kas | Pavyzdys |
|---|---|---|
| A | vardas į IPv4 adresą | web1.example.com. 3600 IN A 192.0.2.10 |
| AAAA | vardas į IPv6 adresą | web1.example.com. 3600 IN AAAA 2001:db8::10 |
Jūsų VPS paprastai turi nuolatinį IPv4 ir IPv6 adresą. Tuomet nustatykite abu įrašus. Lankytojai, turintys IPv6 (Nyderlanduose tai didelė dalis namų interneto ir mobiliųjų tinklų), naudos IPv6, kiti IPv4.
Kokius vardus sukurti?
Įprasta struktūra VPS su svetaine ir keliomis paslaugomis:
web1.example.com. A 192.0.2.10 ; pats serveris (serverio vardas, PTR)
web1.example.com. AAAA 2001:db8::10
example.com. A 192.0.2.10 ; svetainė
example.com. AAAA 2001:db8::10
www.example.com. CNAME example.com.
status.example.com. CNAME web1.example.com. ; Uptime Kuma (9.4 pamoka)
kluis.example.com. CNAME web1.example.com. ; Vaultwarden (9.4 pamoka)Čia slypi keli pasirinkimai:
- Serveris turi savo vardą (
web1), atskirą nuo svetainės. Šį vardą naudojate SSH, atvirkštiniam DNS ir kaip sistemos pagrindinio kompiuterio vardą. Jei vėliau svetainė persikels į kitą serverį,web1ir toliau bus teisingas. - Atskiras subdomenas kiekvienai paslaugai. Uptime Kuma ir Vaultwarden gauna po savo vardą. Tai daug paprasčiau (ir saugiau), nei kabinti paslaugas po keliu, pavyzdžiui,
example.com/kluis: kiekviena paslauga gauna savo sertifikatą, slapukai nesusimaišo, o vėliau paslaugą galite perkelti į kitą serverį pakeisdami vieną įrašą. - CNAME subdomenams. CNAME į
web1reiškia: pasikeitus serverio IP adresui, pakeičiate tikweb1įrašus. Ant pagrindinio domeno vardo (example.com) CNAME būti negali: ten nustatote A ir AAAA.
Pačios sistemos pagrindinio kompiuterio vardą nustatote serveryje:
anna@web1:~$ sudo hostnamectl set-hostname web1.example.com
anna@web1:~$ hostname -f
web1.example.comTaip pat patikrinkite, ar /etc/hosts nėra seno vardo. Teisingas pagrindinio kompiuterio vardas ypač svarbus, jei serveris kada nors siųs el. laiškus.
TTL: kaip greitai pakeitimas pasiekia visus
TTL (time to live) yra sekundžių skaičius, kiek laiko resolveriai gali įsiminti atsakymą. Esant 3600, gali praeiti iki valandos, kol visi pamatys naują adresą. Jei ketinate perkelti svetainę į savo VPS, likus dienai nustatykite TTL į 300 (penkias minutes), palaukite bent senojo TTL laiką, pakeiskite adresą, o po to vėl padidinkite TTL. Tai lygiai tas pats veiksmų planas kaip DNS kurso pamokoje 6.3.
Su dig (DNS kurso pamoka 8.2) patikrinkite, ką mato likęs internetas, ir klauskite viešojo resolverio, o ne savo kompiuterio:
anna@laptop:~$ dig +short A example.com @1.1.1.1
192.0.2.10
anna@laptop:~$ dig +short AAAA example.com @1.1.1.1
2001:db8::10Windows sistemoje: Resolve-DnsName example.com -Type AAAA -Server 1.1.1.1.
Spąstai: AAAA įrašas be veikiančio IPv6
Jei nustatote AAAA įrašą, paslauga turi iš tikrųjų būti pasiekiama per IPv6. Dažna klaida: įrašas yra, bet žiniatinklio serveris klausosi tik IPv4, arba užkarda nepraleidžia IPv6 (pamoka 5.2), arba IPv6 VPS nėra sukonfigūruotas. Tada lankytojai su IPv6 mato lėtą arba neveikiančią svetainę, nors Jums „viskas veikia“, nes namuose galbūt turite tik IPv4. Let's Encrypt taip pat pirmiausia bando IPv6, jei yra AAAA įrašas (pamoka 7.3). Jei per IPv6 Jūsų serveris atsako kitaip nei per IPv4, sertifikato užklausa nepavyks.
Todėl IPv6 tikrinkite atskirai, iš kito kompiuterio su IPv6: curl -6 -I https://example.com. Jei patys neturite IPv6, naudokite internetinį testą, pavyzdžiui, internet.nl.
Atvirkštinis DNS: nuo adreso atgal iki vardo
Atvirkštinis DNS susieja IP adresą atgal su vardu, naudojant PTR įrašą (DNS kurso pamoka 4.6). Šis įrašas yra ne Jūsų domeno zonoje, o IP adreso zonoje, kuri priklauso adresą valdančiai šaliai: Jūsų VPS teikėjui. Todėl PTR nustatote teikėjo valdymo skydelyje, o ne savo DNS.
Kodėl verta tai padaryti?
- El. paštas. Gaunantys pašto serveriai atmeta arba nepasitiki laiškais iš adreso be tinkamo atvirkštinio DNS. Jei Jūsų VPS siunčia laiškus (net ir tik pranešimą iš formos), tai privaloma (žr. kursą „Tvarkingas el. paštas“, pamoka 5.1).
- Atpažįstamumas. Žurnaluose ir traceroute rezultatuose kiti mato
web1.example.com, o ne bendrinį teikėjo vardą. - Tvarkingumas. Kai kurios paslaugos ir šlamšto filtrai skiria baudos taškų adresams su bendriniu arba trūkstamu PTR.
Taisyklė vadinama forward-confirmed reverse DNS (FCrDNS): adresas PTR įrašu nukreipia į vardą, o tas vardas A arba AAAA įrašu vėl nukreipia į tą patį adresą. Todėl pirmiausia sukurkite A ir AAAA įrašus, tada užsisakykite PTR, tiek IPv4, tiek IPv6.
anna@laptop:~$ dig +short -x 192.0.2.10
web1.example.com.
anna@laptop:~$ dig +short A web1.example.com
192.0.2.10
anna@laptop:~$ dig +short -x 2001:db8::10
web1.example.com.
anna@laptop:~$ dig +short AAAA web1.example.com
2001:db8::10Jei visais keturiais atvejais gaunate laukiamą atsakymą, abi kryptys sutampa.
CAA: kas gali išduoti sertifikatus?
CAA įrašu (DNS kurso pamoka 5.2) nurodote, kurie sertifikatų išdavėjai gali išduoti sertifikatus Jūsų domenui. Jei naudojate tik Let's Encrypt:
example.com. 3600 IN CAA 0 issue "letsencrypt.org"Tai neprivaloma, bet tai tvarkingas papildomas sluoksnis. Atkreipkite dėmesį: jei jau turite CAA įrašą su kitu išdavėju, Let's Encrypt Jūsų užklausą atmes. Todėl pirmiausia patikrinkite su dig CAA example.com.
Praktikoje: atvirkštinis DNS VPS lange
WebOké atvirkštinį DNS nustatote VPS lange, skirtuke „ISO ir rDNS“. Jei Jūsų domeno DNS taip pat yra WebOké, skydelis gali iš karto sukurti A ir AAAA įrašus už Jus; jei DNS yra kitur, pirmiausia patys sukurkite tuos įrašus, o tada įveskite visą vardą. Kitų teikėjų klientų skydelyje tai vadinama „Reverse DNS“, „rDNS“ arba „PTR“; kai kurie reikalauja tai užsakyti per užklausą (ticket). Visur veikia vienodai: pirmiausia vardas į adresą, tada adresas į vardą.
Santrauka
- Vardą su savo VPS susiejate A įrašu (IPv4) ir AAAA įrašu (IPv6) savo domeno DNS.
- Suteikite serveriui savo vardą (
web1.example.com), o kiekvienai paslaugai atskirą subdomeną; CNAME įrašai į serverio vardą palengvina perkėlimą. - Prieš perkėlimą sumažinkite TTL ir tikrinkite su
digper viešąjį resolverį. - Nenustatykite AAAA įrašo, jei paslauga iš tikrųjų neveikia per IPv6; IPv6 tikrinkite atskirai.
- PTR nustatote pas savo VPS teikėją; abi kryptys turi sutapti (FCrDNS), tiek IPv4, tiek IPv6.
Testas (quiz)
Užduotis
Užduotis Z7.1: Jūsų serverio A, AAAA ir PTR. Suteikite serveriui savo vardą (pavyzdžiui, web1.<jouwdomein>), sukurkite A ir AAAA įrašus ir nustatykite atvirkštinį DNS pas savo teikėją. Užduotyje įveskite serverio vardą, IPv4 ir IPv6 adresus bei vardą, kurį gavote su dig -x abiem adresams. Programa realiuoju laiku užklausia A ir AAAA įrašų bei abiejų adresų PTR ir patikrina, ar viskas sutampa abiem kryptimis. Jei Jūsų serveris neturi IPv6, tikrinamas tik IPv4 ir apie tai pranešama oranžine spalva.
Skaitykite daugiau
- El. laiškų siuntimas iš Jūsų VPS ir reverse DNS nustatymas
- IPv6 pas WebOké
- Nemokamas DNS kursas 3.1: A ir AAAA įrašai
- Nemokamas DNS kursas 4.6: Reverse DNS (PTR): nuo numerio atgal prie vardo
- Nemokamas DNS kursas 5.2: CAA: kam leidžiama išduoti sertifikatus?
- Nemokamas DNS kursas 8.2: DNS užklausos su dig ir nslookup
