W styczniu ubiegłego roku napisałem o zmianie łącza na DialNet i jego podstawowej konfiguracji w Linuksie. Poruszyłem tam różne możliwości podłączenia, jednak najobszerniej opisałem wykorzystujące router Linksys WAG54GS — jako że sam właśnie z takiego rodzaju korzystam. Czas najwyższy wrócić do tej tematyki, jako że jest kilka zagadnień, którym warto poświęcić więcej uwagi. Jednym z nich jest postawienie serwera. To pierwsza z zaplanowanej na co najmniej trzy części serii, w której opiszę dokładnie, co chcę osiągnąć, w jakiej konfiguracji i z jakimi ograniczeniami.

Wstęp

W tej części skupię się na odpowiedniej konfiguracji łącza, dopiero w następnych dwóch poruszę kwestię instalacji i konfiguracji serwera (kolejno Apache i nginx). Oczywiście ktoś mógłby zauważyć, że kwestię połączenia poruszyłem już we wpisie DialNet w Linuksie, ale w dalszej części wyjaśnię dlaczego nie można wykorzystać tamtych informacji na dłuższą metę. Poruszę dwa przypadki łącz, z czego jeden stricte teoretycznie, jako że nie mam warunków do jego przetestowania (ew. błędy proszę wytykać w komentarzach).

Router i ucieczka z DHCP

W przypadku wykorzystania routera do dystrybuowania łącza na poszczególne komputery w sieci, niemal zawsze stosowany jest dynamiczny przydział wewnętrznego IP. Rzecz w tym, że sam DialNet w ofercie podstawowej1 nie oferuje stałego IP, więc można posunąć się do stwierdzenia, że IP jest podwójnie zmienne. W przypadku używania łącz do surfowania w Internecie, dla użytkownika nie ma to kompletnie żadnego znaczenia — jest to dla niego nieodczuwalne. Problem pojawia się w momencie, kiedy chce się postawić serwer (nieważne jaki — gier, HTTP etc.). Za każdym razem trzeba byłoby podawać inne IP (a przynajmniej wtedy, kiedy się rozłączyło), co w pewnych przypadkach może być po prostu uciążliwe.

Jest na to sposób i nazywa się DDNS. Aby jednak móc skorzystać z np. DynDNS czy TzoDNS, trzeba najpierw uciec z DHCP, czyli dynamicznego przydziału wewnętrznego IP.

W zasadzie, żeby być bardziej dokładnym, trzeba zaznaczyć, że jest sytuacja, w której ucieczka z DHCP nie jest potrzebna — kiedy z routera korzysta jeden komputer. Tylko po co komuś router, jeżeli ma tylko jeden komputer w swojej sieci lokalnej?

Router przydziela dynamicznie IP z pewnej puli, dajmy na to z przedziału 192.168.1.101-192.168.1.104. Zakładam w tym wypadku, że w sieci lokalnej mogą znaleźć się cztery komputery. Teraz, żaden z tych czterech komputerów nie ma stałego IP, a to oznacza, że w zależności od tego, który komputer zostanie włączony pierwszy, przydzielony zostanie mu najwcześniejszy numer IP (w naszym przykładzie byłby to więc 192.168.1.101).

Każdy z komputerów był włączany po kolei, ale gdyby nie ten szczęśliwy zbieg okoliczności, adresy mogłyby zostać przydzielone w zupełnie innej kolejności. Administrator sieci stwierdził, że Komputer 1 stanie się Serwerem.

Muszę tutaj poczynić pewne uzupełnienie. Nie chodzi mi o konfigurację serwera do zastosowań profesjonalnych. Sam używam serwera na Debianie Unstable (co jest odradzane przez każdego rozsądnego człowieka) do testowania stron i łączenia się po SSH. Jeśli chcesz mieć bezpieczny, stabilny serwer do jakiegoś ważnego projektu czy użytku produkcyjnego, to gałąź Stable Debiana jest jedyną opcją.

Aby Komputer 1 mógł się stać Serwerem, musi mieć niezmienne IP, a to oznacza, że musi uciec od tego dynamicznie przydzielanego przez router. Pierwszy krok, jaki należy wykonać, to sprawdzić zakres puli swojego routera. Zdarza się, że w domyślnych konfiguracjach jest to rozpiętość 50 (słownie: pięćdziesięciu) adresów. Ale to nie problem, bo wystarczy wybrać jeden, który do tej puli nie należy.

W użytym wyżej przykładzie pula to 192.168.1.101-192.168.1.104. Adresem, który spokojnie mogę przydzielić na stałe Serwerowi, jest np. 192.168.1.100 (jest nim także *105, *106 etc.).

Interfejsy sieci

Plik /etc/network/interfaces definiuje w jaki sposób komputer pobiera informacje o IP z routera.2 Podczas instalacji Debiana na Komputerze 1 administrator wybrał pobranie informacji przez DHCP, wobec czego plik interfaces wygląda następująco:

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp

Zawartość jest tak krótka, że w zasadzie nie ma czego tłumaczyć. Najważniejsza jest ostatnia linia, w której na samym końcu jak byk stoi dhcp oraz eth0, którą powinna być karta sieciowa w Komputerze 1. Zawartość tego pliku trzeba będzie zmodyfikować, żeby adres IP przestał być przydzielany dynamicznie, a zamiast tego żeby na stałe był to 192.168.1.100.

Dobrym pomysłem jest utworzenie kopii bezpieczeństwa tego pliku:

sudo cp /etc/network/interfaces /etc/network/interfaces-dhcp-backup

