Have You Tried IT ?

Information Technology from scratch

Konfiguracja nazwy i DNS na nowym serwerze

Dodano przez Kategoria: Linux

Po wykupieniu serwera dedykowanego czy VPS u jakiegoś dostawcy zwykle otrzymujemy adres IP i nazwę hosta, która bardziej przypomina kolejny numer porządkowy, w domenie dostawcy. Natomiast założeniem treningowym jest nadanie serwerowy własnej nazwy pod jaką będzie widoczny w sieci.

W skrócie scenariusz wygląda tak:

  • Nowy serwer VPS którego nazwa wygląda mniej więcej tak: vps331.blue.mega4host.net
  • Domena do celów poglądowych załóżmy, że będzie to domena moje-obuwie.pl zarejestrowana u dowolnego rejestratora, w moim przypadku Dropped.pl (czylii Aftermarket.pl)

Cel:

  • Zmiana nazwy hosta serwera na moje-obuwie.pl
  • Konfiguracja serwera DNS.
    Podstawowy będzie na moim serwerze VPS, natomiast do stworzenia zapasowego wykorzystam jeden z darmowych serwisów utrzymywania DNS freedns.42.pl.

Zmiana nazwy hosta

Nazwę nowego serwera można sprawdzić komendą:

hostname -f

Mój serwer VPS akurat jest postawiony przy wykorzystaniu OpenVZ i mogę nim zarządzać poprzez HyperVM. Tutaj sprawa zmiany nazwy hosta jest dość prosta. Wystarczy tylko zalogować się do panelu, przejść do działu Console -> Network i w polu Hostname należy wpisać w nazwę jaką chcemy nazwać serwer. Pole Resolv Entries na razie zostawiam bez zmian, postaram się do tego wrócić przy okazji opisywania jak skonfigurować reverse DNS.

Ustawienie nazwy serwera w panelu HyperVM

Zmiana nazwy serwera w panelu HyperVM

Natomiast żeby to zrobić „ręcznie” bez użycia powyższego panelu, należy najpierw edytować plik:

/etc/hostname

Będzie tam jedna linia z dotychczasową nazwą serwera. Trzeba ją zastąpić nową i zapisać

moje-obuwie

Aby jeszcze w systemie serwer był rozpoznawany po nazwie hosta, należałoby jeszcze edytować plik:

/etc/hosts/

dopisując taką linię:

XX.XX.XX.XX moje-obuwie.pl  moje-obuwie

w miejsce iksów wpisując adres IP serwera albo 127.0.0.1

Zdaje się, że nazwa hosta pobierana jest przy starcie systemu, tak więc, aby zmiany zadziałały należałoby zrestartować serwer.  Jednak można to zrobić bez restartowania! Wystarczy uruchomić skrypt hostname.sh z parametrem start, wpisać coś takiego:

/etc/init.d/hostname.sh start

 

Konfiguracja serwera DNS

Konfiguracja własnego serwera DNS  ma tutaj charakter treningowy, gdyż serwer nazw nie powinien znajdować się na tym samym publicznym IP co host, do którego się odwołuje.  

Na początku należy się upewnić, że jest zainstalowany serwer nazw BIND. W razie jakby go jeszcze nie było, to instalacja wygląda tak:

sudo apt-get install bind9

Zabezpieczenie BINDa

BIND jest dość powszechnym programem, dlatego w dobrym tonie jest zastosowanie zabezpieczeń, a mianowicie zamknięcie go w chrootowalnym środowisku. Najpierw należy zatrzymać całą usługę

/etc/init.d/bind9 stop

Następnie należy edytować plik /etc/default/bind9 i zmienić w nim wartość parametru OPTIONS, żeby wyglądała tak jak poniżej:

OPTIONS="-u bind -t /var/lib/named"

Dalej trzeba stworzyć nowe katalogi i poprzenosić domyślnie utworzone przez program katalogi do nowych lokalizacji:

