Ogłoszenia parafialne 😉

Zanim przejdziemy dalej, taka mała uwaga organizacyjna. Jeśli jakieś zagadnienia są dla Was obce lub niejasne i wymagają objaśnienia, zadawajcie pytania w komentarzach, ale zachęcam też do samodzielnego poszukiwania odpowiedzi w Internecie. Tak zdobyta wiedza daje dużą satysfakcję i zostaje na dłużej. Dajcie też znać, czy poruszane zagadnienia są dla Was ciekawe.

Czas na show!

Z lektury pierwszej części wiecie już, jakie są tryby pracy CLI oraz jak przejść do edycji konfiguracji, zatwierdzić zmiany czy zapisać je w konfiguracji startowej. A jak wyświetlić podstawowe informacje o urządzeniu, czyli sprawdzić jego konfigurację czy adresację interfejsów? Służy temu komenda show” z dodatkowymi opcjami. I tak bieżącą konfigurację wyświetla polecenie show configuration”. Poniżej wynik tej komendy na routerze EdgeRouter Lite z konfiguracją domyślną (czyli po wyjęciu z pudełka lub przywróceniu ustawień fabrycznych).

show configuration

Jak widać, konfiguracja przywodzi na myśl jakiś język programowania i początkowo może wydawać się straszna, ale z czasem nie będzie miała dla was żadnych tajemnic. Widać, że jest podzielona na sekcje, a wcięcia oznaczają szczegóły konfiguracji danego elementu. I tak, konfiguracja interfejsów to sekcja “interfaces”, która zawiera interfejsy Ethernet oznaczone kolejno eth0″, eth1″ oraz eth2″, jak i interfejs loopback. Jak widać, tylko interfejs eth0″ posiada dodatkowe opcje, w tym wypadku jest to adres IP i maska, odpowiednio 192.168.1.1 oraz 255.255.255.0 (bo właśnie taka maska to inaczej 24 bity).

Adresacja interfejsów

Skoro potrafimy już modyfikować konfigurację, a w pierwszej części w przykładach kasowaliśmy i dodawaliśmy adresy, to dostosujmy konfigurację routera do naszych potrzeb. Przyjmijmy, że chcemy, aby interfejs eth0″ był interfejsem do sieci Internet (WAN) i uzyskiwał adres automatycznie z DHCP, a na interfejsie eth1″ chcemy skonfigurować naszą sieć lokalną (LAN) z adresem 192.168.100.1 i maską 255.255.255.0. Poniżej lista komend które musimy wydać, plus krótki komentarz:

  • “configure” – aby przejść do trybu konfiguracji,
  • “delete interfaces ethernet eth0 address 192.168.1.1/24” – musimy skasować niepotrzebny nam adres,
  • “set interfaces ethernet eth0 address dhcp” – konfigurujemy interfejs “eth0” na pobieranie adresu z DHCP,
  • “set interfaces ethernet eth1 address 192.168.100.1/24” – nadajemy adres interfejsowi “eth1”,
  • “commit” zatwierdzamy zmiany.

Rezultat zmian możecie zweryfikować znanym już poleceniem show configuration”, ale w tym wypadku miałoby ono jedną wadę. Mianowicie poznalibyście konfigurację bieżącą interfejsów, ale zamiast adresu interfejsu “eth0”, uzyskalibyście tylko informację, że ma on być pobrany z DHCP. Zmieńmy zatem komendę na show interfaces”.

show interfaces

Tak jest znacznie lepiej, widzimy listę interfejsów (Interface), ich adresy IP (IP Address) oraz ich stan (S/L), plus ewentualny opis (Description). Czym są te dwie ostatnie kolumny? Pierwsza z nich – S/L, informuje nas o tym, czy interfejs jest administracyjnie włączony (u, z ang. Up) czy wyłączony (A, z ang. Admin Down) oraz jaki jest status linku – aktywny (u) lub nieaktywny (D, z ang. Down). Na czym polega różnica? Link to stan fizyczny – urządzenie sprawdza, czy jest połączone z innym, natomiast stan administracyjny to możliwość celowego włączenia lub wyłączenia interfejsu przez użytkownika. Ostatnie pole pozwala na dodanie do interfejsu krótkiego komentarza, co niewątpliwe ułatwi w przyszłości nam lub innym osobom zrozumienie konfiguracji.

