Administracja systemami operacyjnymi wiosna 2014 Wykład 2 Sieć i usługi sieciowe w Linux/UNIX dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki http://wbieniec.kis.p.lodz.pl/pwsz
Informacje wstępne By system Unix mógł korzystać z inter-sieci, jego interfejsy sieciowe muszą być obsługiwane przez jądro oraz poprawnie skonfigurowane Komputer z może posiadać wiele interfejsów, każdy z innym adresem IP. Interfejsy mogą być różnego typu, włączając: Loopback: lo Ethernet: eth0, eth1, ... Wi-Fi: wifi0, wifi1, ... Token Ring: tr0, tr1, ... PPP: ppp0, ppp1, ... Każdy interfejs sieciowy podłączony bezpośrednio do internetu (albo sieci bazującej na IP) jest identyfikowany za pomocą unikalnego 32 bitowego adresu IP.
Adresy sieci internetowych Dawniej, sieci IP były pogrupowane w klasy, których część sieciowa adresu była długa na 8, 16 lub 24 bity. Adresy IP maska podsieci długość Klasa A 1.0.0.0 - 126.255.255.255 255.0.0.0 = /8 Klasa B 128.0.0.0 - 191.255.255.255 255.255.0.0 = /16 Klasa C 192.0.0.0 - 223.255.255.255 255.255.255.0 = /24 W każdej klasie istnieją zakresy adresów zarezerwowanych do użycia w sieciach lokalnych (LAN). Istnieje gwarancja, że te adresy nie będą w konflikcie z innymi adresami w internecie. adres sieci długość ilość Klasa A 10.x.x.x /8 1 Klasa B 172.16.x.x - 172.31.x.x /16 16 Klasa C 192.168.0.x - 192.168.255.x /24 256 Pierwszy adres w każdej sieci jest równocześnie adresem tej sieci. Ostatni adres jest adresem rozgłoszeniowym (broadcast). Wszystkie inne adresy mogą być przydzielane komputerom w sieci. Najczęściej pierwszy lub ostatni adres jest przydzielany routerowi.
Tablica routingu Tablica routingu zawiera informacje jądra na temat tego jak przesyłać pakiety na ich miejsce przeznaczenia. Poniżej - przykładowa tablica routingu z komputera znajdującego się w sieci lokalnej o adresie 192.168.50.x/24. Adres 192.168.50.1 (również w tej sieci) jest interfejsem routera dla sieci korporacyjnej 172.20.x.x/16, Adres 192.168.50.254 (również w tej sieci) jest interfejsem routera dla internetu. #route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 127.0.0.0 * 255.0.0.0 U 0 0 2 lo 192.168.50.0 * 255.255.255.0 U 0 0 137 eth0 172.20.0.0 192.168.50.1 255.255.0.0 UG 1 0 7 eth0 default 192.168.50.254 0.0.0.0 UG 1 0 36 eth0 Ruch do sieci 127.x.x.x będzie przesyłany poprzez lo, interfejs zwrotny. Ruch do komputerów z sieci lokalnej będzie przesyłany przez eth0. Ruch do sieci korporacyjnej będzie przesyłany przez bramkę 192.168.50.1 również przez et Ruch do internetu będzie kierowany przez bramkę 192.168.50.254 również przez eth0.
Konfiguracja interfejsu Narzędzia z pakietu net-tools ifconfig route Pakiet iproute ip Wyświetlenie aktualnego stanu routingu. # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.0.0 U 0 0 0 eth0 default 192.168.0.1 255.255.255.255 UG 0 0 0 eth0
Konfiguracja interfejsu Wyświetlenie stanu interfejsów sieciowych # ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:23363 errors:0 dropped:0 overruns:0 frame:0 TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:13479541 (12.8 MiB) TX bytes:20262643 (19.3 MiB) Interrupt:9 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:230172 errors:0 dropped:0 overruns:0 frame:0 TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:22685256 (21.6 MiB) TX bytes:22685256 (21.6 MiB) ZADANIE: zmienić adres IP interfejsu eth0 z 192.168.0.3 na 192.168.0.111 oraz ustawić eth0 by przesyłane były przez niego dane do sieci 10.0.0.0 poprzez 192.168.0.1.
Konfiguracja interfejsu ZADANIE: zmienić adres IP interfejsu eth0 z 192.168.0.3 na 192.168.0.111 oraz ustawić eth0 by przesyłane były przez niego dane do sieci 10.0.0.0 poprzez 192.168.0.1. Krok 1 – wyłączenie interfejsu #ifconfig eth0 inet down #ifconfig Brak informacji o eth0 #route Brak wpisów w tablicy routingu Krok 2 – ustawienie nowego adresu IP #ifconfig eth0 inet up 192.168.0.111 netmask 255.255.0.0 broadcast 192.168.255.255 Krok 3 – Wpis do tablicy routingu # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0
Konfiguracja interfejsu Program ip wyświetla składnię swoich poleceń gdy jest uruchamiany z argumentem help. #ip link help Usage: ip link set DEVICE { up | down | arp { on | off } | dynamic { on | off } | multicast { on | off } | txqueuelen PACKETS | name NEWNAME | address LLADDR | broadcast LLADDR | mtu MTU } ip link show [ DEVICE ] Przykłady użycia ip: #ip link show #ip route list #ip link set eth0 down #ip addr del dev eth0 local 192.168.0.3 #ip addr add dev eth0 local 192.168.0.111/16 broadcast 192.168.255.255 #ip link set eth0 up #ip route add dev eth0 to 10.0.0.0/8 src 192.168.0.111 via 192.168.0.1
Konfiguracja interfejsu Zmiany w konfiguracji sieci znikają po restarcie komputera. Zmiany należy zapisywać w pliku /etc/network/interfaces Przykładowa zawartość auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 90.98.95.180 netmask 255.255.255.192 network 90.98.95.128 broadcast 90.98.95.191 gateway 90.98.95.129 iface lo inet loopback - podnosi urządzenie loopbacka auto eth0 - automatycznie podnosi kartę eth0 przy starcie systemu iface eth0 inet static - określa początek konfiguracji sesji dla danej karty sieciowej - static - sami podajemy ustawienia sieci - dhcp - serwer dhcp przydziela nam adres Resetowanie ustawień sieci # /etc/init.d/networking restart
Konfiguracja interfejsu Przykładowa zawartość pliku /etc/network/interfaces do pracy z serwerem DHCP auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp Polecenie odświeżające adres IP z serwera DHCP # dhclient eth0 Możliwość uruchomienia dodatkowego skryptu podczas uruchamiania lub wyłączania interfejsu auto eth0 iface eth0 inet dhcp up /sciezka/do/skryptu_on down /scieska/do/skryptu_off
Konfiguracja interfejsu Tworzenie aliasu (dwa różne adresy IP na jednej karcie sieciowej) Załóżmy, że komputer jest w sieci 192.168.0.x/24. Teraz chcemy podłączyć go do Internetu używając tej samej karty i adresu publicznego dostarczanego przez DHCP iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 iface eth0:0 inet dhcp Interfejs eth0:0 jest interfejsem wirtualnym. Jego rodzicem jest eth0.
Konfiguracja interfejsu Konfiguracja interfejsu bezprzewodowego Wi-Fi iface eth0 inet dhcp wireless-essid myessid wireless-key 123456789e Konfiguracja interfejsu PPPoE (modem szerokopasmowy) Wymaga zainstalowania usługi pppoeconf apt-get install pppoeconf Edycja pliku /etc/network/interfaces iface eth0 inet ppp provider mojisp
Nazwa hosta Linux często potrzebuje identyfikacji poprzez nazwę. Do tych celów hostname jest zarządzany przez jądro. Skrypt startowy /etc/init.d/hostname.sh ustawia nazwę komputera podczas uruchamiania systemu (używając polecenia hostname) i przetrzymuje ją w /etc/hostname. Ten plik powinien zawierać tylko nazwę komputera, a nie jego pełną nazwę domenową. # hostname debian Nazwa pocztowa (mailname) – używana przez programy związane z pocztą elektroniczną Plik /etc/mailname zawiera tę nazwę zakończoną nową linią. Nazwa pocztowa jest zazwyczaj jedną z pełnych domenowych nazw komputera (fully qualified domain name). # cat /etc/mailname debian.lodz.mm.pl
Usługa rozpoznawania nazw DNS DNS jest systemem typu klient-serwer, który zamienia nazwy na podstawie danych z serwerów nazw tak by nazwa była powiązana z adresem IP i innymi właściwościami komputera. Wyświetlenie pierwszej pełnej nazwy domenowej znalezionej dla lokalnego komputera przez program rozwiązujący nazwy: $ hostname --fqdn debian.lodz.mm.pl Resolver zajmuje się odszukiwaniem informacji o tym jaki adres IP jest powiązany z konkretną nazwą domeny To w jaki sposób resolver rozwiązuje nazwy jest zdefiniowane w linii hosts pliku konfiguracyjnego /etc/nsswitch.conf. Ta linia zawiera usługi, które powinny być użyte do rozwiązania nazwy: np. dns, files, nis, nisplus. Dopóki używana jest usługa files, zachowanie resolvera definiuje również plik konfiguracyjny /etc/hosts. # cat /etc/nsswitch.conf . . . hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Usługa rozpoznawania nazw DNS zachowanie resolvera definiuje również plik konfiguracyjny /etc/resolv.conf # cat /etc/resolv.conf nameserver: 212.51.207.67 nameserver: 212.51.192.2 Plik może zawierać m. in. listę adresów IP serwerów nazw z którymi będzie nawiązywany kontakt w celu rozwiązania nazwy. Lista ta może być modyfikowana w czasie działania systemu automatycznie przez dhclient. Włączenie buforowania rozwiązanych nazw # dnsmasq
Usługi sieciowe w Linuksie Serwery sieciowe najczęściej instalowane są jako usługi systemu operacyjnego (demony). Lista skryptów uruchamiających usługi znajduje się w katalogu /etc/init.d/ Polecenie startujace usługę # /etc/init.d/nazwa_usługi start Skrypty startowe usług często pozwalają także na sprawdzenie statusu usługi # /etc/init.d/nazwa_usługi status Zatrzymanie usługi # /etc/init.d/nazwa_usługi stop Ponowne uruchomienie usługi # /etc/init.d/nazwa_usługi restart
Usługi sieciowe w Linuksie – WWW Najpopularniejszym serwerem WWW jest Apache, dostępny dla wielu platform i rozprowadzany w pakietach httpd. Serwer Apache bardzo często jest wykorzystywany do wyświetlania stron WWW napisanych w języku PHP, także z wykorzystaniem serwera baz danych MySQL. Instalacja: #apt-get install apache2 php5 php-pear mysql-server-5.0 php5-mysql Uruchomienie serwera WWW: #/etc/init.d/apache2 restart Uruchomienie serwera MySQL: #/etc/init.d/mysql restart
WWW – parametry Parametry konfiguracyjne serwera Apache znajdują się pliku tekstowym /etc/httpd/conf/httpd.conf Parametry konfiguracyjne PHP znajdują się w pliku /etc/php5/apache2/php.ini Strony internetowe znajdują się w katalogu /var/www
FTP Konta użytkowników FTP FTP – protokół służący do transmisji tekstu i plików binarnych w Internecie. Działa na bazie protokołu TCP/IP, wykorzystując do transmisji danych port 20, natomiast do kontroli transmisji port 21. Protokół ten działa na podstawie architektury klient-serwer. Użytkownik łączy się z serwerem FTP za pomocą klienta FTP. Dostępny jest wbudowany klient FTP pracujący w trybie tekstowym, operacje wykonuje się, wpisując odpowiednie polecenia. Klienta FTP zawierają także przeglądarki internetowe oraz menedżery plików, np. Midnight Commander. Konta użytkowników FTP Dostęp do zasobów serwera można otrzymać, jeżeli użytkownik posiada na tym serwerze konto lokalne. Większość serwerów FTP oferuje również dostęp publiczny – tzw. anonimowy Po zalogowaniu się na konto anonimowe użytkownik jest przenoszony do katalogu głównego usługi FTP. (/var/ftp) Po zalogowaniu się na konto lokalne na serwerze użytkownik jest przenoszony do katalogu domowego (/home/użytkownik)
Polecenia klienta FTP Komendy, których można użyć po uruchomieniu klienta FTP open adres_serwera - połączenie z serwerem lcd katalog - ustawienie lokalnego katalogu roboczego pwd - wyświetlenie bieżącego katalogu na serwerze ls - wyświetlenie listy plików get nazwa_pliku - pobranie pliku z serwera mget plik1 plik2 … - pobranie kilku plików z serwera put nazwa_pliku - wysłanie pliku na serwer mput plik1 plik2 … - wysłanie kilku plików na serwer delete nazwa_pliku - usunięcie pliku z serwera mdelete plik1 plik2 … - usunięcie kilku plików z serwera disconnect - rozłączenie się z serwerem quit - wyjście z programu
Serwer proFTPd Instalacja pakietów Uruchamianie / wyłączanie serwera apt-get install proftpd Uruchamianie / wyłączanie serwera # /etc/init.d/proftpd start # /etc/init.d/proftpd stop # /etc/init.d/proftpd reload Plik konfiguracyjny serwera /etc/proftpd/proftpd.conf
Usługa telnet Telnet pozwala uzyskać dostęp do konsoli tekstowej (shella) zdalnego serwera i wykonywać na nim polecenia wszystkie polecenia. Dane w sesjach telnetu są przesyłane bez szyfrowania, co naraża użytkownika na przechwycenie i podsłuchanie transmisji. Dlatego nie należy przesyłać telnetem haseł i innych poufnych danych. Ze względu na bezpieczeństwo za pomocą telnetu nie można zalogować się na konto użytkownika root. Telnet jest usługą działającą w architekturze klient-serwer. Klient jest dołączony do każdego systemu operacyjnego. Oprogramowanie serwera nie jest instalowane w domyślnej konfiguracji i nie będziemy go instalować. # apt-get install telnetd # /etc/init.d/inetd restart
Usługa SSH Aby wykorzystać możliwość zdalnego logowania, zachowując przy tym bezpieczeństwo haseł, został stworzony protokół ssh (Secure Shell). Protokół ssh umożliwia połączenie się użytkownika ze zdalnym systemem, tak jak w przypadku telnetu, ale sesja jest szyfrowana.
Usługa SSH Protokół ssh opiera się na kryptografii klucza publicznego. Do korzystania z ssh potrzebne są dwa klucze: publiczny oraz prywatny. Klucz publiczny jest powszechnie dostępny, klucz prywatny musi być dobrze chroniony. Każda kombinacja klucz prywatny/klucz publiczny jest niepowtarzalna. Klucz prywatny nie jest przesyłany przez sieć. Gdy dane są zaszyfrowane za pomocą klucza publicznego, odszyfrować je można tylko za pomocą klucza prywatnego tego użytkownika (ssh regularnie zmienia swój prywatny klucz, tak aby dane były inaczej szyfrowane co kilka minut). Protokół ssh pracuje w architekturze klient-serwer. W celu nawiązania połączenia z serwerem za pomocą ssh należy wpisać polecenie ssh konto@nazwa_serwera Przykładowo polecenie ssh root@192.168.0.224 spowoduje nawiązanie połączenia za pomocą protokołu ssh z komputerem o adresie 192.168.0.224 i zalogowanie użytkownika root (po poprawnym wpisaniu hasła). Podczas pierwszego nawiązania połączenia między komputerami jest generowana para kluczy zgodnie z algorytmem szyfrowania RSA.
Konfiguracja SSH w Linuksie Instalacja # apt-get install ssh Zmiana konfiguracji /etc/ssh/sshd_config Aby zabezpieczyć dodatkowo nasz komputer polecam zmianę parametru „Port” na inną najlepiej z zakresu od 2000 W celu edycji banera powitalnego (treść wyświetlana przy zalogowaniu) edytujemy plik: /etc/issue.net Aby przeładować usługę ssh, po zmianie ustawień możemy posłużyć się poleceniem # /etc/init.d/ssh restart