# Utworzenie katalogów
mkdir -p /var/lib/named/etc
mkdir -p /var/lib/named/var/cache/bind
mkdir /var/lib/named/var/run
mkdir /var/lib/named/dev

# Przeniesienie plików konfiguracyjnych BINDa
mv /etc/bind /var/lib/named/etc

Pozostawiam w razie czego w miejscu przeniesionych katalogów link symboliczny:

ln -s /var/lib/named/etc/bind /etc/bind

Niezbędne jest również utworzenie urządzeń null i random oraz nadanie odpowiednich praw:

# Urządzenia
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8

# Uprawnienia do plików i katalogów
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind

BIND jest już zamknięty w chrootowalnym środowisku. Pozostaje jeszcze rozwiązanie problemu logowania zdarzeń. Aby zdarzenia były logowane do systemowych logów należy nieco zmodyfikować plik /etc/default/syslogd. Należy tam znaleźć linię z parametrem SYSLOGD i zmodyfikować ją, żeby wyglądała tak:

SYSLOGD="-a /var/lib/named/dev/log"

Teraz pozostaje tylko zrestartowanie usługi sysklogd oraz uruchomienie bind9.

/etc/init.d/sysklogd restart
/etc/init.d/bind9 start

W logu /var/log/syslog można sobie podejrzeć czy wszystko się uruchomiło prawidłowo.

A teraz można przejść do ustawień właściwych

Na początku należy sprawdzić plik /etc/bind/named.conf
W moim przypadku widać, że jest on podzielony na podrzędne części includowane z plików: named.conf.options i named.conf.local

Zaczynamy od sprawdzenia pliku named.conf.options, gdyż w zasadzie w moim przypadku domyślne ustawienia są na razie jak najbardziej wystarczające, a wygląda to mniej więcej tak:

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        // forwarders {
        //      0.0.0.0;
        // };

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};

W dalszej kolejności trzeba będzie już coś napisać i edytować plik named.conf.local, gdzie definiuje się strefy obsługiwane przez serwer. Na końcu pliku dopisuje moją strefę:

zone "moje-obuwie.pl" {
        type master;
        file "/etc/bind/M/moje-obuwie.pl";
        notify yes;
        allow-transfer { 
                79.98.145.34;
                195.80.237.194;
        };
};
  • Type master oznaczna, że jest to typ podstawowy.
  • File wskazuje plik ze szczegółami dla tej domeny. Podany tutaj jest adres bezwzględny do pliku, który będzie trzeba za chwilę stworzyć. Podając tutaj samą nazwę pliku, katalogiem gdzie powinien się ten plik znaleźć jest katalog podany w pliku named.conf.options w parametrze directory.
  • Notify yes powoduje, że o wszelki zmianach we wpisie podstawowym powiadamiane są również zapasowe DNSy.
  • Allow-transfer  określa adresy IP, które będą miały pozwolenie na pobranie tej strefy, tutaj akurat są konkretne adresy serwerów DNS z wspomnianego na początku serwisu  freedns.42.pl, które będą stanowić tutaj serwery zapasowe (secondary)

Następnie należy utworzyć wskazany powyżej plik z wpisami dla domeny /etc/bind/M/moje-obuwie.pl

$TTL 86400
$ORIGIN moje-obuwie.pl.
@ IN SOA ns1.moje-obuwie.pl. boss.moje-obuwie.pl. (
        2012061701 ;; serial
        10800      ;; refresh
        3600       ;; retry
        604800     ;; expire
        10800      ;; TTL
)
@               IN NS           ns1.moje-obuwie.pl.
@               IN NS           ns2.moje-obuwie.pl.
@               IN NS           ns3.moje-obuwie.pl.

@               IN A            XX.XX.XX.XX
ns1             IN A            XX.XX.XX.XX
ns2             IN A            79.98.145.34
ns3             IN A            195.80.237.194

;; poczta
@               IN MX 10        mail
mail            IN A            XX.XX.XX.XX

