zapasowy dns dla mailinabox

nsd

Mail-in-a-Box jest jednym z tych darmowych rozwiązań ,które jakoś się trzyma z dala od dziwnych zmian i zewnętrznych ingerencji potrafiących wywalić do góry nogami taki projekt. Zmian generowanych właściwie przez samych użytkowników pod przykrywką ulepszeń. Właśnie te małe nieświadome posunięcia są groźne ponieważ często są nieprzemyślane lub powiedział bym zbędne ponieważ są tworzone zazwyczaj bez dokładnej analizy dlaczego dany projekt powstał i jakie ma zastosowanie. Idąc tropem zmian przy tego typu projektach jak Mail-in-a-Box wspominałem już na blogu o kilku ciekawych rozwiązaniach jak np: Jak dodać kolejne konto admin do nextcloud w mailinabox czy Instalacja Enigma Plugin Roundcube w mailinabox. Jest tego typu poradników znacznie więcej lecz uważam że wszystko powinno być wdrażane rozsądnie podpierając się przewodnią myślą jaką jest prywatność i bezpieczeństwo. Nie bez przyczyny wspomniałem o bezpieczeństwie i prywatności ponieważ dzisiejszym tematem wpisu na blogu jest zapasowy dns. Wiele firm posiada taką usługę ,która albo jest płatna albo darmowa. Niemniej uważam że poczta i dns powinna być zamknięta we własnych zasobach do których mamy dostęp o ile jest to oczywiście możliwe / osiągalne i powinniśmy posiadać ewentualny wpływ na ich działanie kierując się zasadami maksymalnego bezpieczeństwa w odniesieniu do usług i danych. Coś na zasadzie licz na siebie! Mail-in-a-Box używa do zarządzania dns rozwiązania o nazwie NSD. Projekt bardzo ciekawy ale często pomijany. Z ciekawostek powiem że NSD wykorzystuję ale jako oddzielny serwer DNS z pominięciem Mail-in-a-Box ale w połączeniu z panelem keyhelp! Jak znajdę czas to umieszczę kolejny wpis na blogu by opisać moją konfigurację ale dziś postanowiłem właśnie opisać jak uruchomić własny zapasowy serwer oparty o nsd dla Mail-in-a-Box. Więc zaczynamy! Podstawowym elementem jest serwer poczty oparty oczywiście o Mail-in-a-Box ,który stanowi główny serwer dns czyli tz master i oczywiście serwer poczty , www o ile ten ostatni będzie stanowił zaplecze dla stron statycznych opartych o html. Jako że temat dotyczy dns pominę pozostałe usługi i skupię się tylko na dns. Tu warto wtrącić że rozwiązanie NSD jest naprawdę proste i nie wymaga jakiejś wielkiej wiedzy! Ktoś kto czyta ten blog i poradził sobie z instalacją samego Mail-in-a-Box na pewno poradzi sobie z instalacją zapasowego serwera dns. Do uruchomienia zapasowego serwera dns potrzebujemy małego serwera typu VPS o parametrach 1 rdzeń, 512MB pamięci RAM i powiedzmy 10GB powierzchni dysku. Warto zaznaczyć że przy wyborze serwera staraj się iść w ofertę opartą o KVM ponieważ takie rozwiązanie jest znacznie stabilniejsze/bezpieczniejsze jak oparte o LXC – nie mam czasu tego rozszerzać! Oczywiście nic nie mam do LXC bo sam używam w wielu projektach lecz w tym konkretnym przypadku mówimy o DNS dlatego proponuje skorzystać z ofert serwerów opartych o KVM. Instalujemy na tym małym serwerze system Ubuntu 22 ,który na dziś jest również używany w samym Mail-in-a-Box. Jeżeli mamy gotowy serwer pamiętaj zabezpieczyć go tak by używając SSH łączyć się z nim na podstawie klucza nie hasła! Podobnie jak zrobiłeś to w Mail-in-a-Box! Przyjmujemy jako przykład ,że nasze dwa serwery ,które posiadamy mają przydzielone adresy ip jak poniżej:

mailinabox - 10.10.10.10
zapasowy dns - 10.11.11.11

Przykładowa domena to:

twojadomena.pl

W zakładce Custom DNS w naszym mailinabox dodajemy adres ip dla subdomeny stanowiący element naszego zapasowego serwera DNS.

ns2.box.twojadomena.pl    IN    A    10.11.11.11

Dla obu adresów IP należy ustawić tz Glue Records w panelu usługodawcy u którego kupiliście domenę internetową. Pamiętaj! zawsze zanim kupisz domenę wybierz odpowiedniego usługodawcę ,który posiada właśnie takie możliwości, w przeciwnym wypadku informuję że właśnie trzymasz rękę w nocniku.

ns1.box.twojadomena.pl - 10.10.10.10
ns2.box.twojadomena.pl - 10.11.11.11

Nie sugerujcie się że ns2.box.twojadomena.pl jest już wykorzystany przez sam Mail-in-a-Box ponieważ właśnie opcja Custom DNS to zmienia! i tym samym pozwala na użycie adresu rozpoczynającego się od ns2. Trochę dziwnie np ns3 by wyglądało pomijając ns2. Prawda?! Tym właśnie sposobem mamy przygotowany nasz serwer Mail-in-a-Box do komunikacji z naszym zapasowym serwerem DNS.  Logujemy się do naszego zapasowego serwera dns za pomocą SSH i instalujemy niezbędne elementy:

