Raspberry Pi – dynamiczny DNS

Cześć, kiedyś pisałem artykuło tym, jak postawić serwer OpenVPN na malince. W przypadku, kiedy mieliśmy zmienny IP wymagało to od nas skonfigurowania usługi tzw. dynamicznego DNSu. W artykule pokazałem jak to zrobić na przykładzie routera firmy TP-Link. Co jednak, jeżeli nasz router nie udostępnia takiej opcji? Dziś pokażę Wam jak malinka może nam w tym pomóc :)

Po co mi dynamiczny DNS?

Jeżeli mamy stały adres IP i chcemy uruchomić w swojej sieci jakiś serwer widoczny z sieci Internet to wystarczy odpowiednio przekierować porty w routerze, sprawdzić adres IP i voila! Gotowe – nasza usługa zawsze będzie widoczna pod tym samym adresem. Jeżeli jednak mamy zamienny adres IP (co w przypadku, kiedy nie jesteśmy klientami biznesowymi jest prawie pewne) i chcemy zrobić coś podobnego to pojawia się problem. Adres IP może się zmienić i znów będziemy musieli sprawdzać jaki adres ma nasz serwer zanim się z nim połączymy. Ratunkiem na to jest właśnie dynamiczny DNS. Usługa ta polega na tym, że dostawca dynamicznego DNSu daje nam domenę, która po wykonaniu odpowiednich czynności będzie zawsze wskazywała na aktualny adres naszej sieci. Aby było to możliwe musimy postawić na którymś ze swoich komputerów klienta, który będzie co jakiś czas informował dostawcę usługi o aktualnym adresie IP na któy wskazywać ma dana domena. Idealnym komputerem do tego celu będzie Raspberry Pi.

Wybór usługodawcy, utworzenie domeny

Najpopularniejszym (a zarazem darmowym) dostawcą usługi dynamicznego DNSu jest no-ip. W artykule opisuję konfigurację właśnie ich klienta.

Po rejestracji w serwisie wchodzimy w link „My account”, następnie dodajemy nowy „No-IP hostname”

Instalacja klienta na RPi

Pobieramy paczkę z programem za pomocą polecenia wget:

wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

po ściągnięciu rozpakowujemy jej zawartość:

tar xzf noip-duc-linux.tar.gz

przechodzimy do katalogu, który się wypakował. U mnie jest to noip-2.1.9-1

cd noip-2.1.9-1

Możemy wpisać sam początek, czyli cd no, a następnie wcisnąć klawisz Tab. System powinien sam dopełnić ścieżkę.

Teraz kompilujemy i instalujemy program:

sudo make
sudo make install

Konfiguracja

Po instalacji zostaniemy zapytani o dane logowania oraz jakie domeny chcemy, aby były odświeżane przez tego klienta.

Auto configuration for Linux client of no-ip.com.

Please enter the login/email string for no-ip.com  nasze_konto
Please enter the password for user 'nasze_konto'  *************

Only one host [krupson-rpi.ddns.net] is registered to this account.
It will be used.
Please enter an update interval:[30]
Do you wish to run something at successful update?[N] (y/N)

Dodajemy serwis

Aby klient uruchamiał się automatycznie z systemem musimy dodać odpowiedni skrypt. W tym celu wpisujemy w konsoli

sudo cp debian.noip2.sh /etc/init.d/noip2.sh
sudo nano /etc/init.d/noip2.sh

i na początek pliku noip2.sh zamiast komentarzy, które tam są doklejamy następującą treść:

#!/bin/sh
#
### BEGIN INIT INFO
# Provides:          noip2.sh
# Required-Start:    $remote_fs $local_fs
# Required-Stop:     $remote_fs $local_fs
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: No-IP client
# Description:
### END INIT INFO

U mnie wygląda to tak:

Więcej o tym co tu się właśnie stało można przeczytać w tym artykule.

Następnie zapisujemy plik i wychodzimy z edytora. Teraz musimy nadać uprawnienia do wykonywania dla tego pliku:

sudo chmod +x /etc/init.d/noip2.sh

Ostatnim krokiem jest dodanie serwisu do auto-startu poprzez polecenie

sudo update-rc.d noip2.sh defaults

Serwis uruchomi się automatycznie po reboocie malinki. Możemy zrobić to też manualnie poprzez wpisanie komendy

sudo service noip2 start

Od teraz adres naszego serwera ukryty pod domeną no-ip powinien być automatycznie aktualizowany przez malinkę :)