;; serwer www
www             IN A            XX.XX.XX.XX

ftp             IN CNAME        @

Jeśli chodzi o budowę tego pliku to polecam ten wpis DNS dla opornych. Tam pan wszystko wyjaśnił co do czego 😉

W skrócie:

  • $TTL – określa czas ważności rekordów (w sekundach)
  • $ORIGIN – nazwa domeny. W dalszej części @ oznacza właśnie tą wartość.
  • Gdy gdzieś w pliku pojawia się nazwa domeny to trzeba zakończyć ją kropką, gdyż w przeciwnym wypadku doklejana jest nazwa domeny (wartość $ORIGIN)
  • @ IN SOA…  – Start Of Authority informuje o podstawowym serwerze DNS i kto nim zarządza (e-mail zapisany z kropką w miejscu małpy)

Jak wynika z pliku zdefiniowałem dla swojej domeny aż trzy serwery DNS. W zupełności wystarczyłyby tutaj dwa.
Pierwszy ns1.moje-obuwie.pl podstawowy obsługiwany przez mój serwer, na którym będzie domena również zainstalowana, dwa kolejne (ns2.moje-obuwie.pl i ns3.moje-obuwie.pl) to adresy zapasowe utworzone w serwisie freedns.42.pl.

Przed przejściem do konfiguracji strefy zapasowej, należałoby zatwierdzić dokonane zmiany restartując usługę bind9

service bind9 restart

Można jeszcze sprawdzić czy wszystkie dokonane przed chwilą wpisy dla strefy są poprawne wywołując taki program:

named-checkzone moje-obuwie.pl /etc/bind/M/moje-obuwie.pl
zone moje-obuwie.pl/IN: loaded serial 2012061701
OK

Jakby się coś nie zgadzało albo popełniona została jakaś drastyczna literówka to program poinformuje, gdzie mniej więcej szukać błędu.

Ponadto poniższą komendą można sobie sprawdzić czy domena została poprawnie dodana (powinna się pojawić po wykonaniu)

named -g 2>&1 | grep loaded

 

Konfiguracja strefy zapasowej DNS w serwisie freedns.42.pl

Najpierw należy założyć w serwisie darmowe konto podając prawidłowy adres e-mail 😉 i przejść do tworzenia nowej strefy wpisując w nazwie strefy nazwę domeny, zaznaczając typ Zapasowe i podając adres IP podstawowego serwera, w moim przypadku jest to adres mojego VPSa.

Tworzenie nowej strefy z serwisie freedns.42.pl

Tworzenie nowej strefy zapasowej w serwisie freedns.42.pl

Po utworzeniu powinny zostać od razu pobrane informacje z serwera podstawowego. Będzie to widoczne w sekcji Lista stref w serwisie.

Konfiguracja parametrów domeny u rejestratora

Na koniec pozostaje jeszcze zmiana serwerów DNS w ustawieniach domeny. Na początku miałem problemy z ustawieniem adresów ns1.moje-obuwie.pl, ns2.moje-obuwie.pl, ns3.moje-obuwie.pl w serwisie Afermarket.pl. Wpisując je w ustawieniach domeny DNS1, DNS2, DNS3 otrzymywałem same błedy, że coś tam niepoprawna domena zewnętrzna czy coś takiego. Można ewentualnie wpisać adresy zapasowe z serwisu freedns.42.pl, czyli fns1.42.plfns2.42.pl, powinny zostać przyjęte i domena będzie działać.

Jednak zależy mi na tym, żeby do domeny moje-obuwie.pl były przypisane DNSy zawierające tą samą nazwę nsX.moje-obuwie.pl, bo ładniej to wygląda 😉 i na pierwszy rzut oka nie widać z jakich DNSów akurat korzystam.

