Pokazywanie postów oznaczonych etykietą Packet Tracer. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Packet Tracer. Pokaż wszystkie posty

środa, 31 sierpnia 2011

Packet Tracer: Network Address Translation

 NAT czyli Network Address Translation tak naprawdę umożliwia większości z nas dostęp do Internetu. To właśnie dzięki niemu nasz lokalny adres IP (np. 192.168.1.111) jest tłumaczony na adres globalny, który to widzą np. serwery sieciowe. Jednak to co jest ważniejsze to fakt, że NAT (a raczej PAT) umożliwia wielu urządzeniom jednoczesną komunikację z "zewnętrznym światem" przy użyciu pojedynczego globalnego adresu IP.

Jednak nic tak nie wspomaga nauki jak bodźce wizualne :) Dlatego też przygotowałem taki mały projekt sieci wykorzystującej różne odmiany mechanizmu NAT:

A jak sama translacja działa w praktyce? Router przy wykorzystaniu tablicy translacji podmienia docelowy/źródłowy (w zależności od kierunku przesyłania) adres IP w nagłówku pakietu, dzięki czemu odzwierciedla on aktualną "przestrzeń adresów". By lepiej zrozumieć polecam krótką prezentację w formie filmiku.



A jak taka tablica translacji wygląda? Cóż możemy ją obejrzeć wpisując w konsoli w trybie uprzywilejowanym (#) polecenie:
show ip nat translations



Nim jednak przejdziemy do omówienia tych różnych odmian translacji to słów parę o ogólnej konfiguracji routera. Otóż by NAT w ogóle chciał działać konieczne jest określenie, który interfejs jest "wewnątrz" (inside), a który "na zewnątrz" (outside) sieci, której adresy chcemy tłumaczyć. Informację tą przekazujemy routerowi wpisując w konfiguracji interfejsów kolejno
ip nat inside
dla interfejsu wewnętrznego oraz
ip nat outside
dla interfejsu zewnętrznego.

Po ustawieniu tej podstawowej informacji możemy zacząć konfigurację sposobu translacji.

Statyczna translacja adresów sieciowych
Jest to odmiana translacji, w której każdy wpis musi zostać ustawiony ręcznie. Z tego też powodu w zastosowaniach życia codziennego metoda ta nadaje się jedynie do udostępnienia "na zewnątrz" serwerów lub innych urządzeń, z którymi chcemy nawiązywać łączność z maszyn znajdujących się poza naszą siecią.

Konfiguracja:
ip nat inside source static (IP wewnętrzny) (IP zewnętrzny)
ip nat inside source static (tcp/udp) (IP wewnętrzny) (port wewnętrzny) (IP zewnętrzny) (port zewnętrzny)

Wydruk z tablicy translacji:
Warte zauważenia jest to, że komunikaty pochodzące z jednego komputera używają tego samego adresu IP globalnego. Dodatkowo na końcu wydruku pojawia się de facto lista zdefiniowanych translacji statycznych (zaznaczona na zielono).

NAT z PAT
NAT z PAT to domyślny sposób translacji umożliwiający łączenie się przez jeden adres IP przez wiele maszyn.

Konfiguracja składa się z dwóch etapów. Napoczątku należy utworzyć listę dostępu, która będzie mówić routerowi, które adresy należy tłumaczyć (oczywiście można użyć rozszerzonych list ACL):
access-list (numer listy) permit any
Po jej utworzeniu możemy już ustawić samą translację:
ip nat inside source list (numer list) interface (nazwa interfejsu) overload
Warto zauważyć, że jeśli nie podamy słówka "overload" to Packet Tracer i tak je automatycznie doda do konfiguracji (dotyczy to jednak tylko definiowania NAT z wykorzystaniem interfejsu).

Wydruk z tablicy translacji:
 Jak widać wszystkie maszyny lokalne używają tego samego adresu IP (czerwony kolor), ale różnych numerów portów (zielony).

NAT z PAT przy użyciu wielu adresów IP
Podobnie jak w powyższej metodzie tak i tu wiele maszyn może korzystać z jednego zewnętrznego adresu IP. To co jest "nowego" to właśnie mnogość adresów, które są wykorzystywane, gdy pierwszemu zabranie wolnych portów.

Konfiguracja składa się z trzech etapów.  Poza omówioną powyżej konfiguracją listy dostępu musimy jeszcze utworzyć pulę adresów IP, które router będzie mógł przydzielać:
ip nat pool (nazwa puli) (początkowy adres IP) (końcowy adres IP) netmask (maska podsieci)
Samą translację zaś konfigurujemy następująco:

ip nat inside source list (numer listy) pool (nazwa puli) overload

Wydruk z tablicy translacji jest praktycznie taki sam jak przy NAT z PAT. Jedyna różnica polega na tym, że gdy skończą się wolne porty na pierwszym adresie IP to router zaczyna używanie kolejnego adresu z puli.

NAT przy użyciu wielu adresów IP
Ta metoda jest w zasadzie podobna do poprzednich, z tą różnicą, że tutaj każda maszyna używa tylko jednego adresu IP. Można zatem powiedzieć, że jest to taki dynamiczny odpowiednik zwykłej statycznej translacji.

Konfiguracja wygląda identycznie jak w przypadku powyższym (NAT z PAT z wieloma adresami). Jedyna zmiana to brak słówka "overload":
ip nat inside source list (numer listy) pool (nazwa puli)

Wydruk z tablicy translacji:
 Tablica translacji jak widać jest bardzo podobna do tej ze statycznego tłumaczenia adresów i różni się jedynie tym, że przed wykonaniem translacji nie mamy możliwości stwierdzenia, który adres globalny zostanie przypisany do danego adresu lokalnego.


Chcących przetestować działanie NAT na "żywym" organizmie zapraszam do pobrania pliku z konfiguracją sieci: link (PT wersja 5.3)

środa, 13 lipca 2011

Packet Tracer: Access Control List

Tematem tego wpisu są listy dostępu, za pomocą których to możemy dowolnie filtrować ruch sieciowy przechodzący przez poszczególne routery. Istotnym jest fakt, że listy dostępu o ile mogą być definiowane globalnie (dla całego routera) to są używane lokalnie na interfejsach. Co więcej listy osobno przypisuje się dla pakietów przychodzących ("inbound") i wychodzących ("outbound") danego interfejsu. Samo zaś określenie "lista" wzięło się z możliwości łączenia wielu wpisów odnoszących się do kontroli dostępu w pojedynczy obiekt - właśnie listę. Wpisy te można w dowolnym momencie dodawać do już używanych list, co sprawia np. blokowanie nowych adresów IP bardzo łatwą i szybką czynnością.
Jak więc widać listy kontroli dostępu są potężnym narzędziem umożliwiającym szczegółową kontrolę ruchu. By jednak łatwiej zrozumieć działanie list dostępu posłużymy się prostym przykładem sieci (PT wersja 5.3):
Mała przykładowa "sieć"
To co na powyższym obrazku od razu rzuca się w oczy to strzałki opisane jako "IN" oraz "OUT". Strzałki te pokazują kierunek ruchu pakietów, a opisy mówią o opcji konfiguracji odpowiedzialnej za moment filtrowania (inbound/outbound).
W powyższym przykładzie zastosowano tylko kilka list, których zadaniem było wytworzenie przykładowych środowisk:
  • PC0 może komunikować się z routerem i jednocześnie nie może z PC1
    • ACL na interfejsie Fa0/0
      interface FastEthernet0/0
       ip address 192.168.1.1 255.255.255.0
       ip access-group 100 in
       duplex auto
       speed auto
      !
      access-list 100 deny ip host 192.168.1.2 host 192.168.2.2
      access-list 100 permit ip any any 
    • ACL na interfejsie Fa1/0
      interface FastEthernet1/0
       ip address 192.168.2.1 255.255.255.0
       ip access-group 1 out
       duplex auto
       speed auto
      !
      access-list 1 deny host 192.168.1.2
      access-list 1 permit any
  • PC1 może komunikować się z dowolną maszynę w sieci 192.168.1.0/24, ale nie może z routerem (na żadnym interfejsie)
    interface FastEthernet1/0
     ip address 192.168.2.1 255.255.255.0
     ip access-group 120 in
     duplex auto
     speed auto
    !
    access-list 120 deny ip 192.168.2.0 0.0.0.255 host 192.168.2.1
    access-list 120 deny ip 192.168.2.0 0.0.0.255 host 192.168.1.1
    access-list 120 permit ip any any 
Przykłady te nie są z pewnością niczym wyszukanym i przedstawiają jedynie podstawowe możliwości ACL oferowanych przez Packet Tracer. Dla porównania złożoności komend poniżej zamieszczone zostało całe drzewko możliwości komendy access-list (możliwe do pobrania po kliknięciu).
Packet Tracer CLI Info: ACL
Warto również wspomnieć, iż listy domyślnie blokują każdy pakiet, który nie jest dozwolony (stąd polecenia "permit ip any any"), toteż lista zdefiniowana następująco:
access-list 3 deny 192.168.0.0 0.0.255.255
w praktyce nie tylko zablokuje wszelki ruch z podsieci 192.168.0.0/16, ale również jakikolwiek ruch przechodzący przez interfejs z włączoną listą w ustalonym kierunku. Tak więc lista ta jest generalnie równoważna wpisowi:
access-list 3 deny any
Jeśli jednak dodamy wpis:
access-list 3 permit any
to lista zacznie blokować jedynie ruch pochodzący ze wskazanej podsieci.

Co ciekawe zachowanie to nie zawsze jest emulowane poprawnie w starszych wersjach Packet Tracera o czym należy pamiętać przy konfigurowaniu sieci w oparciu o wyniki z tegoż programu.

niedziela, 19 czerwca 2011

Packet Tracer: Redistribute RIP + OSPF

Tak jakoś przy tworzeniu projektu na sieci komputerowe dłużej nad tym problemem musiałem się pochylić. Co ciekawe nie tyle z racji błędnej metody, ale z racji problemów Pacet Tracera ^.^ Bo jakże wytłumaczyć fakt, że raz jedna konfiguracja nie działa, a za chwilę po wyczyszczeniu trasowania RIPem i ustawienia wszystkiego identycznie już działać zaczyna?

Tak czy inaczej niechaj wpis ten będzie taką małą pomocą dla tych wszystkich, którzy na ten sam problem natrafią - pamiętajcie jak nie działa to skonfigurujcie to samo od nowa ;>




A teraz trochę CLI i opisu sieci, której logiczny schemat wygląda tak:


Generalnie mamy 3 sieci, w których po lewej stronie rutera 1 zastosowano OSPF, a po prawej RIP. To czym się różnią to sposób konfiguracji:
  • 1sza sieć jest podzielona na podsieć dla rutingu z RIPem (200.100.2.0) i na podsieć dla rutingu z OSPF (200.100.1.0)
  • 2ga sieć cały ruting prowadzi w jednej podsieci (200.101.1.0) i używa wildcardów na OSPF 0.0.0.255
  • 3cia sieć jest de facto tym co 2ga, z tą różnicą, że wildcardy na OSPF są równie 0.0.0.3, więc ustawione dla każdej podsieci z osobna
 I przykładowy listening z konfiguracji routerów dla drugiej sieci:
Router0
interface FastEthernet0/0
 ip address 192.169.1.1 255.255.255.0
 duplex auto
 speed auto
!
interface Serial0/0
 ip address 200.101.1.2 255.255.255.252
!
router ospf 7
 log-adjacency-changes
 network 192.169.1.0 0.0.0.255 area 0
 network 200.101.1.0 0.0.0.255 area 0

Router1
interface Serial0/0
 ip address 200.101.1.1 255.255.255.252
 clock rate 4000000
!
interface Serial0/1
 ip address 200.101.1.5 255.255.255.252
!
router ospf 7
 log-adjacency-changes
 redistribute rip 
 passive-interface Serial0/1
 network 200.101.1.0 0.0.0.255 area 0
!
router rip
 version 2
 redistribute ospf 7 metric 3 
 passive-interface Serial0/0
 network 200.101.1.0

Router2
interface FastEthernet0/0
 ip address 192.169.2.1 255.255.255.0
 duplex auto
 speed auto
!
interface Serial0/0
 ip address 200.101.1.6 255.255.255.252
 clock rate 4000000
!
router rip
 version 2
 network 192.169.2.0
 network 200.101.1.0

i tablice trasowania:

Router0
C    192.169.1.0/24 is directly connected, FastEthernet0/0
O E2 192.169.2.0/24 [110/20] via 200.101.1.1, 00:08:32, Serial0/0
     200.101.1.0/30 is subnetted, 2 subnets
C       200.101.1.0 is directly connected, Serial0/0
O       200.101.1.4 [110/128] via 200.101.1.1, 00:08:32, Serial0/0

Router1
O    192.169.1.0/24 [110/65] via 200.101.1.2, 00:08:17, Serial0/0
R    192.169.2.0/24 [120/1] via 200.101.1.6, 00:00:10, Serial0/1
     200.101.1.0/30 is subnetted, 2 subnets
C       200.101.1.0 is directly connected, Serial0/0
C       200.101.1.4 is directly connected, Serial0/1

Router2
R    192.169.1.0/24 [120/3] via 200.101.1.5, 00:00:02, Serial0/0
C    192.169.2.0/24 is directly connected, FastEthernet0/0
     200.101.1.0/30 is subnetted, 2 subnets
R       200.101.1.0 [120/1] via 200.101.1.5, 00:00:02, Serial0/0
C       200.101.1.4 is directly connected, Serial0/0

(pogrubione trasy poznano dzięki redystrybucji)

A na koniec jeszcze link do pliku z tą siecią: link (PT wersja 5.3)