apt install -y nsd dnsutils lnav

jeżeli pojawi się błąd pobierz ewentualne dostępne aktualizacje:

apt update && apt dist-upgrade -y

Po instalacji przechodzimy do pliku konfiguracyjnego wykorzystując nano:

nano /etc/nsd/nsd.conf

usuwamy wszystko co tam znajdziemy i uzupełniamy konfigurację o naszą domenę i adresy IP:

server:
ip-address: 10.11.11.11 #adres IP zapasowego serwera DNS
hide-version: yes
verbosity: 2
server-count: 1

zone:
name: twojadomen.pl
zonefile: twojadomen.pl.zone
allow-notify: 10.10.10.10 NOKEY # address IP Mail-in-a-Box
request-xfr: 10.10.10.10 NOKEY # address IP Mail-in-a-Box

jeżeli masz więcej domen w Mail-in-a-Box dodajesz kolejno do pliku konfiguracyjnego następne odnośniki zone:

zone:
name: twojadomen.pl
zonefile: twojadomen.pl.zone
allow-notify: 10.10.10.10 NOKEY # address IP Mail-in-a-Box
request-xfr: 10.10.10.10 NOKEY # address IP Mail-in-a-Box

zone:
name: twojadomen2.pl
zonefile: twojadomen2.pl.zone
allow-notify: 10.10.10.10 NOKEY # address IP Mail-in-a-Box
request-xfr: 10.10.10.10 NOKEY # address IP Mail-in-a-Box

zone:
name: twojadomen3.pl
zonefile: twojadomen3.pl.zone
allow-notify: 10.10.10.10 NOKEY # address IP Mail-in-a-Box
request-xfr: 10.10.10.10 NOKEY # address IP Mail-in-a-Box

Gdy plik konfiguracyjny jest gotowy wykonujemy dwa ostatnie polecenia:

nsd-control reconfig

systemctl restart nsd

To ostatnie polecenie:

systemctl restart nsd

praktycznie nie jest konieczne ponieważ po wydaniu pierwszego polecenie serwer jest automatycznie konfigurowany ale z czystej przezorności restart NSD zweryfikuje dodatkowo czy coś jest nie halo. Zaznaczam że nie jest to konieczne!

Jeżeli dodasz kolejną nową domenę do Mail-in-a-Box to pamiętaj uzupełnić plik konfiguracyjny w zapasowym serwerze DNS i wykonać ostatnie dwa polecenia. W przypadku problemów z synchronizacją warto otworzyć tymczasowo port 53 / tcp na serwerze zapasowym. Pisząc tymczasowo znaczy by wyeliminować ewentualne problemy natury konfiguracyjnej a następnie wdrożyć jakiś firewall.

sudo ufw allow from 10.10.10.10 proto tcp to any port 53 (tylko dla adresu IP serwera master)

sudo ufw allow 53/udp

lub sprawdzić logi wydając polecenie:

lnav /var/log/syslog

Z panelu logów wychodzimy używając kombinacji dwóch klawiszy:

ctrl + c

 

Na koniec wspomnę że warto zainteresować się tematem na moim blogu: instalujemy tz firewall oparty o UFW na systemie ubuntu 22.04 ,który pozwoli zabezpieczyć zapasowy serwer DNS pozostawiając otwarte tylko te porty których potrzebujemy. W tym konkretnym przypadku:

53 / udp (zapytania z internetu)
53 / tcp (dostęp tylko dla adresu IP serwera master)
22 / tcp (ssh o ile nie został ustawiony inny port)
443 / tcp (niezbędny do aktualizacji serwera za pośrednictwem web z ssl)

Warto jeszcze w naszym zapasowym serwerze ustawić opcję by nasz serwer DNS wstawał samodzielnie po ewentualnym restarcie:

systemctl enable nsd

systemctl restart nsd

 

Mała uwaga na koniec. Jeżeli potrzebujesz więcej zapasowych serwerów jak jeden to nie jest to problem. Wszystko co opisałem wyżej stanowi niezbędne elementy by to również bez problemu uruchomić. Osobiście stosuje przy jednym projekcie Mail-in-a-Box + dwa zapasowe serwery DNS i wszystko działa znakomicie.  Jak masz czas i ochotę warto również poczytać o samym nsd-control bo stanowi niezły kombajn ,który można ciekawie wykorzystać! Jest niestety jedno ale! Mianowicie przesyłanie strefy z serwera master na serwer zapasowy/e  nie jest szyfrowane/podpisane co widać ponieważ przy strefie w pliku konfiguracyjnym widnieje informacja  „NOKEY”. Czy jest się czym przejmować? Teoretycznie tak bo NSD samo w sobie jest przygotowane do korzystania z podpisywania transferu strefy ale w Mail-in-a-Box brakuje takiej implementacji ponieważ jest przygotowany do transferu strefy do serwerów innych jak NSD które często stanowią usługę firm zewnętrznych. Dodanie takiego zabezpieczenia uniemożliwiło by prawidłowe działanie np w odniesieniu do serwerów opartych o BIND lub powodowało by problemy. Niemniej warto wiedzieć ,że jest taka opcja a skoro już wcześniej wspomniałem o własnym serwerze DNS bez Mail-in-a-Box ale opartym wyłącznie na NSD to właśnie tam takie podpisywanie strefy mam włączone, ale o tym innym razem.  I to by było na tyle!