Zostaw sobie wiadomość

Każdy programista wie, jakim koszmarem jest czytanie kodu, nawet własnego, pozbawionego komentarzy. Dla administratora sieci podobny koszmar to brak jakiejkolwiek dokumentacji. Skoro zatem mamy taką możliwość, zostawmy sobie (lub innym) wiadomość, by w przyszłości mieć prostsze zadanie. Komenda, której użyjemy ma postać set interfaces ethernet ethX description ‘komentarz'”, gdzie “x” oznacza oczywiście numer interfejsu. Przy okazji wyłączmy nieużywany interfejs “eth2″ poleceniem “set interfaces ethernet eth2 disable” i porównajmy wynik z wcześniejszym:

description

Czyż tak nie jest zdecydowanie lepiej? Od razu wiemy, który interfejs jaką rolę pełni, a nawet dodaliśmy informację o operatorze. Nie ma to wielkiego znaczenia, gdy korzystamy z jednego ISP, ale gdybyśmy mieli dwa interfejsy WAN do dwóch dostawców, wtedy na pewno w przyszłości docenimy własną zapobiegliwość. Widzimy również, że stan interfejsu “eth2” został oznaczony literką “A”, czyli wyłączony przez administratora. Tak na marginesie, wyłączanie nieużywanych interfejsów jest dobrą praktyką, zapobiegającą ewentualnym problemom, gdyby ktoś inny lub nawet sami w pośpiechu, roztargnieniu lub z innego powodu, wpięlibyśmy tam jakiś niewłaściwy kabelek.

Interfejs myszki Miki

Ci najbardziej zniecierpliwieni mogą wreszcie odetchnąć z ulgą, uruchomić przeglądarkę i po zaadresowaniu karty sieciowej w podsieci 192.168.100.0/24 i skierowaniu się pod adres https://192.168.100.1 skorzystać z graficznego interfejsu użytkownika. Oczywiście w przypadku powyższej konfiguracji kabel Ethernet wpiąć należy do interfejsu “eth1”. Przy pierwszym skorzystaniu z interfejsu webowego pojawi się komunikat jak niżej z prośbą o zaakceptowanie licencji użytkownika.

GUI

Zapominalskim przypominam, że domyślny login i hasło to ubnt.

Routing

Jeśli jednak spodobała się Wam praca z CLI to zapraszam do dalszej lektury. Czego jeszcze potrzebujemy, by móc wreszcie skorzystać z Internetu? Tak, dobrze słyszę, ktoś krzyczy o bramie i/lub routingu? Oczywiście, nasz router musi wiedzieć dokąd kierować ruch. Ale zaraz zaraz, czy on na pewno tego już nie wie? Możemy to sprawdzić wyświetlając tablicę routingu poleceniem “show ip route”.

show ip route

Ależ wie, dzięki DHCP. Oczywiście nie zawsze jest tak dobrze, że dostawca udostępnia DHCP i czasem musimy adresację i bramę ustawić ręcznie. Adresację już omówiliśmy, zatem pozostaje kwestia bramy. Można ją skonfigurować na dwa sposoby – oba równie dobre i dające ten same efekt.

  • “set system gateway-address 172.23.0.1”

lub

  • “set protocols static route 0.0.0.0/0 next-hop 172.23.0.1”

Jak wspomniałem efekt, czy to będzie adres uzyskany z DHCP, czy skonfigurowany jedną z tych dwóch komend, będzie taki sam. Po prostu, ta pierwsza komenda jest prostsza do zapamiętania i zrozumienia przez mniej zaawansowanych użytkowników, dla których zagadnienia routingu statycznego i dynamicznego brzmią jak czarna magia i niekoniecznie wiedzą lub chcą wiedzieć co oznacza adres sieci 0.0.0.0/0.

Serwery DNS

