Rutowanie i przełączanie w sieciach komputerowych
Transkrypt
Rutowanie i przełączanie w sieciach komputerowych
Rutowanie i przełączanie w sieciach komputerowych Zadanie 1 Piotr Tomczyk Paweł Tarasiuk 16 sierpnia 2013 1 1 Wstęp Wszystkie polecenia wprowadzono w systemie Linux Ubuntu 12.10 zainstalowanym w środowisku VirtualBox (z użyciem NAT). 1 2 user@ubuntu−VB: ~ $ uname −s r v Linux 3.5.0 −17 − g e n e r i c #28−Ubuntu SMP Tue Oct 9 1 9 : 3 2 : 0 8 UTC 2012 2 Używając odpowiednich programów zbadać dostępność różnych hostów Ćwiczenie polega na zbadaniu dostępności wybranych serwerów. Najoczywistszym narzędziem do sprawdzania dostępności jest ping, który wysyła pakiety ICMP ECHO_REQUEST do hostów sieciowych i wypisuje informacje na temat odebranych odpowiedzi. 2.1 1 2 3 4 5 6 7 8 9 10 user@ubuntu−VB: ~ $ p i n g 1 0 . 0 . 2 . 2 −c4 PING 1 0 . 0 . 2 . 2 ( 1 0 . 0 . 2 . 2 ) 5 6 ( 8 4 ) b y t e s o f data . 64 b y t e s from 1 0 . 0 . 2 . 2 : icmp_req=1 t t l =63 time =0.367 64 b y t e s from 1 0 . 0 . 2 . 2 : icmp_req=2 t t l =63 time =0.576 64 b y t e s from 1 0 . 0 . 2 . 2 : icmp_req=3 t t l =63 time =0.541 64 b y t e s from 1 0 . 0 . 2 . 2 : icmp_req=4 t t l =63 time =0.477 Hosta znajdujący się w domenie p.lodz.pl user@ubuntu−VB: ~ $ p i n g edu . p . l o d z . p l −c4 PING edu . p . l o d z . p l ( 2 1 2 . 1 9 1 . 9 1 . 2 1 ) 5 6 ( 8 4 ) b y t e s o f 64 b y t e s from proxy . edu . p . l o d z . p l ( 2 1 2 . 1 9 1 . 9 1 . 2 1 ) : 64 b y t e s from proxy . edu . p . l o d z . p l ( 2 1 2 . 1 9 1 . 9 1 . 2 1 ) : 64 b y t e s from proxy . edu . p . l o d z . p l ( 2 1 2 . 1 9 1 . 9 1 . 2 1 ) : 64 b y t e s from proxy . edu . p . l o d z . p l ( 2 1 2 . 1 9 1 . 9 1 . 2 1 ) : data . icmp_req=1 icmp_req=2 icmp_req=3 icmp_req=4 t t l =63 t t l =63 t t l =63 t t l =63 time =162 time =154 time =151 time =147 ms ms ms ms −−− edu . p . l o d z . p l p i n g s t a t i s t i c s −−− 4 p a c k e t s t r a n s m i t t e d , 4 r e c e i v e d , 0% p a c k e t l o s s , time 3005ms r t t min/ avg /max/mdev = 1 4 7 . 7 7 6 / 1 5 4 . 1 9 4 / 1 6 2 . 3 5 6 / 5 . 3 6 0 ms 2.3 1 2 3 4 5 6 7 8 9 10 ms ms ms ms −−− 1 0 . 0 . 2 . 2 p i n g s t a t i s t i c s −−− 4 p a c k e t s t r a n s m i t t e d , 4 r e c e i v e d , 0% p a c k e t l o s s , time 2999ms r t t min/ avg /max/mdev = 0 . 3 6 7 / 0 . 4 9 0 / 0 . 5 7 6 / 0 . 0 8 1 ms 2.2 1 2 3 4 5 6 7 8 9 10 Host znajdujący się w tej samej podsieci Host znajdujący się poza granicami kraju user@ubuntu−VB: ~ $ p i n g g o o g l e −p u b l i c −dns−a . g o o g l e . com −c4 PING g o o g l e −p u b l i c −dns−a . g o o g l e . com ( 8 . 8 . 8 . 8 ) 5 6 ( 8 4 ) b y t e s o f data . 64 b y t e s from g o o g l e −p u b l i c −dns−a . g o o g l e . com ( 8 . 8 . 8 . 8 ) : icmp_req=1 64 b y t e s from g o o g l e −p u b l i c −dns−a . g o o g l e . com ( 8 . 8 . 8 . 8 ) : icmp_req=2 64 b y t e s from g o o g l e −p u b l i c −dns−a . g o o g l e . com ( 8 . 8 . 8 . 8 ) : icmp_req=3 64 b y t e s from g o o g l e −p u b l i c −dns−a . g o o g l e . com ( 8 . 8 . 8 . 8 ) : icmp_req=4 t t l =63 t t l =63 t t l =63 t t l =63 time =143 time =166 time =161 time =135 ms ms ms ms −−− g o o g l e −p u b l i c −dns−a . g o o g l e . com p i n g s t a t i s t i c s −−− 4 p a c k e t s t r a n s m i t t e d , 4 r e c e i v e d , 0% p a c k e t l o s s , time 3004ms r t t min/ avg /max/mdev = 1 3 5 . 2 2 7 / 1 5 1 . 6 7 6 / 1 6 6 . 0 3 3 / 1 2 . 7 3 2 ms Zgodnie z oczekiwaniami, czas odpowiedzi pochodzącej od hosta z tej samej podsieci był znacznie (w naszym przypadku, ponad dwieście razy) krótszy, niż w przypadku hostów pochodzących z innych sieci. Natomiast wybrany host znajdujący się poza granicami Polski dał porównywalne czasy odpowiedzi z hostem domeny p.lodz.pl. 2 3 Zbadać własny adres IP Własny adres IP jest jedną z informacji podawanych przez narzędzie ifconfig. Zaproponowane poniżej polecenie wypisuje interesujące nas linie, wybrane spośród informacji o wszystkich włączonych interfejsach sieciowych. 1 2 3 user@ubuntu−VB: ~ $ i f c o n f i g | g r e p " i n e t addr " i n e t addr : 1 0 . 0 . 2 . 1 5 Bcast : 1 0 . 0 . 2 . 2 5 5 i n e t addr : 1 2 7 . 0 . 0 . 1 Mask : 2 5 5 . 0 . 0 . 0 4 Mask : 2 5 5 . 2 5 5 . 2 5 5 . 0 Zbadać własny adres fizyczny Stosując składnię podobną jak w poprzednim poleceniu, wybraliśmy te linie spośród wyjścia polecenia ifconfig, które zawierają informacje o adresach fizycznych. 1 2 user@ubuntu−VB: ~ $ i f c o n f i g | g r e p "HWaddr" eth0 Link encap : E t h e r n e t HWaddr 0 8 : 0 0 : 2 7 : a4 : 5 6 : 2 c 5 Wyświetlić tablicę rutingu Tablicę rutingu można odczytać za pomocą polecenia route. Zastosowany parametr powoduje numeryczne wypisanie adresów IP nawet wtedy, gdy znane są nazwy zawartych w tablicy rutingu hostów. 1 2 3 4 5 6 user@ubuntu−VB: ~ $ r o u t e −n K e r n e l IP r o u t i n g t a b l e Destination Gateway 0.0.0.0 10.0.2.2 10.0.2.0 0.0.0.0 169.254.0.0 0.0.0.0 6 Genmask 0.0.0.0 255.255.255.0 255.255.0.0 Flags UG U U Metric 0 1 1000 Ref 0 0 0 Use 0 0 0 Iface eth0 eth0 eth0 Zbadać adres fizyczny i IP bramy domyślnej Informacje o adresie fizycznym oraz IP bramy domyślnej można odczytać z systemowego bufora arp za pomocą polecenia arp. 1 2 3 user@ubuntu−VB: ~ $ arp 1 0 . 0 . 2 . 2 Address HWtype 10.0.2.2 ether 7 HWaddress 52:54:00:12:35:02 F l a g s Mask C Iface eth0 Zmienić zawartość pliku hosts. Wykazać rezultaty zmiany. W systemach uniksopodobnych lokacją pliku hosts jest /etc/hosts. Po ręcznym dodaniu do tego pliku informacji o przyporządkowaniu nazwy mnemonicznej do adresu IP, będziemy mogli łączyć się ze wskazanym hostem za pomocą zdefiniowanej przez siebie nazwy. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 user@ubuntu−VB: ~ $ c a t / e t c / h o s t s 127.0.0.1 localhost 127.0.1.1 ubuntu−VB # The f o l l o w i n g l i n e s a r e d e s i r a b l e f o r IPv6 c a p a b l e h o s t s ::1 ip6 −l o c a l h o s t ip6 −l o o p b a c k f e 0 0 : : 0 ip6 −l o c a l n e t f f 0 0 : : 0 ip 6 −m c a s t p r e f i x f f 0 2 : : 1 ip 6 −a l l n o d e s f f 0 2 : : 2 ip 6 −a l l r o u t e r s user@ubuntu−VB: ~ $ p i n g f t i m s p i n g : unknown h o s t f t i m s user@ubuntu−VB: ~ $ p i n g f t i m s . p . l o d z . p l −c1 PING f t i m s . p . l o d z . p l ( 2 1 2 . 5 1 . 2 2 0 . 2 5 0 ) 5 6 ( 8 4 ) b y t e s o f data . 64 b y t e s from pomocnik . i c s . p . l o d z . p l ( 2 1 2 . 5 1 . 2 2 0 . 2 5 0 ) : icmp_req=1 t t l =63 time =145 ms 3 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 −−− f t i m s . p . l o d z . p l p i n g s t a t i s t i c s −−− 1 p a c k e t s t r a n s m i t t e d , 1 r e c e i v e d , 0% p a c k e t l o s s , time 0ms r t t min/ avg /max/mdev = 1 4 5 . 0 7 8 / 1 4 5 . 0 7 8 / 1 4 5 . 0 7 8 / 0 . 0 0 0 ms user@ubuntu−VB: ~ $ sudo bash −c " echo ’ 2 1 2 . 5 1 . 2 2 0 . 2 5 0 f t i m s ’ >> / e t c / h o s t s " [ sudo ] password f o r u s e r : user@ubuntu−VB: ~ $ p i n g f t i m s PING f t i m s ( 2 1 2 . 5 1 . 2 2 0 . 2 5 0 ) 5 6 ( 8 4 ) b y t e s o f data . 64 b y t e s from f t i m s ( 2 1 2 . 5 1 . 2 2 0 . 2 5 0 ) : icmp_req=1 t t l =63 time =167 ms 64 b y t e s from f t i m s ( 2 1 2 . 5 1 . 2 2 0 . 2 5 0 ) : icmp_req=2 t t l =63 time =174 ms 64 b y t e s from f t i m s ( 2 1 2 . 5 1 . 2 2 0 . 2 5 0 ) : icmp_req=3 t t l =63 time =184 ms 64 b y t e s from f t i m s ( 2 1 2 . 5 1 . 2 2 0 . 2 5 0 ) : icmp_req=4 t t l =63 time =417 ms ^C −−− f t i m s p i n g s t a t i s t i c s −−− 4 p a c k e t s t r a n s m i t t e d , 4 r e c e i v e d , 0% p a c k e t l o s s , time 3005ms r t t min/ avg /max/mdev = 1 6 7 . 2 4 1 / 2 3 6 . 0 1 3 / 4 1 7 . 8 7 8 / 1 0 5 . 1 7 6 ms Krótkie objaśnienie: w linii (1) wypisany na ekran został aktualny plik hostów, w którym nie znajdował się adres „ftims”, co widać przy próbie wysłania pinga na ten adres (11). Po ustaleniu (13) i dopisaniu (20) odpowiedniego adresu IP z etykietką „ftims”, adres jest już widoczny dla systemu (22). 8 1 2 3 4 Zbadać z jakich serwerów DNS korzysta host user@ubuntu−VB: ~ $ c a t / e t c / r e s o l v . c o n f # Dynamic r e s o l v . c o n f ( 5 ) f i l e f o r g l i b c r e s o l v e r ( 3 ) g e n e r a t e d by r e s o l v c o n f ( 8 ) # DO NOT EDIT THIS FILE BY HAND −− YOUR CHANGES WILL BE OVERWRITTEN nameserver 1 2 7 . 0 . 1 . 1 Niestety adres 127.0.1.1 nie dostarcza nam zadowalającej informacji. Jak wspomniano we wstępie polecenia wykonywane są na systemie Ubuntu, który do zarządzania siecią używa programu NetworkManager, dlatego też do niego należy odwołać się, aby uzyskać adres zewnętrznego serwera DNS, z którego korzysta system: 1 2 user@ubuntu−VB: ~ $ nm−t o o l | g r e p DNS DNS : 192.168.44.1 Uzyskany adres sprawdzamy za pomocą polecenia dig, którego wynik potwierdza, że jest to działający adres serwera DNS. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 user@ubuntu−VB: ~ $ d i g @192 . 1 6 8 . 4 4 . 1 f t i m s . edu . p . l o d z . p l ; <<>> DiG 9 . 8 . 1 − P1 <<>> @192 . 1 6 8 . 4 4 . 1 f t i m s . edu . p . l o d z . p l ; ( 1 s e r v e r found ) ; ; g l o b a l o p t i o n s : +cmd ; ; Got answer : ; ; −>>HEADER<<− opcode : QUERY, s t a t u s : NOERROR, i d : 22463 ; ; f l a g s : q r rd r a ; QUERY: 1 , ANSWER: 2 , AUTHORITY: 0 , ADDITIONAL : 0 ; ; QUESTION SECTION : ; f t i m s . edu . p . l o d z . p l . ; ; ANSWER SECTION : f t i m s . edu . p . l o d z . p l . proxy . edu . p . l o d z . p l . ;; ;; ;; ;; 80973 43186 IN A IN IN CNAME A proxy . edu . p . l o d z . p l . 212.191.91.21 Query time : 37 msec SERVER: 1 9 2 . 1 6 8 . 4 4 . 1 # 5 3 ( 1 9 2 . 1 6 8 . 4 4 . 1 ) WHEN: Tue Mar 5 0 0 : 3 3 : 5 3 2013 MSG SIZE r c v d : 86 4