
O napisanie tego wpisu poprosiła mnie pewna osoba która czytała poprzednie moje wpisy na temat domowego serwera. Dziś poruszę temat zdalnego dostępu do naszego serwera, kontroli nad nim oraz sprawdzania czy jest "online".
Ważnym aspektem tej instrukcji jest sposób połączenia serwera z Internetem - chodzi tutaj głównie o to czy posiadamy publiczne IP oraz jeżeli jest publiczne to czy jest ono stałe czy zmienne. Wszystkich tych informacji dowiemy się od naszego ISP. Przykładowa Neostrada(i podobne czyli Netia, Orange FreeDom, Blueconnect stacjonarny) czyli łącze w technologi ADSL oferuję nam zmienne publiczne IP - oznacza to że przy każdym połączeniu z siecią(lub co 24h) otrzymujemy inne IP, ale przez to że jest publiczne nasz serwer może być widziany z zewnątrz. Jeżeli jesteśmy już w sieci lokalnej(np. osiedlowej) to najprawdopodobniej jesteśmy zza NATem i posiadamy prywatne IP które z zewnątrz nie jest widoczne. W takiej sytuacji pozostaje nam tylko poprosić administratora tej sieci o przekierowanie portów z waszego IP serwera na świat.
Ja dziś opiszę moją sytuację - czyli Orange Freedom(zmienne, publiczne IP) + router TP-LINK TD-W8901G. Wiele routerów takich firm jak Edimax, Planet, Modecom czy Pentagram mają zbliżony interface do interface'u mojego routera gdyż są zbudowane na podobnych układach. Do routera mam podłączone kabelkiem sieciowym 2 komputery: stacjonarny oraz serwer. Po WIFI podłączony mam w obecnej chwili tylko telefon jednak nic nie stoi na przeszkodzie aby nasz serwer który jest np. na strychu był podłączony bezprzewodowo - o tym jak skonfigurować Debiana do pracy w sieci WIFI znajdziecie na blogu Kubofonisty lub u Wujka Google'a ;)
Router powoduje że wszystkie moje urządzenia są zza NATem, dlatego na routerze należy odblokować/przekierować porty usług do jakich chcemy mieć dostęp z zewnątrz. Trzeba tutaj jeszcze wspomnieć o tym, że nasz serwer musi mieć ustawione IP na sztywno a nie pobieranie z serwera DHCP - no chyba że nasz router posiada tablice dhcp z możliwością przypisania mac <--> IP, mój router "już" tego nie posiada - ta opcja znikła w najnowszym firmware dlatego też ustawiłem IP w /etc/network/interfaces ;) Kolejną sprawą jest ustalenie na jakim interfejsie PVC mamy skonfigurowane nasze połączenie Internetowe(nie wszystkie routery posiadają listę profili PVC) - w przypadku Polskich łącz standardowo jest to PVC2(VPI/VCI=0/35) jednak ja skonfigurowałem router do pracy na trybie PVC0 - wtedy połączenie Internetowe jest szybciej nawiązywane(a tak przynajmniej było na starszych FW), aby skonfigurować router aby pracował na PVC0 musimy wpisać w PVC2 wymyślone wartości VPI i VCI(których nie ma w żadnym innym profilu PVC) a następnie w PVC0 ustawić takie, jakie były wcześniej w PVC2 czyli 0 i 35.

Teraz możemy przejść do zakładki Advanced setup -> NAT -> PVC0(lub PVC2) -> Virtual Server. Tutaj możemy ustalić które porty i z jakiego IP chcemy wypuścić na świat. Aby przykładowo udostępnić stronę www z naszego serwera musimy odblokować port 80 - http. Wyglądało będzie to tak:
Możemy też po prostu z listy wybrać "HTTP_SERVER" ;) Przyciskiem SAVE zapisujemy zmiany. Oto moja konfiguracja: 
Ok, od teraz nasza strona na serwerze(standardowo słynny napis "It works!") powinien się wyświetlać po wpisaniu naszego IP(mi się wyświetlał;) - oczywiście jeżeli na naszym serwerze mamy zainstalowany apache(lub np. ngnix) ale uważam to za oczywistą oczywistość gdyż w poprzednich wpisach to pokazywałem ;)
IP trudno zapamiętać, tym bardziej jeżeli zmienia się ono co 24h - z pomocą przychodzą nam usługi takie jak Dyndns.com lub no-ip.com. Takie oto usługi pozwalają nam utworzyć za darmo domenę(a raczej alias, hostname ;) który zawsze, będzie kierował na nasz aktualny adres IP. Zasada działania jest prosta - router lub klient pod OS co pewien, ustalony przez nas czas wysyła nasze aktualne IP do serwisu a tam to IP jest zapisywane w naszej konfiguracji profilu.
Mój router jest kompatybilny z tą pierwszą usługą. Aby skonfigurować go do pracy z tym serwisem zakładamy konto na dyndns.com, następnie przechodzimy do: My Account -> Add Host Services . Po utworzeniu naszego aliasu przechodzimy do panelu routera do zakładki Access Management -> DDNS i wypełniamy pola danymi zgodnymi z danymi wpisanymi w Dyndns. Po utworzeniu i zapisaniu danych w panelu dyndns.com po wejściu w "My Hosts" powinniśmy ujrzeć nasze aktualne IP.
Metoda opisana wcześniej jest dosyć prosta, jednak czasami gdy poprzez TELNET wywołuje komendę "adsl wan reset" aby zmienić IP to usługa DDNS na routerze pada - świadczy o tym zapis w logu i brak wyświetlenia strony po wpisaniu swojego adresu dyndns, dlatego też na wszelki wypadek na samym serwerze też uruchomiłem taką funkcję, tyle że na no-ip.com.
Sposób instalacji jest podobny - rejestrujemy się na no-ip.com, w zakładce "Hosts/Redirects" tworzymy nowy "host" z domyślnymi ustawieniami i wymyślonym przez nas aliasem a następnie na naszym serwerze wydajemy komendę:
apt-get install noip2
Podczas instalacji zostaniemy poproszeni o podanie bodajże maila i hasła do naszego konta na no-ip.com a także o podanie czasu odświeżania IP naszego hosta. Zapyta nas też czy jesteśmy zza NATem aby wiedział które IP ma przesłać - w przypadku bycia za routerem oczywiście odpowiadamy twierdząco. Komenda noip2 -h wyświetli nam dostępne polecenia.
To by było na tyle jeżeli chodzi o zdalny dostęp, jednak miałem jeszcze napisać jak utworzyć na stronie www wskaźnik czy nasz serwer jest online - posłuży nad do tego prosty skrypt PHP który znalazłem w Internecie i zmodyfikowałem do własnych potrzeb. Znajdziecie go tutaj. W skrypcie należy w 2 miejscach wpisać swój alias noip lub dyndns a następnie cały skrypt wstawić na swoją stronkę np. do jakiegoś widgetu lub do nowej, czystej stronki PHP np. na cba.pl czy dowolnym innym serwerze ;)
Pozdrawiam! Dawid ;)