Analogicznie do bramy domyślnej wygląda kwestia serwera(ów) DNS lub jeśli ktoś woli serwera(ów) nazw (z ang. name server). Jeśli korzystamy z DHCP, wówczas router pobierze je automatycznie. W przeciwnym wypadku musimy je dodać sami komendą set system name-server x.x.x.x” gdzie “x.x.x.x” to oczywiście adres IP serwera DNS. Jeśli chcemy dodać więcej niż jeden serwer, kolejne dodajemy ponownie wprowadzając tę komendę. Ja zachęcam do skorzystania z serwerów OpenDNS, których adresy to 208.67.222.222 oraz 208.67.220.220. Wystrzegajcie się natomiast tak popularnych serwerów firmy Google o adresach 8.8.8.8 oraz 8.8.4.4, gdyż jest to jeden ze sposobów szpiegowania Was przez tę firmę i serwowania Wam reklam, między innymi w oparciu o odwiedzane przez Was strony. Przykład konfiguracji serwerów OpenDNS:

name-server

NAT

Tak skonfigurowany router będzie już miał dostęp do Internetu, co możemy zweryfikować poleceniem ping”.

ping

Możecie w tym miejscu spytać, czemu najpierw robię ping dla adresu IP, a potem dla domeny? Z bardzo prostej przyczyny – brak odpowiedzi na ping na znany adres IP, o którym wiemy, że nie filtruje zapytań ICMP pozwala sprawdzić czy mamy poprawną adresację i czy wszystko działa, natomiast ping nazwy pozwala sprawdzić, czy poprawna jest konfiguracja serwerów nazw i otrzymujemy od nich odpowiedź. Jeśli jednak ten sam manewr wykonalibyście z komputera, okaże się, że test zakończy się niepowodzeniem. Tak, tak, została jeszcze jedna rzecz do skonfigurowania czyli NAT lub jak wolą inni PAT, a miłośnicy Linuksa zakrzykną maskarada (z ang. masquerade), bo przecież w Linuksie wszystko musi być inaczej ;P Wydajemy więc komendy:

  • “set service nat rule 5000 outbound-interface eth0”,
  • “set service nat rule 5000 protocol all”,
  • “set service nat rule 5000 type masquerade”.

Bardziej zaawansowaną konfigurację mechanizmów NAT jeszcze omówimy, więc w skrócie, powyższe komendy tworzą regułę numer 5000. Nie jest on przypadkowy, EdgeOS narzuca zakresy numeracji w zależności od rodzaju NATu i w przypadku nie zastosowania się do wytycznych, po prostu dostaniemy komunikat błędu. Reguła, którą utworzyliśmy mówi, aby stosować maskaradę (dynamiczny NAT adresów źródłowych), dla wszystkich protokołów, dla pakietów wychodzących interfejsem “eth0”.

Sukces, udało się nam skonfigurować router z systemem EgdeOS do obsługi Internetu 😉 Ale zanim zaczniecie świętować. profilaktycznie zmieńcie użytkownika i hasło:

  • “set system login user testhub authentication plaintext-password ‘haslo'”.

Konieczne jest też usunięcie użytkownika “ubnt”, ale nie uda się wam tego zrobić bez wylogowania i zalogowania jako nowy, przed chwilą dodany użytkownik “testhub”, gdyż otrzymacie komunikat błędu “Attempting to delete current user: ubnt”. Zatem wydajemy polecenie “exit” w trybie operacyjnym, co spowoduje wylogowanie i logujemy się już jako nowy użytkownik.

new user

Przypominam o zapisaniu konfiguracji! I jeszcze ważna uwaga. Gdybyście po dodaniu użytkownika zajrzeli do konfiguracji to odkryjecie, że hasło, które przed chwilą podaliście jawnym tekstem, w konfiguracji jest zaszyfrowane. Również w pliku z kopią zapasową jest ono nie do odczytania (dla dociekliwych jego fragment wygląda tak: $6$Xzz6titfBc$SVwMWbuZAk3oBZPFbZKWjKSP87gCjsQ….), zatem warto je zapamiętać, bo w przypadku jego utraty konieczny będzie restart urządzenia do ustawień fabrycznych, co oznacza pożegnanie się z konfiguracją, często długo dopieszczaną i dopracowywaną.

Podsumowanie

Nie, tym razem nie będę przypominał wszystkich komend jeszcze raz. Za to zachęcam do przećwiczenia ich celem utrwalenia, zabawy ze zmianą adresacji i odkrywania dodatkowych opcji, które podpowie wam znak zapytania. Na zachętę zdradzę komendę show configuration all”. Napiszcie w komentarzach swoimi słowami, czym różni się jej wynik od samego show configuration”.