W pierwszym etapie należy zgłosić do NASK nowo utworzone hosty. Serwis Aftermarket.pl udostępnia takie narzędzie pod adresem: http://www.aftermarket.pl/nhosts.php
Należy tutaj podać utworzone hosty (ns1.moje-obuwie.pl,  ns3.moje-obuwie.pl,  ns3.moje-obuwie.pl), a później (trzeba dać im trochę czasu na propagację) należy je przypisać do domeny.
I tu uwaga! Mi osobiście nie udało się ich ustawić przy bezpośredniej edycji ustawień dla domeny (po kliknięciu w mały plusik po lewej stronie domeny, w zakładce Przekieruj). Dopiero użycie opcji Operacje hurtowe (lub poprzez zaznaczenie na liście domeny i wybranie na dole z listu rozwijanej Zmień serwery DNS) przyniosło pomyślny rezultat. Wówczas pojawiają się pola, gdzie można wpisać nazwę hosta oraz/lub jego IP. Wpisałem nazwy hostów oraz ich adresy IP.

Konfiguracja domeny w serwisie Aftermarket.pl

Przypisanie serwerów DNS dla domeny w serwisie Aftermarket.pl

Taka operacja zakończyła się pomyślnie. Nie jestem do końca pewien dlaczego dopiero tą drogą zadziałało. Mam tylko nadzieję, że to nie zbiegło się przypadkiem z chwilą, gdy tak niefortunnie  rozpropagowały się DNSy.

Oczywiście przy tych wszystkich zmianach związanych z nazwami DNS trzeba wykazać się cierpliwością i opanowaniem. Po utworzeniu hosta DNS należy trochę odczekać dając czas na rozpropagowanie się informacji w sieci.

Sprawdzenie poprawności wpisów DNS

W Internecie jest kilka narzędzi, które pozwalają w łatwy sposób sprawdzić, czy domena jest prawidłowo skonfigurowana.

 

Poniżej przedstawiam jeszcze parę artykułów, z którymi warto się zapoznać przy tym temacie:

 

Update 6.07.2012

Uwaga! Proszę nie wzorować się na tym wpisie, przynajmniej w kwestii konfiguracji binda. Uruchamiając własny serwer nazw i hosta powinny być one na wydzielone na oddzielnych adresach IP, a najlepiej na różnych maszynach. Rozwiązanie powyższe oczywiście będzie działać, lecz ze względów bezpieczeństwa pozostawia wiele do życzenia. Bind jest prawdopodobnie podatny na ataki umożliwiające rozszerzenie uprawnień, dlatego najlepszym rozwiązaniem będzie utworzenie strefy podstawowej w serwisie freedns.42.pl lub u własnego operatora domeny lub serwera.

