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.