Jeśli kiedykolwiek będzie trzeba wrócić do łączenia się przez DHCP, wystarczy przywrócić ten plik.

Teraz, biorąc pod uwagę parametry routera, plik /etc/network/interfaces powinien wyglądać mniej więcej tak:

auto lo
iface lo inet loopback auto eth0

iface eth0 inet static
       address 192.168.1.100
       gateway 192.168.1.1
       netmask 255.255.255.0
       network 192.168.1.0
       broadcast 192.168.1.255

Jak widać, kartą sieciową pozostała eth0, natomiast dhcp zostało zastąpione przez static. Doszły też nowe parametry (jak address, gateway etc.), które mogą się różnić w zależności od posiadanego łącza i/lub routera. Powyższe są poprawne dla domyślnych ustawień routera Linksys WAG54GS i łącza DialNet.

Więcej przykładów i rodzajów połączeń można znaleźć tutaj: Chapter 5. Network setup.

Trzeba jeszcze przeładować połączenie z nowymi ustawieniami:

sudo /etc/init.d/networking restart

Jeśli wszystko przebiegło pomyślnie, sieć powinna się załadować, a polecenie sudo ifconfig -a powinno wyświetlić mniej więcej coś takiego:

eth0      Link encap:Ethernet  HWaddr 00:24:8c:3c:1d:f6  
          inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::224:8cff:fe3c:1df6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:419214 errors:0 dropped:0 overruns:0 frame:0
          TX packets:295859 errors:0 dropped:0 overruns:0 carrier:1
          collisions:0 txqueuelen:1000
          RX bytes:552152616 (526.5 MiB)  TX bytes:89803679 (85.6 MiB)
          Interrupt:45

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:357 errors:0 dropped:0 overruns:0 frame:0
          TX packets:357 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:52040 (50.8 KiB)  TX bytes:52040 (50.8 KiB)

Pierwszy krok wykonany, ucieczka z DHCP zakończyła się pomyślnie. Co teraz?

1. DDNS w routerze

To pierwsza z dwóch możliwości. Mój router, Linksys WAG54GS, obsługuje DDNS i można ustawić połączenie w panelu administracyjnym. Osobiście korzystam z serwisu DynDNS.org, ale router obsługuje też TzoDNS.com.

Serwis DynDNS.org sprawia, że drugie zmienne IP, zewnętrzne, zostaje okiełznane. W ten sposób Komputer 1, obecnie zwany Serwerem, ma drogę wolną w świat.

Nie będę się specjalnie rozwodził nad tym, w jaki sposób DDNS działa — jest to wystarczająco dobrze opisane w Wikipedii oraz na stronie DynDNS.

Jeśli chodzi o DynDNS.org, to wystarczy się tam zarejestrować, wybrać sobie domenę i ją dodać. Później już wystarczy odpowiednio wypełnić pola w opcjach routera (przykład powyżej) i gotowe.

2. DDNS w systemie

Jeśli ktoś nie posiada routera, który obsługuje DDNS, trzeba poradzić sobie w inny sposób. Z pomocą przychodzi sprytny programik, który nazywa się dyndns. Na jego stronie znajduje się informacja, że obsługiwanych jest kilka innych serwisów niż DynDNS, m.in. No-IP. Przykład zastosowania:

dyndns --login <użytkownik> --password <hasło> --Host twoja_domena.dyndns.org

Więcej przykładów do znalezienia tutaj: dyndns manual.

Hosts i hostname

Ostatnimi rzeczami związanymi z konfiguracją łącza są pliki /etc/hosts i /etc/hostname. To ostatnie kroki i będzie można przejść do części drugiej i/lub trzeciej opisującej instalację i konfigurację serwera.
Na pierwszy rzut idzie plik /etc/hosts, najpierw kopia bezpieczeństwa:

sudo cp /etc/hosts /etc/hosts-backup

Teraz już można zastąpić treść następującą:

127.0.0.1 localhost.localdomain localhost
192.168.1.100 twoja_domena.dyndns.org twoja_domena

::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Oczywiście „twoja_domena.dyndns.org" oraz „twoja_domena" należy zastąpić odpowiednimi danymi uzyskanymi w np. serwisie DynDNS.

Kolej na plik /etc/hostname, którego zawartość powinna wyglądać następująco:

twoja_domena.dyndns.org

Także tutaj należy zastąpić podany w przykładnie adres. Pozostało jeszcze wystartować hostname:

sudo /etc/init.d/hostname.sh start

Próba generalna:

hostname
hostname -f

Oba powinny podać w odpowiedzi „twoja_domena.dyndns.org". Jeśli tak się stało, to konfiguracja łącza została zakończona pomyślnie.

Podsumowanie

W ten sposób skonfigurowane łącze w Debianie sprawi, że komputer będzie widziany w internecie pod stałym adresem. O czym jeszcze warto pamiętać to blokowanie portów — mój router domyślnie blokuje dostęp do większości portów. Osobiście mam odblokowane dwa, port 80 (domyślny dla serwera HTTP) oraz jeszcze jeden dla SSH. W następnej części opiszę instalację i podstawową konfigurację typowego serwera LAMP w oparciu o Debiana i łącze DialNet, zakładając, że sieć jest skonfigurowana w zgodzie z opisem, który tutaj przedstawiłem.

Źródła


  1. Zdaje się, że można to wykupić jako dodatkową usługę. ↩︎

  2. To oczywiście duże uproszczenie z mojej strony na potrzeby omawianego zagadnienia. ↩︎