15 komentarzy

  1. DNS Odpowiedz

    Witam

    Zrobiłem wszystko tak jak trzeba z twojego opisu, z tym że ja mam domene wykupioną w 1&1 i właśnie tam można zmienić serwery dns ale można tylko wpisać je po nazwie a nie po ip, moich hostów dns oczewiście nie znajduje chciałbym mieć własne tak jak opisałeś ale ja niezauważyłem na 1&1 formularza do rozpropagowania hostów i ich przypisania tak jak pokazałeś na aftermarket.pl może wiesz jak to na inaczej zrobić?

    Gratuluje dobrego i przydatnego artykułu.

    • nolife Odpowiedz

      Przyznam, że nie miałem jeszcze do czynienia z panelem 1&1.
      Ewentualnie zawsze możesz dla domeny przypisać 2 adresy DNS z freedns, fns1.42.pl o fns2.42.pl (jeśli oczywiście używasz freedns).

      A propos hostów.
      Nie wiem jak tam sprawa wygląda w 1&1, ale jeśli się da to może spróbuj utworzyć w panelu dla swojej domeny subdomeny (ns1.twojadomena.pl, ns2.twojadomena.pl,…), jeśli będzie taka możliwość – przypisz im tam odpowiednie IP i wtedy zmień dns dla domeny.
      Pozdrawiam.

  2. DNS Odpowiedz

    Witam

    Korzystam z freedns ale w panelu 1&1 muszę podać też podstawowy serwer dns, a na freedns mam tylko zapsaowy a podstawowy u siebie i właśnie w panelu 1&1 nie ma opcji aby wpisać je po nazwie i przypisać im ip. A wogóle to można przypisać adresom dns z freedns swoje nazwy jak już mają przypisane inne, ich nazwy?

    • nolife Odpowiedz

      spróbuj skontaktować się z supportem 1&1, żeby ustawili Ci indywidualnie.

      …można, jak widać na moim przykładzie host ns2.moje-obuwie.pl wskazuje na adres 79.98.145.34, tak samo jak host fns2.42.pl.

  3. Pingback: Podstawowa konfiguracja VPS: LAMP, FTP, poczta, ISPConfig3

  4. jasiek Odpowiedz

    czy z konfiguracja domenu eu jest tak samo. próbuje skonfigurowac ja jednak plik z wpisami nazway np. domena.eu nie jest rozpoznawany przez binda, ale juz np. domena.eu.pl juz tak. Czy jako nawa pliku moge zastosowac nazwe z dopiskiem pl. mimo ze domena jest eu?

  5. Jakub Odpowiedz

    Dziwne.
    Po „zamknięciu” binda nie uruchamia się on w ogóle.
    [code]/etc/init.d/bind9 start
    Starting domain name service…: bind9.
    root@xx:/var/lib/named# /etc/init.d/bind9 status
    could not access PID file for bind9 … failed!
    [/code]
    I tyle 😉
    A robię kopiuj wklej co by nie było 😀

    • nolife Odpowiedz

      trudno rzec…
      musiałbyś sprawdzić jakie informacje pojawiają sie w logach.
      Przede wszystkim spróbuj przywrócić plik /etc/default/bind9 do pierwotnej postaci i wtedy spróbuj uruchomić binda.

        • nolife

          w tych logach też za dużo nie widać.
          Spróbuj sprawdzić jeszcze czy coś się nie pojawia w logach

          /var/log/daemon.log
          /var/log/messages

           

          A przede wszystkim sprawdź plik /etc/init.d/bind9
          czy podana jest prawidłowa ścieżka do pliku named.pid przy PIDFILE=…
          Sprawdź też plik konfiguracyjny binda named.conf czy masz w tablicy ‚options’ zdefiniowaną zmienna pid-file i czy jest tam podana prawidłowa ścieżka do pliku „named.pid”, np:

          1
          2
          3
          4
          5
          options {
          ...
                  pid-file "/var/run/named/named.pid";
          ...
          };
  6. Szern Odpowiedz

    Jesteś wielki! Po długich barażach z domenami, bindem, DNS-ami, OVH itp. dopiero Twój art pozwolił mi opanować sytuację. Kiedy mogę Ci postawić piwo? 😀

    • nolife Odpowiedz

      Dzięki! Rad jestem niezmiernie, że komuś się to przydaje. Piwo, oczywiście przy najbliższej okazji ;P

  7. Michal Odpowiedz

    No niby dobrze poszlo tylko kurcze nie moge sie zalogowac z terminala poprzez ssh root@mojadomena.com…jedynie poprzez IP.
    Plik etc/resolv.conf po wywolaniu w terminalu wskazuje 3 nowe wartosci IP nameservers…natomiast w podgladzie przez ftp oraz w panelu servera dalej widnieje 8.8.8.8 oraz 8.8.4.4 – czy to dobrze…nie wiem, nie znam sie?
    Czy trzeba czekac na propagacje…ale chyba poprzes ssh root#domena powinno isc od razu…

  8. Tomasz Odpowiedz

    Witam, mam problem z podpięciem domeny do serwera dedykowanego z panelem Paralles. Nie wiem jak wygenerować dns’y potrzebne do podpięcia domeny. Czy ktoś może mi jakoś pomóc jak to zrobić ?

Dodaj komentarz do Jakub

XHTML: Dozwolone znaczniki: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">