czyli najczęściej zadawane pytania o Cisco z odpowiedziami po polsku
Łukasz Bromirski
<lukasz@bromirski.net>
(koordynator)
v0.99(4)
30/01/2006 23:53:21
FAQ, jak sama nazwa wskazuje, to zbiór najczęściej zadawanych pytań, wraz z odpowiedziami na nie. Naszą ambicją jest zebrać w tym jednym dokumencie maksimum użytecznych i przydatnych informacji, nie tylko dla profesjonalistów, ale również dla ludzi, którzy sprzęt Cisco widzą pierwszy raz w życiu.
Jak to przyjęło się w dokumentach tego rodzaju - możesz się z nami skontaktować. Na co dzień pracujemy jednak zawodowo i zwykle po prostu nie mamy czasu na odpowiadanie na pytania. Nie zdziw się zatem, jeśli na pytanie dotyczące Cisco, sieci (albo co gorsza, takie, na które odpowiedź znajduje się w tym FAQ) czy innego tematu nie dostaniesz odpowiedzi, skierujemy Cię do google.com albo odpowiedź będzie niezbyt przyjemna.
Dokument ten rozpowszechniany jest w nadziei, że będzie użyteczny, ale BEZ ŻADNEJ GWARANCJI; nawet bez implikowanej gwarancji RĘKOJMI lub PRZYDATNOŚCI DO KONKRETNEGO ZASTOSOWANIA.
Krótko i po ludzku mówiąc, zebrane tu informacje wcale nie muszą być prawdziwe. Jeśli w wyniku ich zastosowania np. Twoja firma straci miliony złotych - to nie była nasza wina. Bardzo nam przykro - staraliśmy się podać pewne informacje w dobrej wierze. Zastanów się zatem wielokrotnie zanim postanowisz coś kupić, włączyć lub (s|prze)konfigurować!.
Materiał zawarty w tym FAQ może być dystrybuowany tylko na zasadach określonych w Open Publication License, v1.0 lub późniejszej (ostatnia wersja jest obecnie dostępna pod adresem http://www.opencontent.org/openpub/).
Znaków towarowych firm, w szczególności firmy Cisco Systems, użyto tylko w celu identyfikacji produktów.
Namawiamy do darmowego kopiowania i dystrybuowania (sprzedawania lub rozdawania) tego dokumentu w dowolnym formacie. Wymagamy jednak, by poprawki i/lub komentarze przekazywać bezpośrednio na adres listy pocztowej, lub na adres koordynatora projektu - Łukasza Bromirskiego.
Oryginał tego dokumentu w najnowszej wersji znajduje się pod adresem: http://lukasz.bromirski.net/docs/cisco/cisco_faq.html.
Koordynator tego FAQ pracuje nad uruchomieniem publicznie dostępnego serwera CVS.
Koordynator tego FAQ pracuje nad uruchomieniem publicznie dostępnego serwera CVS.
Najlepiej zacząć od polskich stron:
Następnie udać się oczywiście na największą stronę główną:
Powinieneś zgłosić się do firmy, która wykonuje projekty w oparciu o sprzęt Cisco. Najprościej będzie zadzwonić na numer linii konsultacyjnej Cisco Polska (0 801 340 755). Konsultant, w zależności od wielkości projektu, zaproponuje pomoc inżynierów Cisco Polska, sam przedstawi pomysł na budowę sieci i listę sprzętu, lub skieruje Cię do firm, które zajmują się profesjonalnymi usługami.
Aby skontaktować się z Cisco TAC (Technical Assistance Center) skorzystaj z listy dostępnej pod adresem: http://www.cisco.com/warp/public/687/Directory/DirTAC.shtml.
Generalnie, europejski Cisco TAC dostępny jest pod numerem telefonu +32 2 704-58-69 (niestety, trzeba posługiwać się językiem angielskim)lub mailem tac@cisco.com.
Pamiętaj jednak, że:
Aby skorzystać z tej pomocy, musisz posiadać wykupiony kontrakt serwisowy - SmartNET lub SmartSpares.
Musisz znać rodzaj sprzętu, o którym z Cisco TAC chciałbyś porozmawiać, jego numer seryjny i jeśli to możliwe - posiadać jak najdokładniejsze informacje o nim (zwykle na początku rozmowy inżynier TAC poprosi o zrzucenie do pliku wyniku działania polecenia `show tech-support', więc warto od razu mieć go pod ręką).
Inżynierowie Cisco TAC z reguły nie pomagają w konfiguracji połączenia Internetowego, list kontroli dostępu czy nie zaprojektują Ci odpowiednio sieci. Postaraj się wykonać jak najdokładniejszy troubleshooting zanim poprosisz o pomoc.
Najszybszą i darmową (zwykle) pomoc znaleźć można na listach usenetowych:
pl.comp.networking - polska, dotycząca nie tylko sprzętu Cisco
comp.dcom.sys.cisco - w języku angielskim, dotycząca tylko sprzętu Cisco
fido7.ru.cisco - w języku rosyjskim, dotycząca tylko sprzętu Cisco
Trochę bardziej zaawansowane zagadnienia pojawiają się na listach, na które trzeba się zapisać. Są to:
http://www.prenumerata.pl/wwsympa.fcgi/info/isp-tech - skupia wielu ludzi, którzy znają Cisco i inny sprzęt od podszewki
https://puck.nether.net/mailman/listinfo/cisco-nsp - prowadzona w języku angielskim, dla ISP
http://forum.cisco.com/eforum/servlet/NetProf?page=main - fora dyskusyjne Cisco oraz archiwa sesji pytań i odpowiedzi
Dla zwykłych użytkowników, Cisco udostępnia bardzo okrojony zestaw oprogramowania, osiągalny pod adresem http://www.cisco.com/public/sw-center/.
Aby móc używać stale najnowszego oprogramowania, powinieneś do swojego urządzenia wykupić kontrakt SmartNET. Jeśli pozyskałeś urządzenie "szarym kanałem", jak nazywa się sprzęt nie sprzedany oficjalnie w Polsce tylko sprowadzony, będziesz miał problem z uzyskaniem legalnie nowszego/poprawionego oprogramowania. Dla sprzętu sprowadzanego i pozyskiwanego w ten sposób Cisco w Polsce nie prowadzi żadnego wsparcia projektowego/wdrożeniowego.
Pamiętaj również, że licencja Cisco uniemożliwia dzielenie się oprogramowaniem ze znajomymi, ani odsprzedaż urządzeń z zainstalowanym oprogramowaniem.
Tak, wystarczy że użytkownik końcowy urządzenia zarejestruje się na stronie o adresie https://www.cisco.com/pcgi-bin/Software/Crypto/crypto_main.pl?prod_refer=pix3des. Kod aktywacyjny umożliwiający szyfrowanie 3DES i AES (od PIX OS 6.3) otrzyma e-mailem.
Open Sourceowa grupa COSI (Cisco Centric Open Source Initiative) prowadzi projekt, w ramach którego zbiera najciekawsze narzędzia do wszelakiego sprzętu Cisco. Z ideą działania grupy i z narzędziami stworzonymi przez jej członków, możesz zapoznać się pod adresem http://cosi-nms.sourceforge.net/.
Na początek zapoznaj się z CCO, czyli Cisco Connection Online. Jest to sekcja strony http://www.cisco.com/univercd/home/home.htm, będąca naprawdę kopalnią wiedzy - zarówno o danych fabrycznych produktów, jak i konfiguracji poszczególnych zagadnień czy zaleceniach Cisco.
Drugim, bardzo bogatym i obszernym miejscem, są prezentacje z corocznych spotkań oranizowanych przez Cisco, nazywanych Networkers. Poniżej lista lokacji, z których ściągnąć można w formacie PDF prezentacje z poszczególnych lat:
2002: http://www.cisco.com/networkers/nw02/post/presentations.html
2003 USA: http://www.cisco.com/networkers/nw03/post/presos.html
2003 Johannesburg: http://www.networkersafrica.com/nw03/POST_EVENT/PRESENTATIONS/Breakout_sessions/default.asp
2004 Brisbane: https://www.conveneit.com/secure/cisco_networkers/client/default.asp?pg=4
2004 Nowy Orlean: http://www.cisco.com/go/networkersonline2004
I na koniec - wiele odpowiedzi i często spotykanych konfiguracji, znaleźć można posługując się (jak zwykle, gdy masz wątpliwości) wyszukiwarką google.
Niestety, polskie wydawnictwa poskąpiły dobrych książek o Cisco. Z wartych kupienia i dostępnych w języku polskim wymienić należy:
"Routery Cisco. Czarna księga", ISBN: 83-7197-286-5, wydawnictwo Helion (http://helion.pl/ksiazki/rcisbb.htm)
"Routery Cisco w praktyce", ISBN: 83-7197-214-8, wydawnictwo Helion (http://helion.pl/ksiazki/rcisco.htm)
"Cisco. Receptury", ISBN: 83-7361-330-7, wydawnictwo Helion (http://helion.pl/ksiazki/cisrec.htm)
Zdecydowanie nie polecam tłumaczeń książek Cisco Press wydawnictwa Mikom. Aby zorientować się w jakości wydawanych przez nich książek, wystarczy skorzystać z przeglądarki Google. Dodatkowo, koordynator tego FAQ (Łukasz Bromirski) miał osobistą nieprzyjemność współpracować z tym wydawnictwem przy tłumaczeniu dwóch książek.
Generalnie, z wydawnictw zagranicznych, warto zainteresować się firmowym wydawnictwem Cisco Press), oraz książkiami wydawnictw Syngress i Sybex. Bardzo dobre są również książki wydawane w wydawnictwie O'Reilly (ale to chyba akurat oczywiste).
Jeśli zajmujesz się sieciami, warto w swojej biblioteczce posiadać minimum:
Pozostałe rekomendacje ściśle związane są ze specjalizacją, którą się zajmujesz - książek o sieciach jest mnóstwo.
Najwygodniej jest wykonać obraz drugiej płyty (np. programem CloneCD czy Nero), następnie zainstalować jeden z wielu programów umożliwiających wirtualizację napędów CD/DVD - polecam Virtual Deamon i wskazać mu ten plik jako wirtualny napęd CD. Pozostanie jedynie zmienić literkę, przypisaną w konfiguracji programu wyświetlającego dokumentację. W domyślnej instalacji, plik ten znajduje się w katalogu c:\cisco i nazywa search.ini. Należy otworzyć go za pomocą ulubionego edytora tekstowego, znaleźć ciąg znaków SourceDrive i po znaku równa się wpisać literę wirtualnego napędu.
W mojej instalacji, oryginalny plik miał taki wpis:
SourceDrive=E:
Ponieważ mój wirtualny dysk CD zainstalował się pod literą F:, zmieniłem ten wpis na:
SourceDrive=F:
Teraz wystarczy uruchomić plik autorun.exe z wirtualnego napędu, by uruchomić DocumentationCD bez potrzeby posiadania płytki w napędzie.
Jeśli możesz uruchomić lokalny serwer Apache, nie ma z tym żadnego problemu. Pozostaje tylko przekonać przeglądarki, żeby odpakowały sobie "w locie" zawartość serwowanych stron. Do pliku konfiguracyjnego Apache dodaj:
Alias /cisco/ /gdzie_zamontowałeś_cd/ <Directory /gdzie_zamontowałeś_cd> Options Indexes AllowOverride None order deny,allow deny from all allow from localhost </Directory> <Location /cisco/cc/> AddEncoding x-gzip htm pdf </Location>
Teraz uruchom przeglądarkę i wpisz adres: http://localhost/cisco/home/home.htm.
Na CCO, w sekcji Cisco IOS: - dokumentacja od 11.3, 12.0, 12.1, 12.2 i 12.3.
Dla Cisco IOS 11.3: http://www.cisco.com/en/US/products/sw/iosswrel/ps1826/prod_command_reference_list.html
Dla Cisco IOS 12.0: http://www.cisco.com/en/US/products/sw/iosswrel/ps1828/prod_command_reference_list.html
Dla Cisco IOS 12.1: http://www.cisco.com/en/US/products/sw/iosswrel/ps1831/prod_command_reference_list.html
Dla Cisco IOS 12.2: http://www.cisco.com/en/US/products/sw/iosswrel/ps1835/prod_command_reference_list.html
Dla Cisco IOS 12.3: http://www.cisco.com/en/US/products/sw/iosswrel/ps5187/prod_command_reference_list.html
Cisco Systems podzieliło swoją ścieżkę certyfikacji na trzy poziomy:
Associate
Professional
Expert
Dodatkowo istnieje niezależna grupa certyfikatów opisująca konkretne specjalności (Cisco Qualified Specialist, CQS).
Aby otrzymać tytuł CCNA, czyli Cisco Certified Network Associate musisz posiadać ogólną wiedzę o sieciach, oraz podstawową o sprzęcie Cisco. Dostępny jest również tytuł CCDA, Cisco Certified Design Associate, bardziej ukierunkowany na projektowanie sieci w oparciu o sprzęt Cisco.
Aby uzyskać tytuł CCNA, możesz albo zdać jeden egzamin 640-801, albo rozłożyć sobie testy na dwa egzaminy: 640-821 i 640-811. Aby uzyskać tytuł CCDA, musisz zdać egzamin 640-861.
CCNA i CCDA są ważne przez trzy lata. Aby się recertyfikować należy zdać aktualny egzamin CCNA/CCDA lub zdobyć stopień Professional.
Dostępne są cztery tytuły na tym poziomie, w zależności od specjalizacji:
CCNP, czyli Cisco Certified Network Professional
Musisz posiadać ważny certyfikat CCNA, oraz posiadać dokładną wiedzę o budowie sieci typu dial-up, działaniu i konfiguracji protokołów routingu, metodyce rozwiązywania problemów oraz dużych sieciach LAN.
Wymagane egzaminy (zdawane w dowolnej kolejności): 642-801 BSCI, 642-811 BCMSN, 642-821 BCRAN i 642-831 CIT lub zamiast egzaminów 642-801 i 642-811 zdać jeden egzamin 642-891 Composite i pozostałe dwa.
CCNP jest ważny przez trzy lata. Aby się recertyfikować, należy zdać aktualny egzamin Composite.
CCDP, czyli Cisco Certified Design Professional
Podobnie jak CCDA skupiaja się na projektowaniu sieci. CCDP wymaga ważnego certyfikatu CCDA.
Wymagane egzaminy (zdawane w dowolnej kolejności): 642-801 BSCI, 642-811 BCMSN, 642-871 ARCH, lub 642-891 Composite i 642-871 ARCH.
CCDP jest ważny przez trzy lata. Aby się recertyfikować, należy zdać aktualny egzamin Composite.
CCIP, czyli Cisco Certified Internetwork Professional
Certyfikat dla pracowników dostawców Internetowych, wymaga posiadania ważnego certyfikatu CCNA.
Wymagane egzaminy (zdawane w dowolnej kolejności): 642-801 BSCI, 642-641 QoS, 642-661 BGP i 640-910 MPLS, lub 642-801 BSCI, 642-641 QoS i 642-691 BGP+MPLS.
CCIP jest ważny przez trzy lata.
CCSP, czyli Cisco Certified Security Professional
Certyfikat obejmujący specjalizację w zabezpieczaniu sieci i dbaniu o ich bezpieczeństwo, a także w budowie i utrzymaniu sieci VPN. Wymaga posiadania certyfikatu CCNA lub CCIP.
Wymagane egzaminy (zdawane w dowolnej kolejności): 642-501 SECUR, 642-521 CSPFA, 642-531 CSIDS i 642-511 CSVPN, i 642-541 CSI.
CCSP jest ważny przez trzy lata.
Dostępne są cztery tytuły na tym poziomie, w zależności od specjalizacji:
CCIE R&S, czyli Cisco Certified Internetwork Expert, Routing & Switching
Elitarny certyfikat, zaświadczający o doskonałej wiedzy w dziedzinie budowy i utrzymania sieci każdej wielkości.
Wymaga zdania egzaminu 350-001, składającego się z dwóch części: pisemnego oraz w laboratorium. Bez zdania egzaminu pisemnego, nie możesz zdawać egzaminu w laboratorium.
CCIE jest ważny przez dwa lata. Aby się recertyfikować, należy zdać jeden z egzaminów pisemnych - w swojej specjalizacji lub innej.
CCIE Service Provider, czyli Cisco Certified Internetwork Expert, Service Provider
Elitarny certyfikat, zaświadczający o doskonałej wiedzy w dziedzinie budowy i utrzymania sieci, ze szczególnym naciskiem na sieci budowane przez i dla dostawców usług.
W zależności od pod-specjalizacji, CCIE SP zdaje jeden egzamin pisemny i jeden w laboratorium. Podobnie jak w przypadku CCIE R&S, porażka na etapie egzaminu pisemnego uniemożliwia zdawanie egzaminu praktycznego. Dostępne podspecjalizacje to: 350-020 Optical, 350-021 Cable, 350-022 DSL, 350-023 WAN Switching, 350-024 IP Telephony, 350-025 Dial, 351-026 Content Networking. Egzamin pisemny zawiera w połowie tematy z CCIE R&S, a w połowie z tematyki w której kandydat ma się specjalizować.
CCIE jest ważny przez dwa lata. Aby się recertyfikować, należy zdać jeden z egzaminów pisemnych - w swojej specjalizacji lub innej.
CCIE Security, czyli Cisco Certified Internetwork Expert, Security
Elitarny certyfikat, zaświadczający o doskonałej wiedzy w dziedzinie budowy i utrzymania sieci, ze szczególnym naciskiem na szeroko rozumiane bezpieczeństwo.
Wymaga zdania egzaminu 350-018, składającego się z dwóch części: pisemnego oraz w laboratorium. Bez zdania egzaminu pisemnego, nie możesz zdawać egzaminu w laboratorium.
CCIE jest ważny przez dwa lata. Aby się recertyfikować, należy zdać jeden z egzaminów pisemnych - w swojej specjalizacji lub innej.
CCIE Voice, czyli Cisco Certified Internetwork Expert, Voice
Elitarny certyfikat, zaświadczający o doskonałej wiedzy w dziedzinie budowy i utrzymania sieci, ze szczególnym naciskiem na przenoszenie głosu.
Wymaga zdania egzaminu 350-030, składającego się z dwóch części: pisemnego oraz w laboratorium. Bez zdania egzaminu pisemnego, nie możesz zdawać egzaminu w laboratorium.
CCIE jest ważny przez dwa lata. Aby się recertyfikować, należy zdać jeden z egzaminów pisemnych - w swojej specjalizacji lub innej.
Na tej stronie: http://www.cisco.com/go/certifications znajduje się spis wszystkich aktualnych egzaminów. Wystarczy wybrać jeden z nich i kliknąc na jego oznaczeniu, by otrzymać podstawowe informacje: czas trwania, orientacyjną liczbę pytań, listę zagadnień które mogą pojawić się na egzaminie oraz zalecenia dotyczące nauki przed egzaminem.
Dodatkowo, dla egzaminów CCIE dostępna jest osobna strona: http://www.cisco.com/go/ccie.
Przede wszystkim, Cisco przez swoich autoryzowanych partnerów organizuje kursy przygotowujące do konkretnego egzaminu i/lub specjalizacji.
Po drugie, wydawnictwo CiscoPress ma specjalną sekcję wydawnictw poświęconych certfyikacji: http://www.ciscopress.com/catalog/index.asp?st={E65E5189-F2F8-40AE-A827-D766D4879FDC}.
Po trzecie, wiele firm oferuje swoje materiały, mające przygotować Cię do zdania wybranego egzaminu. Najpopularniejszą firmą jest Boson (http://www.boson.com/), która oprócz samych materiałów, oferuje również różnego rodzaju narzędzia.
Nie, pod rygorem utraty certyfikacji. Cisco bardzo poważnie traktuje naruszenia NDA (ang. Non-Disclosure Agreement), który musisz podpisać przed zdawaniem każdego egzaminu.
Każdy router Cisco posiada port konsoli (port opisany niebieskim kolorem jako CONSOLE)- a kabel konsolowy dostarczany jest w pudełku z nowym urządzeniem (to ten niebieski, zakończony dwoma stykami RJ-45 lub jednym stykiem RJ-45 i jednym RS-232C DB-9).
W zależności od oprogramowania, do routera można dostać się również Telnetem (znając adres IP i ewentualnie użytkownika i hasło), przez SSH czy nawet w nowym oprogramowaniu, przez przeglądarkę (jeśli na routerze zainstalowano SDM - Secure Device Manager - dostępny za darmo - będziesz miał wygodny interfejs do funkcjonalności routera; jeśli nie, będziesz miał dostęp do podstawowych statystyk oraz panel do wykonywania poleceń).
Podobnie jak routery, PIXy również posiadają port opisany niebieskim kolorem jako CONSOLE. Do PIXa również można podłączyć się przez Telnet, SSH lub od wersji 6.0 PIX OSa - PDM, czyli PIX Device Manager. Od wersji 7.0 graficzny interfejs użytkownika to ASDM Advanced Security Device Manager.
Przełączniki niemodularne (19xx, 29xx, 3xxx) posiadają na tylnym panelu port opisany na niebiesko jako CONSOLE.
W przełącznikach modularnych 4000/4500 do modułu zarządzającego (Supervisora), można podłączyć się na dwa sposoby: konsolą, lub za pomocą Ethernetu.
Konsola na wszystkich Supervisorach (za wyjątkiem modelu I) to standardowy styk RJ-45, natomiast w Supervisorze I jest to żeński port DB-25.
Port Ethernetowy/FastEthernetowy opisany jest natomiast jako Management Port i służy tylko do zarządzania - łączności przez Telnet/SSH, zbierania informacji przez SNMP lub przesyłania obrazów z systemem. Port ten nie będzie przekazywał żadnego ruchu do innych modułów przełącznika. Dodatkowo, aby z tego portu skorzystać, należy go uprzednio skonfigurować (nadać adres IP).
Aby zarządzać urządzeniem z dwoma Supervisorami, należy podłączyć się do tego, na którym pali się dioda Active.
Supervisory posiadają standardowy port konsolowy (RJ-45). Aby zarządzać urządzeniem z dwoma Supervisorami, należy podłączyć się do tego, na którym pali się dioda Active.
Do sond IDS można podłączyć się zarówno standardowym kablem konsolowym (jest w oryginalnym opakowaniu) do portu COM1, lub po prostu dołączając zwykłą klawiaturę PS/2 i monitor.
Podobnie jak w przypadku routerów, AP dysponują opisanym na niebiesko portem konsoli. Zwróć uwagę, że w domyślnej konfiguracji wymagają zalogowania się na użytkownika `Cisco' z hasłem `Cisco'.
Spróbuj parę razy wcisnąć Enter - urządzenie po drugiej stronie powinno zwrócić prompt o login, lub po prostu od razu umożliwić wykonywanie poleceń (w zależności od konfiguracji).
Jeśli nic się nie dzieje, a jesteś pewien że kabel konsolowy jest dobry, możliwe, że port ustawiony jest inaczej niż domyślnie (dla przypomnienia, prędkość 9600, 8 bitów danych, bez parzystości i 1 bit stopu). Spróbuj ustawienia 38400 8N1, 57600 8N1 lub 115200 8N1 w swoim terminalu.
Jeśli jesteś podłączony przez konsolę, domyślnie otrzymujesz informacje o zdarzeniach na routerze. Np.:
router# conf t router(config)# exit router# %SYS-5-CONFIG_I: Configured from console by console
Jeśli natomiast jesteś zalogowany przez Telnet lub SSH, musisz wprost włączyć kierowanie komunikatów na Twoją konsolę poleceniem `terminal monitor':
router# terminal monitor
Standardowo do sprawdzenia, z jakim urządzeniem mamy do czynienia, poza oczywistą inspekcją wizualną (jeśli pracujemy zdalnie niemożliwą) jest wydanie polecenia `show version'.
Poniżej przykładowy wynik takiego polecenia wraz z interpretacją wyniku:
Cisco Internetwork Operating System Software IOS (tm) C1700 Software (C1700-Y-M), Version 12.1(22a), RELEASE SOFTWARE (fc1) Copyright (c) 1986-2004 by cisco Systems, Inc. Compiled Fri 23-Jan-04 20:40 by cmong Image text-base: 0x80008088, data-base: 0x8060A5D4
Z tego fragmentu możemy dowiedzieć się, że mamy do czynienia z routerem (na urządzenie załadowano Cisco IOS, na PIXach mamy do czynienia z PIX OSem, na dużych przełącznikach Catalyst z CatOSem).
Po drugie, oprogramowanie należy do serii przeznaczonej dla routerów serii 1700 (C1700 Software), w wersji 12.1.22a (Version 12.1(22a)) i zawierającym funkcjonalność "IP" (C1700-Y-M). O tym jak rozszyfrować funkcjonalność oprogramowania odpowiadamy w dalszych pytaniach.
c1720 uptime is 10 minutes System returned to ROM by power-on System image file is "flash:c1700-y-mz.121-22a.bin"
Kolejna linijka określa, jak dawno resetowano router (uptime is 10 minutes - 10 minut temu), co było przyczyną restartu (power-on - włącznik, inne opcje to reload - restart wymuszony poleceniem reload), oraz jaki i skąd Cisco IOS został załadowny (flash:c1700-y-mz.121-22a.bin, z pamięci Flash i nazywa się c1700-y-mz.121-22a.bin).
cisco 1720 (MPC860) processor (revision 0x501) with 12288K/4096K bytes of memory. Processor board ID JAD01234567 (123456789), with hardware revision 0000 M860 processor: part number 0, mask 32
Mamy do czynienia z routerem Cisco 1720 (Cisco 1720), sterowanym procesorem MPC860. Router posiada łącznie 16MB pamięci RAM (12288K/4096K bytes of memory, wartości należy zsumować). Dodatkowo, można sprawdzić numer seryjny urządzenia (JAD01234567).
1 FastEthernet/IEEE 802.3 interface(s) 1 Serial(sync/async) network interface(s)
Router posiada jeden interfejs FastEthernet (standardowo zabudowany na routerach 1700) oraz jeden interfejs szeregowy (może pracować zarówno w trybie asynchronicznym jak i synchronicznym).
32K bytes of non-volatile configuration memory. 4096K bytes of processor board System flash (Read/Write)
Dodatkowo, router posiada 32kB pamięci nieulotnej (NVRAM), w której przechowuje się aktualną i startową konfigurację, oraz 4MB pamięci Flash (używanej do przechowywania Cisco IOS, certyfikatów itp.).
Configuration register is 0x2102
Tzw. rejestr konfiguracyjny, kontrolujący pewne aspekty startu i pracy routera ustawiony został na wartość heksdecymalną 2102. O znaczeniu poszczególnych bajtów tego rejestru napisano niżej.
Domyślnie, wydanie nieznanego routerowi polecenia, powoduje próbę połączenia się z nim. Wygląda to mniej więcej tak:
router# zlepolecenie Translating "zlepolecenie"...domain server (255.255.255.255) Translating "zlepolecenie"...domain server (255.255.255.255) Translating "zlepolecenie"...domain server (255.255.255.255) % Unknown command or computer name, or unable to find computer address
Takie zachowanie routera można zmienić, wyłączając rozwiązywanie nazw:
router(config)# no ip domain lookup
Na urządzeniach pracujących pod kontrolą Cisco IOS (routery, PIXy od wersji 6.0 i część przełączników) używa się do tego celu polecenia:
router# copy running-config startup-config
Ewentualnie, w bardzo starych Cisco IOS, w PIX OS starszych niż 6.0 i w urządzeniach pracujących pod kontrolą CatOS (przełączniki) poleceniem:
router# write memory
Na urządzeniach używających NVRAMu (routery i część przełączników), wystarczy wydać polecenie:
router# erase nvram
Na PIXach natomiast:
pix# write erase
Wszystko zależy od systemu operacyjnego.
Dla systemu Windows polecam program SecureCRT - obsługuje zarówno połączenia konsolowe jak i przez Telnet/SSH. Standardowo obecny w Windowsach program Hyperterminal jest bardzo ubogi i niewygodny w użytkowaniu.
Dla systemów Linux/BSD i połączeń przez konsolę polecam minicom, a przez telnet/ssh - natywnie wbudowane w te systemy programy.
Ponownie - wszystko zależy od systemu operacyjnego.
Dla systemu Windows polecam serwer TFTP firmy SolarWinds (darmowy): http://support.solarwinds.net/updates/New-customerFree.cfm. Jeśli chodzi o serwer FTP - polecam program BulletProof FTP Server (http://www.bpftpserver.com/) ale nie jest on niestety darmowy.
Dla systemów Linux/BSD zarówno serwer tftp jak i ftp dostarczane są zwykle z dystrybucją/w systemie podstawowym. Prawdopodobnie będzie jednak trzeba je wprost aktywować w konfiguracji demona inetd lub xinetd.
Masz aktywną usługę wczytywania konfiguracji z sieci. Wyłącz ją, pisząc:
router(config)# no service config
Na potrzeby przykładów, książek i innych opracowań IETF wydzielił z globalnej puli adresów IPv4 pewne zakresy, których nie przydzielono nigdzie w Internecie i nie powinny się one w nim pojawić (a jesli się już nawet pojawią, powinny zostać zignorowane lub odfiltrowane). Adresy te nazywane są prywatnymi, rzadziej niezarejestrowanymi.
Spis adresów aktualnie przydzielonych do celów testowych i na prywatny użytek, znajduje się w RFC 1918 (http://www.ietf.org/rfc/rfc1918.txt). Dla jasności, chodzi o adresy:
10.0.0.0 - 10.255.255.255 (10.0.0.0/8) 172.16.0.0 - 172.31.255.255 (172.16.0.0/12) 192.168.0.0 - 192.168.255.255 (192.168.0.0/16)
UWAGA!: Pojęcie "adresy nieroutowalne" jest błędne - nie ma czegoś takiego. Każdy adres jest jak najbardziej routowalny, po prostu przeznaczeniem tego konkretnego zestawu adresów nie jest znalezienie się w Internecie.
Tak, ale w przypadku routerów serii 1600, 1700, oraz niektórych linii Cisco IOS, możesz potrzebować funkcjonalności "Plus" - najlepiej skorzystaj z Feature Navigatora, zanim założysz, że posiadasz tą funkcję.
Serwer DHCP uruchamia się, definiując pule adresowe. Jeśli np. masz pojedynczą sieć i nie chcesz kojarzyć adresów IP z adresami MAC, możesz napisać:
router(config)# ip dhcp excluded-address 192.168.0.1 Adres 192.168.0.1 nie zostanie przypisany - zwykle chodzi o zarezerwowanie adresu interfejsu routera router(dhcp-config)# ip dhcp pool MojeDHCPLAN Tworzymy pulę o nazwie MojeDHCPLAN router(dhcp-config)# network 192.168.0.0 255.255.255.0 Przydzielamy adresy z puli 192.168.0.0/24 (za wyjątkiem zarezerwowanego wyżej adresu 192.168.0.1) router(dhcp-config)# default-router 192.168.0.1 Oprócz adresu IP dla stacji, serwujemy domyślną bramkę (zwykle interfejs routera) router(dhcp-config)# dns-server IP_serwera_DNS1 IP_serwera_DNS2 itp. ...oraz od razu serwery DNS.
Jeśli natomiast chcesz konkretnej stacji/serwerowi przydzielić konkretny adres IP, możesz posłużyć się mapowaniem MAC-IP:
router(config)# ip dhcp pool SerwerPlikow router(dhcp-config)# host 192.168.0.10 255.255.255.0 Adres 192.168.0.10 z maską /24 przydzielony zostanie... router(dhcp-config)# client-identifier 000c.09cb.9813 ...hostowi z adresem MAC 00:0C:09:CB:98:13 router(dhcp-config)# default-router 192.168.0.1 Oprócz adresu IP dla stacji, serwujemy domyślną bramkę (zwykle interfejs routera) router(dhcp-config)# dns-server IP_serwera_DNS1 IP_serwera_DNS2 itp. ...oraz od razu serwery DNS.
W definicji interfejsu należy podać po prostu:
router(config)# interface FastEthernet 0/0 router(config-if)# ip address dhcp
Wystarczy w zasadzie, na interfejsie podłączonym do sieci, w której znajduje się stacja pobierająca informacje z serwera DHCP wydać polecenie:
router(config)# interface FastEthernet 0/0 router(config-if)# ip helper-address IP_serwera_DHCP
...ale to włącza przekazywanie wielu rodzajów ruchu. Możesz to zablokować, ograniczając się tylko do DHCP/BOOTP w ten sposób:
router(config)# no ip forward-protocol udp tftp router(config)# no ip forward-protocol udp dns router(config)# no ip forward-protocol udp time router(config)# no ip forward-protocol udp netbios-ns router(config)# no ip forward-protocol udp tacacs ...i dla pewności, że jest włączone: router(config)# ip forward-protocol udp bootpc
W najprostszym scenariuszu, wystarczy wydać polecenie:
router(config)# snmp-server community mojstring RO 15
...gdzie mojstring to klucz, który musi podać agent by odczytać dane, RO to tryb dostępu (tylko do odczytu, lub RW zezwalające również na zapis) i w końcu 100 to numer listy ACL kontrolującej kto może łączyć się z SNMP routera. Lista ta może mieć np. taką konstrukcję:
ip access-list standard 15 permit 192.168.0.10 permit 192.168.0.15 deny any
...co pozwoli na odczytywanie informacji tylko stacjom o adresach 192.168.0.10 i 192.168.0.15. Numer listy dostępu można pominąć, ale wtedy dostęp do SNMP routera będzie miał każdy host, który nie zostanie odfiltrowany przez ew. ograniczenia ruchowe na interfejsach!
W najprostszym scenariuszu, wystarczy wydać polecenie:
router(config)# logging buffered 128000
...gdzie 128000 to prośba o rezerwację 128kB pamięci na potrzeby bufora. Najstarsze zdarzenia zostaną nadpisane. Zawartość bufora obejrzeć można poleceniem `show log'.
Musisz wskazać od którego poziomu zdarzenia będą logowane (0 to najmniej szczegółowy poziom - tylko zdarzenia krytyczne, a 7 najbardziej szczegółowy) a następnie włączyć logowanie:
pix(config)# logging buffered 7 pix(config)# logging on
Powinieneś kolejno: wskazać host-serwer syslog (lub wiele, komunikaty będą wysyłane jednocześnie do wszystkich), ewentualnie wskazać od którego poziomu komunikaty mają być logowane (ang. severity) i jak będą identyfikowane (ang. facility), a w końcu włączyć wysyłanie komunikatów:
router(config)# logging host 192.168.0.10 router(config)# logging severity debugging router(config)# logging facility local0 router(config)# logging on
Powinieneś kolejno: wskazać host-serwer syslog (lub wiele, komunikaty będą wysyłane jednocześnie do wszystkich), wskazać od którego poziomu komunikaty mają być logowane (ang. trap X, gdzie 7 oznacza poziom debugging, czyli najbardziej szczegółowy), a w końcu włączyć wysyłanie komunikatów:
pix(config)# logging host 192.168.0.10 pix(config)# logging trap 7 pix(config)# logging on
Domyślnie routery Cisco po przeładowaniu budują od nowa tablicę indeksów interfejsów. W przypadku zmiany konfiguracji sprzętowej automatycznie poszczególne interfejsy mogą uzyskać inne indeksy. Można jednak zapisywać na stałe numerację interfejsów na pamięci flash, jeśli wydasz polecenie:
router(config)# snmp-server ifindex persist
Poleceniem:
router# clock set 16:13:00 23 feb 2004
Na mniejszych platformach, zegar nie jest jednak podtrzymywany baterią i po resecie, zostanie wyzerowany.
Za pomocą protokołu NTP (jeśli masz router serii 1600, 2500, czy 1700, NTP znajduje się dopiero w oprogramowaniu "IP Plus"). Wystarczy dodać do konfiguracji routera wskazanie serwera czasu (opłaca się wskazać wiele, router wybierze jeden, a jeśli nie będzie mógł się z nim skontaktować, wybierze kolejny z listy).
router(config)# ntp server 217.153.69.35 router(config)# ntp server 150.254.183.15
To, czy synchronizacja działa, możemy sprawdzić poleceniem `show ntp associations':
router# show ntp associations address ref clock st when poll reach delay offset disp +~217.153.69.35 .PPS. 1 585 1024 377 28.7 1.96 15.7 *~150.254.183.15 .PPS. 1 534 1024 377 31.1 -0.83 17.4 * master (synced), # master (unsynced), + selected, - candidate, ~ configured
Symbol gwiazdki przy adresie serwera oznacza, że jest on aktualnie wybrany jako serwer czasu i router zsynchronizował pomyślnie czas wg jego wskazań. Należy zauważyć, że od wskazania serwera NTP do zsynchronizowania się z serwerem może minąć od 60 do 120 sekund.
Lista serwerów NTP Stratum 1 znajduje się pod adresem http://www.eecis.udel.edu/~mills/ntp/clock1a.html a Stratum 2 pod adresem http://www.eecis.udel.edu/~mills/ntp/clock2a.html.
Jeśli Twój router nie obsługuje pełnej implementacji NTP a jedynie SNTP, konfiguracja jest analogiczna ale słowo kluczowe ntp zastępujemy sntp:
router(config)# sntp server 217.153.69.35 router(config)# sntp server 150.254.183.15
Po pierwsze upewnij się, że serwery które wskazałeś są osiągalne dla Twojego routera - najlepiej wykonaj ping z niego do kolejnych serwerów.
Po drugie sprawdź, czy nie blokujesz ruchu z routera do serwerów ACLkami - powinieneś zezwolić na ruch UDP z i do portu 123, np. w ten sposób:
ip access-list extended moj_fw_internet permit udp host 217.153.69.35 eq ntp host 169.254.10.1 eq ntp
Gdzie 169.254.10.1 to adres interfejsu publicznego Twojego routera, ACLka moj_fw_internet przypisana jest w kierunku in na tym interfejsie, a 217.153.69.35 to adres serwera NTP. Pamiętaj również, że jeśli modyfikujesz już istniejącą ACLkę, ten wpis musi znaleźć się przed każdym innym, który mógłby go zablokować.
Po trzecie w końcu upewnij się, że administrator danego serwera nie żąda uwierzytelniania poszczególnych łączących się do niego klientów.
NAT pojawił się w wersji IOS 11.2 w feature-set "IP Plus". Od wersji 12.0 cała funkcjonalność NAT dostępna jest już w standardowej wersji "IP".
W trzech krokach.
Oznaczasz interfejsy jako publiczny (ip nat outside) i jako prywatny (ip nat inside) - może być wiele zarówno publicznych jak i prywatnych. Na przykład:
router(config)# interface serial 0.99 router(config-if)# ip nat outside router(config-if)# exit router(config)# interface fastethernet 0/0 router(config-if)# ip nat inside router(config-if)# exit
Zwróć uwagę, że nazwy Twoich interfejsów mogą być inne.
Definiujesz, jak ma być wykonywany NAT - na pulę przydzielonych adresów, czy na jakiś konkretny jeden adres - najczęściej publicznego interfejsu routera. Poniżej jak zdefiniować pulę:
router(config)# ip nat pool Pula1 169.254.10.1 169.254.10.15 255.255.255.240
Na koniec określasz jaki ruch z interfejsów oznaczonych jako wewnętrzne będzie podlegał NATowaniu i na jakie adresy. Wpisy przeglądane są sekwencyjnie wg kolejności i jeśli router trafi na wpis pasujący do pakietu, nie przejrzy już wpisów późniejszych.
Poniżej przykład, w którym sieć 192.168.10.0/24 NATowana jest na zdefiniowaną wcześniej pulę, a sieć 192.168.20.0/24 na adres interfejsu serial 0.99:
! w celu wybrania ruchu z podsieci 192.168.10.0/24 definiujemy ! listę ACL: router(config)# ip access-list extended Siec10NAT router(config-acl)# permit ip 192.168.10.0 0.0.0.255 any router(config-acl)# exit ! i to samo dla sieci 192.168.20.0/24: router(config)# ip access-list extended Siec20NAT router(config-acl)# permit ip 192.168.20.0 0.0.0.255 any router(config-acl)# exit ! adresy źródłowe pasujące do ACLki Siec10NAT NATowane są na pulę ! adresów zdefiniowanych wcześniej pod nazwą Pula1: router(config)# ip nat inside source list Siec10NAT pool Pula1 overload ! ...a adresy źródłowe pasujące do ACLki Siec20NAT na adres przypisany ! do interfejsu serial 0.99 routera: router(config)# ip nat inside source list Siec20NAT interface serial 0.99 overload
Tak, taki układ nazywa się "NAT na patyku" (ang. NAT-on-a-stick). Na jednym interfejsie (zwykle Ethernetowym) obsługujesz zarówno ruch z sieci lokalnej jak i publicznej. Uważaj jednak, na aspekty bezpieczeństwa w takim układzie - zwykle w takiej topologii urządzenie dostawcy podpięte jest do koncentratora/przełącznika, a ten zarówno do routera jak i innych stacji. Oznacza to, że ktoś może zmienić sobie adres IP na stacji na publiczny i "obejść" Twój router w komunikacji z Internetem!
Na początek skonfigurujemy interfejs FastEthernet 0/0, który służyć nam będzie zarówno do obsługi sieci LAN jak i Internetu. Zakładam, że od dostawcy otrzymałeś publiczny adres 169.254.10.1, Twoją domyślną bramką jest 169.254.10.2 a sieć LAN ma numerację 192.168.0.0/24, przy czym interfejs routera w tej sieci posiada adres 192.168.0.1:
router(config)# interface FastEthernet0/0 router(config-if)# ip address 169.254.10.1 255.255.255.0 ! Adresem głównym interfejsu jest adres publiczny router(config-if)# ip address 192.168.0.1 255.255.255.0 secondary ! Dodatkowo przypisujemy do niego adres prywatny tak, by stacje ! w sieci LAN miały zapewnioną bramkę ze swojej podsieci router(config-if)# ip nat outside ! Oznaczamy interfejs jako zewnętrzny router(config-if)# ip policy route-map PetlaNAT ! ...i dodajemy do niego route-mapę, która obsługiwać będzie NAT
Teraz dodamy logiczny interfejs Loopback 0. Jest on potrzebny, ponieważ NAT na routerach Cisco wykonywany jest tylko i wyłącznie wtedy, gdy pakiet w czasie podróży przez router przechodzi przez interfejs oznaczony jako zewnętrzny (outside) i wewnętrzny (inside). Do interfejsu możesz przypisać dowolny adres, ale najlepiej żeby był to adres prywatny. W przykładzie użyjemy puli 172.16.0.1/24:
router(config)# interface Loopback0 router(config-if)# ip address 172.16.0.1 255.255.255.0 ! Przypisujemy interfejsowi adres z innej puli prywatnej router(config-if)# ip nat inside ! Oznaczamy interfejs jako wewnętrzny
Pozostaje teraz po pierwsze skonfigurować NAT, a po drugie route-mapę, która "wymusi" przejście pakietu przez dwa różnie oznaczone z punktu widzenia NATu interfejsy.
Zakładam, że NAT ma być realizowany na publiczny adres interfejsu routera:
router(config)# ip nat inside source list SiecDoNAT interface FastEthernet0/0 overload ! Wszystkie pakiety pasujące do ACL SiecDoNAT będą NATowane ! Pozostaje skonfigurować tą ACLkę: router(config)# ip access-list extended SiecDoNAT router(config-ext-nacl)# permit ip 192.168.0.0 0.0.0.255 any
A teraz konfiguracja route-mapy PetlaNAT. Każdy pakiet otrzymany z interfejsu FastEthernet 0/0 zostanie sprawdzony, czy nie pasuje do jej reguł. W naszym przypadku będzie tylko jedna - jeśli pasujesz do ACLki SiecDoNAT, musisz trafić na interfejs Loopback 0. W ten sposób ruch z sieci LAN zawsze zostanie sztucznie przerzucony na interfejs Loopback 0, gdzie dojdzie do jego zNATowania. Następnie pakiet już z publicznym adresem, zgodnie z normalnymi regułami routingu, zostanie wysłany interfejsem FastEthernet 0/0 w stronę sieci ISP:
router(config)# route-map PetlaNAT permit 10 router(config-route-map)# match ip address SiecDoNAT router(config-route-map)# set interface Loopback0
Zakładam, że chodzi o ruch na adres IP 169.254.10.10 (nasz fikcyjny adres publiczny) na port 25/tcp, i ma on trafiać do stacji gdzieś za routerem, o adresie 192.168.0.10 na ten sam port:
router(config)# ip nat inside source static tcp 192.168.0.10 25 169.254.10.10 25 extendable
Poleceniem:
router(config)# show ip nat statistics Total active translations: 0 (0 static, 0 dynamic; 0 extended) Outside interfaces: Serial 0.99 Inside interfaces: FastEthernet 0/0 [...]
Po pierwsze sprawdź (poleceniem show ip nat stat), że faktycznie masz przynajmniej jeden interfejs inside i jeden outside. Polecenie wyświetli również w ostatnich linijkach kryteria dla ruchu NATowanego - sprawdź, czy w ogóle NAT zauważa jakieś pakiety godne NATowania (pozycja hits).
Po drugie sprawdź, że nie zamieniłeś interfejsu outside z inside - być może NAT chciałby tłumaczyć adresy, ale otrzymuje ruch nie pasujący do reguł.
Po trzecie, sprawdź czy ruchu do NATowania nie blokujesz w żaden sposób na interfejsie wewnętrznym, ani wracającego na interfejsie zewnętrznym. Zweryfikuj konfigurację routingu, jeśli NATujesz sieci nie podłączone bezpośrednio do routera - być może definicja co NATować jest zbyt wąska.
Po pierwsze, sprawdź czy w ogóle posiadasz w swoim IOSie funkcjonalność SSH. Pojawiła się ona w linii 12.0 i jest obecna tylko w feature-setach posiadających funkcjonalność "IPsec" (routery), "Service Provider SSH" (większe routery, od 7xxx) oraz "Crypto" (przełączniki Catalyst). Od wersji IOS 12.3 dostępna jest na routerach w każdym IOSie (za wyjątkiem tych oznaczonych 'W/O CRYPTO') oraz od linii 12.2(x) na przełącznikach Catalyst w nowych wersjach pakowania IOSa (również za wyjątkiem tych oznaczonych 'W/O CRYPTO').
Pierwszym krokiem jest nadanie routerowi nazwy własnej i domenowej. Informacje te będą wymagane do wygenerowania kluczy: prywatnego i publicznego.
router# conf t router(config)# hostname c1760 c1760(config)# ip domain name test.pl
Teraz generujemy klucze:
c1760(config)# crypto key generate rsa The name for the keys will be: c1760.test.pl Choose the size of the key modulus in the range of 360 to 2048 for your General Purpose Keys. Choosing a key modulus greater than 512 may take a few minutes. How many bits in the modulus [512]: 1024 ! Wybraliśmy klucze o długości 1024 bitów % Generating 1024 bit RSA keys ...[OK]
W tym momencie serwer SSH zostaje włączony. Uwierzytelnianie odbywa się w oparciu o skonfigurowane, zewnętrzne bazy danych (RADIUS itp.), lub domyślnie - w oparciu o lokalną bazę użytkowników (poleceniami `username X [...]').
Dodatkowo, można ograniczyć dostęp do routera tylko do protokołu SSH, wydając na liniach wirtualnych terminali polecenie:
c1760(config)# line vty 0 15 c1760(config-vty)# transport input ssh
Poleceniem `show ip ssh':
router# show ip ssh SSH Enabled - version 1.99 Authentication timeout: 120 secs; Authentication retries: 3
Jeśli faktycznie zapisanie konfiguracji się powiodło, to najprawdopodobniej problem leży w ustawieniu rejestru konfigarcyjnego na pomijanie plików startowych. Po zalogowaniu się na router wykonaj:
router# conf t router(config)# config-register 0x2102 router(config)# exit
Rejestr konfiguracyjny, to heksdecymalna wartość, na którą składają się następujące możliwe wartości:
Bit Wartość Znaczenie 00-03 0x0000-0x000F Sposób startu urządzenia: 0x0000 - start do promptu bootstrap 0x0001 - start z obrazu przechowywanego w EPROMie 0x0002 do 0x000F - standardowy boot 06 0x0040 Zignoruj ustawienia z NVRAM (konfigurację) 07 0x0080 Wyłącz informacje wyświetlane podczas startu 08 0x0100 Wyłączona sekwencja Break. Niezależnie od tego ustawienia, przekazanie routerowi tej sekwencji podczas startu, spowoduje wejście do ROMMONa. 10 0x0400 Włączona obsługa broadcastów IP z samymi zerami 11-12 0x0800-0x1000 Ustawienie prędkości konsoli: 0x0800 - 9600 0x1000 - 115200 13 0x2000 Wystartuj z oprogramowania przechowywanego w ROMie, jeśli nie uda się wystartować z flasha/sieci 14 0x4000 Broadcasty IP nie mają dołączanych numerów sieci 15 0x8000 Włącz szczegółowe informacje diagnostyczne i pomiń konfigurację z NVRAMu
Domyślna wartość to 0x2102. Oznacza ona, że router powinien wystartować z obrazu przechowywanego w pamięci Flash i spróbować załadować konfigurację z pamięci NVRAM. Prędkość konsoli ustalona jest na 9600. Dokładnie takie samo zachowanie, ale z konsolą ustawioną na 115200 daje ustawienie rejestru konfiguracyjnego na wartość 0x3922.
Firma Boson udostępnia program, umożliwiający konfigurację rejestru w systemie Windows "wizualnie": http://download.boson.com/utils/bos_calc.exe.
VLAN, czyli Virtual LAN, to po prostu podział w warstwie drugiej sieci na wiele mniejszych domen rozgłoszeniowych. Aby ruch mógł być wymieniany pomiędzy dwoma hostami znajdującymi się w różnych VLANach, potrzebne jest urządzenie warstwy trzeciej - router. Dzisiaj bardzo często routing między VLANami realizuje się na przełącznikach, kiedyś rolę tą pełniły routery.
Istnieją standard tworzenia VLANów - zdefiniowany przez IEEE 802.1Q. Opisuje on dokładnie, jak rozszerzyć ramkę L2 aby zawrzeć w niej informacje, do którego VLANu ramka należy (są to w tzw. ramki tagowane). Połączenie, które przenosi ramki z jednocześnie wielu VLANów, nazywa się trunkiem. Cisco zdefiniowało wcześniej na swoich przełącznikach standard ISL - jest on bardzo często spotykany w starszych urządzeniach. Działa on w zasadzie tak samo jak 802.1Q, ale ramka ulega "zapakowaniu" w nową, co zwiększa czas potrzebny na przeprowadzanie operacji - i co ważniejsze, nie jest obsługiwane przez innych niż Cisco producentów.
To VLAN używany przez przełączniki do przenoszenia informacji administracyjnych (np. BPDU, CDP itp.). Domyślnie jest to VLAN 1. Porty przełączników Cisco w domyślnej konfiguracji należą właśnie do tego VLANu.
Na trunkach (niezależnie czy 802.1Q czy ISL), VLAN natywny przenoszony jest bez tagowania.
Chodzi o topologię, w której jeden interfejs routera służy do obsługi routingu z wielu sieci.
Na przykład masz 24-portowy przełącznik warstwy drugiej, dwa VLANy i chcesz jakoś przekazywać ruch między nimi w oparciu o warstwę trzecią. Najprościej będzie zdefiniować na przełączniku jeden port jako trunk 802.1Q przenoszący oba VLANy, podłączyć ten port do routera skonfigurowanego analogicznie i nadać na routerze adresy IP obu podinterfejsom.
Oto przykładowa konfiguracja interfejsu FastEthernet (pamiętaj, że obsługa 802.1Q dla większości routerów zawarta jest dopiero w feature-set "IP Plus"):
interface FastEthernet0/0 no ip address ! interface FastEthernet0/0.1 description VLAN 10, domyślna bramka dla pierwszej podsieci encapsulation dot1Q 10 ip address 192.168.10.1 255.255.255.0 ! interface FastEthernet0/0.2 description VLAN 20, domyślna bramka dla drugiej podsieci encapsulation dot1Q 20 ip address 192.168.20.1 255.255.255.0
Portu na przełączniku (tu akurat 2950), podłączonego do routera:
interface FastEthernet0/24 switchport trunk allowed vlan 10,20 switchport mode trunk no ip address spanning-tree portfast
W końcu port do którego podłączona jest stacja z VLANu 10:
interface FastEthernet0/1 switchport mode access switchport access vlan 10 no ip address spanning-tree portfast
Tak, ale od PIX OS w wersji 6.3 i tylko modele od 515 w górę (525 i 535). Dokładna ilość VLANów obsługiwanych przez PIXa związana jest z posiadaną licencją i przedstawiono ją w poniższej tabelce:
Platforma Licencja Interfejsy fizyczne Interfejsy logiczne PIX-501 - 1+4(przełącznik) 2 PIX-506/506E - 2 2 PIX-515/515E R 2+1 opcja 3 PIX-515/515E UR/FO 6 8 PIX-520/525 R 6 10 (6+4) PIX-520/525 UR/FO 8 10 PIX-535 R 6 8 PIX-535 UR/FO 10 22
Oto przykład konfiguracji PIXa 515 z VLANem na drugim porcie fizycznym:
interface ethernet0 auto ! interfejs eth0 nie jest tagowany interface ethernet1 auto ! aktywujemy interfejs eth1 interface ethernet1 vlan20 physical ! VLAN 20 przenoszony będzie nietagowany interface ethernet1 vlan30 logical ! VLAN 30 przenoszony będzie tagowany zgodnie z 802.1Q ... nameif ethernet0 outside security0 ! fizyczny interfejs eth0 podpinamy do routera ISP nameif ethernet1 inside security100 ! nietagowane ramki na fizycznym porcie eth1 należą do LANu nameif vlan30 dmz security50 ! tagowane ramki na fizycznym porcie eth1 (VLAN 30) należą do DMZtu ! Pozostaje nadanie adresów IP: ip address dmz 169.254.76.1 255.255.255.0 ip address inside 192.168.0.1 255.255.255.0 ip address outside 169.254.12.2 255.255.255.252
Poniżej przykładowe fragmenty z konfiguracji przełącznika. Fizyczny interfejs eth1 PIXa dołączono do portu FE0/6, zdefiniowanego jako trunk 802.1Q, przenoszący VLAN 30, oraz VLAN 20 jako natywny:
interface FastEthernet0/6 switchport trunk encapsulation dot1q switchport mode trunk switchport trunk allowed vlan 30 switchport trunk native vlan 20
Każdy interfejs zajmuje minimalną ilość pamięci routera. Lista interfejsów przechowywana jest w tzw. IDB, czyli Interface DataBase. W zależności od wielkości routera, a także w mniejszym stopniu od wersji Cisco IOS na nim pracującego, pojemność tej bazy różni się. Aktualna lista znajduje się tutaj: http://www.cisco.com/en/US/products/sw/iosswrel/ps1835/products_tech_note09186a0080094322.shtml
Na swoim routerze, ilość "wolnego miejsca" na dodatkowe interfejsy, możesz sprawdzić poleceniem `show idb':
router# show idb Maximum number of Software IDBs 300. In use 17. HWIDBs SWIDBs Active 13 13 Inactive 4 4 Total IDBs 17 17 Size each (bytes) 4648 1392 Total bytes 79016 23664
Powyższa informacja pochodzi z routera 1712 - widać, że router obsłuży do 300 interfejsów, z czego 17 jest już zajętych.
Posługując się poleceniem `show processes cpu':
router# show processes cpu CPU utilization for five seconds: 6%/2%; one minute: 6%; five minutes: 5% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process 1 1808 833 2170 0.00% 0.00% 0.00% 0 Chunk Manager 2 140 90945 1 0.00% 0.00% 0.00% 0 Load Meter [...]
Wartość podzielona (6%/2%) to:
6% - średnie ogólne zajęcie procesora przez ostatnie pięć sekund; jest ono sumą obciążenia wywołanego przez przerwania i procesy
2% - średnie obciążenie przez ostatnie pięć sekund związane z przerwaniami
Jak nietrudno się domyślić, pierwsza wartość minus druga wartość daje obciążenie procesora przez różnego rodzaju procesy działające na routerze (NAT, DHCP, obsługa IP, IPsec itp.).
Pozostałe dwie wartości z wydruku, to zgodnie z nazwą uśrednione obciążenie ogólne za poprzednią minutę i pięć minut.
Parę uwag co do wartości podzielonej (6%/2%):
W czasie normalnej pracy routera, obie wartości powinny być do siebie zbliżone.
Jeśli pierwsza wartość jest dużo większa od drugiej (np. widzisz na swoim routerze wartość 75%/16%), oznacza to jakiegoś rodzaju atak na router, lub istotny problem z którymś z procesów.
Jeśli oba parametry są wysokie (np. 95%/92%), router obsługuje za dużo ruchu - postaraj się zoptymalizować jego konfigurację, zweryfikować poprawność topologii swojej sieci lub wymienić router na większy.
Posługując się poleceniem `show processes cpu history'. Router pokaże trzy wykresy: za ostatnią minutę, za ostatnią godzinę i za ostatnie 72 godziny. Oś X pokazuje upływający czas, oś Y obciążenie procesora (zgrubnie), a wartości u góry wykresu - dokładne obciążenie. Np.:
router# show processes cpu history 3333333333444443333333333222244444444445555533333555553333 100 90 80 70 60 50 40 30 20 10 ***** ***** 0....5....1....1....2....2....3....3....4....4....5....5.... 0 5 0 5 0 5 0 5 0 5 CPU% per second (last 60 seconds) [...]
W ten sposób:
router# show processes cpu | exclude 0.00%__0.00%__0.00% CPU utilization for five seconds: 5%/1%; one minute: 4%; five minutes: 4% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process 5 363736 51123 7114 0.00% 0.05% 0.05% 0 Check heaps 9 34092 79729 427 0.07% 0.00% 0.00% 0 ARP Input 24 3597724 451492 7968 2.00% 1.93% 1.94% 0 TTY Background 29 9556 87956 108 0.07% 0.00% 0.00% 0 Net Input 31 183808 7682 23927 0.00% 0.03% 0.00% 0 Per-minute Jobs 40 5700 1894 3009 1.59% 0.29% 0.38% 6 SSH Process 41 1092960 1344980 812 0.63% 0.32% 0.29% 0 IP Input 59 228164 739184 308 0.07% 0.00% 0.00% 0 CEF process 62 17884 98746 181 0.00% 0.01% 0.00% 0 IP-EIGRP: PDM 116 223904 1800331 124 0.00% 0.05% 0.06% 0 COLLECT STAT COU 126 13524 7591 1781 0.00% 0.01% 0.00% 0 SNMP ENGINE 132 14680 295105 49 0.00% 0.03% 0.01% 0 IP-EIGRP: HELLO
Listę procesów z podstawowymi informacjami można sprawdzić poleceniem:
router# show processes memory Total: 78044960, Used: 13534380, Free: 64510580 PID TTY Allocated Freed Holding Getbufs Retbufs Process 0 0 254908 55980 7590192 0 0 *Init* 0 0 840 71100 840 0 0 *Sched* 0 0 18419360 7879520 20080 252348 0 *Dead* 1 0 3256 0 10100 0 0 Chunk Manager 2 0 188 188 3844 0 0 Load Meter 3 130 1288172 1196764 104264 0 0 SSH Process 4 0 188 188 6844 0 0 fastblk backgrou 5 0 65580 0 90424 0 0 EDDRI_MAIN 6 0 0 536 6844 0 0 Check heaps 7 0 9666440 7616660 619640 1091448 1447712 Pool Manager
Pierwsza linijka wydruku podaje informacje sumaryczne. Router ma ogólem 78MB pamięci użytecznej, z tego używa obecnie 13,5MB a wolne pozostaje 64MB.
Kolejne kolumny na liście to:
PID - identyfikator procesu
TTY - z którą konsolą skojarzony jest proces - większość procesów ma tutaj wartość 0, co oznacza, że skojarzone są tylko z procesem Init.
Allocated - ile historycznie proces zaallokował pamięci
Freed - ile historycznie proces zwolnił pamięci
Holding - ile aktualnie rezerwuje/używa pamięci
Natomiast bardziej konkretną informację, dotyczącą tylko pamięci, można uzyskać wydając polecenie show memory statistics:
router# show memory statistics Head Total(b) Used(b) Free(b) Lowest(b) Largest(b) Processor 631920E0 78044960 13548532 64496428 64033028 63721760 I/O 7C00000 4194304 2399272 1795032 1457520 1653884
Tutaj dodatkowo widać pamięć zarezerwowaną na operacje I/O (ang. Input/Output), czyli na komunikację z zainstalowanymi kartami interfejsów.
W ten sposób:
router# show ip route summary IP routing table name is Default-IP-Routing-Table(0) IP routing table maximum-paths is 16 Route Source Networks Subnets Overhead Memory (bytes) connected 0 4 288 544 static 32 2 2448 4624 eigrp 10 1 18 1368 2584 internal 2 2312 Total 35 24 4104 10064
W ostatniej kolumnie widać zajętość pamięci w bajtach. Zwróć jednak uwagę, że chodzi tylko o pamięć zajmowaną we wskazanej tablicy routingu (tutaj, Default-IP-Routing-Table(0), czyli tablica główna). Same procesy routingu mogą zajmować dużo więcej pamięci.
Jeśli wynik polecenia `show version' jest niewystarczający, możesz dodatkowo użyć polecenia `show diag'. Powinno ono zwrócić masę szczegółów dotyczących zainstalowanych i wykrytych poprawnie kart. Poniżej lista kart w routerze 1712:
router# show diag Slot 0: C1712 1FE 4ESW Mainboard Port adapter, 6 ports [...] WIC/VIC Slot 0: 4 Port FE Switch [...] Product (FRU) Number : WIC-4ESW= WIC/VIC Slot 1: BRI S/T - 2186 [...] Slot 3: Virtual Private Network (VPN) Module Port adapter, 1 port [...] Product (FRU) Number : MOD1700-VPN=
W nowszych IOSach pojawiło się również polecenie `show inventory', które dotyczy mniej danych technicznych, a bardziej po prostu faktycznego wyposażenia routera. Poniżej wynik działania tego polecenia na routerze 2650XM:
2650xm# show diag NAME: "2650XM chassis", DESCR: "2650XM chassis, Hw Serial#: JAE01234ABC (12345678), Hw Revision: 0x200" PID: 2650XM , VID: 0x200, SN: JAE01234RAU (12345678) NAME: "2600 Chassis Slot 0", DESCR: "2600 Chassis Slot" PID: 2600 Chassis Slot , VID: , SN: NAME: "C2600 Mainboard", DESCR: "C2600 Mainboard" PID: C2600 Mainboard , VID: 2.0, SN: 12345678 NAME: "DaughterCard Slot 0 on Card 0", DESCR: "2600 DaughterCard Slot" PID: 2600 DaughterCard Slot, VID: , SN: NAME: "WAN Interface Card - Serial (1T)", DESCR: "WAN Interface Card - Serial (1T)" PID: WAN Interface Card - Serial (1T), VID: 1.0, SN: 20512345 NAME: "Serial0/0", DESCR: "PowerQUICC Serial" PID: PowerQUICC Serial , VID: , SN: NAME: "DaughterCard Slot 1 on Card 0", DESCR: "2600 DaughterCard Slot" PID: 2600 DaughterCard Slot, VID: , SN: NAME: "AIM Container Slot 0", DESCR: "AIM Container Slot 0" PID: AIM Container Slot 0, VID: , SN: NAME: "FastEthernet0/0", DESCR: "AmdFE" PID: AmdFE , VID: , SN: NAME: "2600 Chassis Slot 1", DESCR: "2600 Chassis Slot" PID: 2600 Chassis Slot , VID: , SN:
Wydając polecenie:
switchc> show module Mod Slot Ports Module-Type Model Sub Status --- ---- ----- ------------------------- ------------------- --- -------- 1 1 2 1000BaseX Supervisor WS-X6K-SUP1A-2GE yes ok 15 1 1 Multilayer Switch Feature WS-F6K-MSFC no ok 8 8 48 10/100BaseTX Ethernet WS-X6248-RJ-45 no ok 9 9 48 10/100BaseTX Ethernet WS-X6348-RJ-45 yes ok [...] Mod Sub-Type Sub-Model Sub-Serial Sub-Hw --- ----------------------- ------------------- ----------- ------ 1 L3 Switching Engine WS-F6K-PFC SAD03462981 1.0 9 Inline Power Module WS-F6K-VPWR 1.0
Dobrym źródłem informacji, jaka dokładnie funkcjonalność znajduje się w konkretnym obrazie, jest Cisco Feature Navigator dostępny pod adresem: http://www.cisco.com/go/fn.
Niestety, dostępny jest tylko dla posiadaczy kont CCO.
Dla IOSów od 9 do 12.2 istnieją pewne reguły, opisujące co znaczy konkretna literka w nazwie. Opisano je tutaj: http://www.cisco.com/en/US/products/sw/iosswrel/ios_abcs_ios_networking_the_enterprise0900aecd800a4e14.html.
Generalnie, nazwa pliku (np. c2600-i-mz.123-1a.bin) z Cisco IOS składa się z:
Platformy, na której będzie pracować obraz (c2600 to routery Cisco serii 2600);
Funkcjonalności zawartej w obrazie (i, czyli tylko podstawowa funkcjonalność IP);
Czy obraz wykonywany jest w pamięci RAM (literka m), czy w pamięci Flash (literka f) lub z ROM (literka r) lub relokowalny (literka l). Dodatkowo, można się dowiedzieć, że obraz jest spakowany zwykłym ZIPem (literka z), lub mZIPem (literka x);
Numeru wersji Cisco IOS 123-1a czyli 12.3.1a;
Poniżej spis literek, które oznaczają funkcjonalności:
i - funkcjonalność "IP" j - funkcjonalność "Enterprise" c - funkcjonalność "Remote Access Server" d - funkcjonalność "IP/IPX/AT/DECnet" p - funkcjonalność "Service Provider" y - ograniczona funkcjonalność "IP" (bez Kerberosa, RADIUSa, NTP, OSPF, PIM, SMRP, NHRP itp.) s - funkcjonalność "Plus" o - funkcjonalność "Firewall" o3 - funkcjonalność "Firewall/IDS" x - funkcjonalność "H.323" n - funkcjonalność "IPX" k8 - obraz z szyfrowaniem CET/DES 56i - obraz z szyfrowaniem CET/DES dla obrazów na starsze platformy k9 - obraz z szyfrowaniem CET/DES/3DES (i AES, od 12.2T/12.3)
Najczęściej spotykane funkcjonalności to:
-i- = IP only -is- = IP Plus -oy- = IP Firewall (na starsze platformy) -io3- = IP/FW/IDS -x- = IP H.323 -ik8s- = IP Plus IPsec DES -ik9s- = IP Plus IPsec 3DES -ik9o3s- = IP/FW/IDS Plus IPsec 3DES -k91p- = Service Provider + SSH
Natomiast od linii 12.3 pojawiło się nowe, mające uporządkować wiele różnych (ponad 80) wersji funkcjonalności nazewnictwo. Większość funkcjonalności IP Plus weszła do obecnie podstawowego obrazu IP Base. Zaawansowane usługi bezpieczeństwa (firewall CBAC, IDS/IPS, VPNy) znajdują się teraz od feature-setu Advanced Security (od linii 12.4(4)T jest tu również protokół BGP). Funkcjonalność potrzebna w środowiskach dostawców usług znajduje się w pakiecie SP Services (m.in. protokół BGP, ale również obsługa głosu i CallManager Express). Dokładniejszy podział funkcjonalności znaleźć można w tym dokumencie:
http://www.cisco.com/en/US/products/sw/iosswrel/ps5460/index.html
Zmiany dotyczą również przełączników na mniejszych Catalystach zanikają zatem funkcjonalności SMI/EMI (lub SI/EI dla przełączników L2) a pojawiają się LAN Base, Advanced IP Services itp.
Dobrym źródłem informacji o wzajemnej kompatybilności jest Cisco Hardware-Software Matrix dostępny pod adresem: http://www.cisco.com/cgi-bin/front.x/Support/HWSWmatrix/hwswmatrix.cgi.
Niestety, dostępny jest tylko dla posiadaczy kont CCO.
Wystarczy, że wydasz polecenie `show ip arp aaaa.bbbb.cccc', gdzie ciąg aaaa.bbbb.cccc to szukany adres MAC, lub `show ip arp A.B.C.D', gdzie ciąg A.B.C.D to adres IP:
! dla adresu MAC: router# show ip arp 0000.cd0f.4feb Protocol Address Age (min) Hardware Addr Type Interface Internet 192.168.10.10 2 0000.cd0f.4feb ARPA FastEthernet0/0 ! dla adresu IP: router# show ip arp 192.168.10.10 Protocol Address Age (min) Hardware Addr Type Interface Internet 192.168.10.10 2 0000.cd0f.4feb ARPA FastEthernet0/0
Jeśli na przełączniku zainstalowano IOS, wystarczy, że wydasz polecenie `show mac-address-table | include aaaa.bbbb.cccc', gdzie ciąg aaaa.bbbb.cccc to szukany adres MAC:
switch# show mac-address-table | include 0000.cd0f.4feb 1 0000.cd0f.4feb DYNAMIC Fa0/24
Jak widać, urządzenie o tym adresie MAC wpięte jest do portu FastEthernet 0/24 na lokalnym przełączniku. Jeśli zamiast portu wskazany jest trunk - należy sprawdzić na kolejnym przełączniku, podłączonym do lokalnego wskazanym trunkiem.
Skorzystaj z kalkulatora dostępnego pod adresem http://www.cisco.com/go/powercalculator.
Rzuć okiem na router serii 830 - konkretnie interesować Cię będzie model Cisco 831, lub nawet PIX 501/506E. Pamiętaj, że PIXy nie obsługują tuneli GRE czy funkcjonalności QoS.
Jeśli jednak będziesz chciał zapewnić sieci połączenie zapasowe, musisz spojrzeć na wyższe modele.
Najmniejszy router Cisco, do którego podłączyć można V.35 to model 805. Problem polega na tym, że interfejs tego routera obsługuje taktowanie tylko do 512kbit/s, co oznacza, że nie nadaje się raczej do większości instalacji (np. Polpak-T zestawia się zwykle na prędkości 1 lub 2Mbit/s).
Jeśli zależy Ci na sprzęcie używanym (niska cena, ale pamiętaj o braku oficjalnego serwisu dla tego sprzętu!), rozejrzyj się na Allegro za routerami klasy 1601 czy 2503. Posiadają one zamontowane porty szeregowe i Ethernet, przy czym porty szeregowe mają styk DB-60. Do takiego routera potrzebujesz jeszcze kabla DTE V.35 (oryginalny kabel posiada oznaczenie CAB-V35MT). Problemem tego sprzętu jest mała wydajność - 2Mbit/s łącze obsłużą bez problemu, ale dodawanie nowej funkcjonalności (dużych list ACL, kontroli zawartości pakietów przez NBAR itp.) może znacznie zmniejszyć wydajność i spowodować rwanie się połączeń, czy problemy z ich nawiązaniem.
Najmniejszy router dostępny "z półki" to 1721, do którego w celu obsługi łącza z V.35 należy dołożyć kartę WIC-1T (jeden styk DB-60, kabel CAB-V35MT) lub WIC-2T (dwa styki Smart Serial, dwa kable CAB-SS-V35MT). Routery te posiadają obecnie standardowo po 64MB RAM i 32MB flash, co pozwala na rozbudowę w przyszłości o Cisco IOS z większą funkcjonalnością.
Jeśli myślisz o obsłudze dwóch równoległych łącz 2Mbit/s i będziesz kupował nowy router, już dzisiaj zastanów się nad routerami klasy 2600XM. Routery 2610XM, 2620XM i 2650XM posiadają po jednym FastEthernecie, a 2611XM, 2621XM i 2651XM po dwa FastEthernety. Poza nimi, konfiguracja sprzętowa jest taka sama: wszystkie posiadają jeden slot NM i dwa sloty WIC, plus slot AIM ukryty w obudowie. Routery różnią się wydajnością (2610XM/2611XM w granicach 20kpps, 2620XM/2621XM 30kpps i 2650XM/2651XM 40kpps) i domyślnie dostarczaną wielkością pamięci (2610/11/20/21XM mają po 64MB RAM i 32MB flash, 2650/51XM 128MB RAM i 32MB flash).
Cisco przewidziało specjalnie do takich celów routery 1711/1712. W cenie symbolicznie tylko wyższej od podstawowego modelu 1721 otrzymujemy router z:
"WAN"-owskim portem Ethernet, do którego możemy podłączyć np. modem DSL (zakończony Ethernetem, nie stykiem ADSL!)
cztero-portowym przełącznikiem 10/100 dla podłączenia urządzeń LAN, z obsługą VLAN-ów (a także routingu między nimi realizowanymi przez procesor routera)
analogowym portem modemowym (1711) lub ISDN BRI (1712), na którym można zrealizować połączenie zapasowe (lub główne - pełna elastyczność)
sprzętową obsługą szyfrowania DES/3DES/AES (zainstalowany moduł MOD1700VPN), co daje (wg dokumentacji) obsługę do 100 jednoczesnych tuneli VPN i przepustowość 3DES do 15 Mbit/s
oprogramowanie o funkcjonalności Firewall/IDS IPsec 3DES.
Warto zauważyć, że dzięki połączeniu VLAN-ów z oprogramowaniem Firewall da się nawet zaimplementować na tym urządzeniu prosty DMZ.
Oczywiście, jeśli takie połączenia VPN schodzą się w jakimś punkcie centralnym to musi się tam znajdować odpowiednio mocniejsze urządzenie terminujące tunele, np. koncentrator VPN, lub większy router z kartą VPN albo PIX z kartą VAC.
Generalnie, routing BGP można uruchomić nawet na routerach serii 800. Zakładamy jednak, że chodzi o instalacje z dużą siecią LAN, relatywnie dużym ruchem z i do Internetu (rzędu 4-200Mbit/s) oraz chęcią realizowania innych usług - filtrowania ruchu, NATowania itp.
Bezpiecznie będzie założyć, że potrzebujesz routera z serii 7200 - 7204VXR lub 7206VXR (odpowiednio 4 lub 6 slotów na karty interfejsów). W takim routerze powinna znaleźć się karta z procesorem sieciowym, w nomenklaturze Cisco oznaczana jako NPE. Aby uruchomić BGP i sensownie obsługiwać ruch, powinieneś obecnie wyposażyć się w moduł NPE-400 lub NPE-1G, względnie NSE-1. Karta NPE/NSE powinna mieć minimum 256MB RAM, jeśli chcesz otrzymywać pełne światowe tablice BGP.
Zajrzyj również do sekcji poświęconej routingowi BGP, aby uzyskać więcej informacji o działaniu tego protokołu, jego konfiguracji i innych zaleceniach.
Najmniejsze obecnie w sprzedaży nieroutujące przełączniki, to seria 2950. Oferowane są w wersjach bez modułów GBIC (WS-C2950-12 i WS-C2950-24, odpowiednio 12 i 24 porty 10/100), oraz z slotami na dwa moduły GBIC (WS-C2950G-12, WS-C2950G-24 i WS-C2950G-48). Dostępne są również małe modele 2940, zawierające osiem portów 10/100BaseTX oraz albo jeden port 1000BaseTX (WS-C2940-8TT), albo jeden port 100BaseFX z możliwością zamiennie wykorzystania jednego modułu SFP (WS-C2940-8TF). Dodatkowo, w sprzedaży znajdują się wersje, które zamiast slotów na moduły GBIC, mają zabudowane porty na stałe. Są to:
WS-C2950T-24 - 24 porty 10/100 + 2 porty 10/100/1000BaseT
WS-C2950T-48 - 48 portów 10/100 + 2 porty 10/100/1000BaseT
WS-C2950C-24 - 24 porty 10/100 + 2 porty 100BaseFX
WS-C2950SX-24 - 24 porty 10/100 + 2 porty 1000BaseSX
WS-C2950SX-48 - 48 portów 10/100 + 2 porty 1000BaseSX
Część przełączników może dodatkowo posiadać oprogramowanie w wersji EI (lub jest z nim sprzedawana). W porównania do standardowego SI, EI oznacza obsługę jednocześnie większej ilości VLANów (250 w porównaniu do standardowych 64), możliwość konfigurowania ograniczania pasma per port (tylko policing, nie ma shapingu), a także możliwość obsługi połączeń przez SSH (tylko w specjalnych wersjach "Crypto").
Niezależnie od wersji, przełączniki obsługują oprogramowanie CMS, czyli Cluster Management Suite, które rezyduje w pamięci flash przełącznika i umożliwia zarządzanie nim za pomocą graficznego interfejsu użytkownika.
W sprzedaży znajduje się również model 2970, który ma architekturę zbliżoną do 2950, ale wyposażony jest w 24 porty 10/100/1000BaseTX + w jednej z wersji, w uplinki GBIC.
Jeśli chodzi o przełączniki niemodularne, to w sprzedaży znajdują się przełączniki 3550 i 3750. Obie rodziny realizują routing IP z maksymalną prędkością na wszystkich portach (tzw. wire-speed). Dodatkowo mają możliwość filtrowania ruchu (zarówno wg adresów MAC i adresów IP, z dokładnością do portów TCP/UDP).
Oba modele obsługują dwie linie oprogramowania - SMI (Standard Multilayer Image) i EMI (Enhanced Multilayer Image). Wersja SMI zawiera routing IP statyczny oraz RIP obu wersji, w wersji EMI otrzymujemy dodatkowo IGRP, OSPF i EIGRP (dla 3550 dodatkowo BGP).
Więcej o przełącznikach 3550 możesz poczytać tu: http://www.cisco.com/go/cat3550 a o 3750 tutaj: http://www.cisco.com/go/cat3750.
Natomiast jeśli potrzebujesz modularny przełącznik, obecnie Cisco sprzedaje serie 4500 oraz 6500. 4500 jest "zeskalowaną w dół" wersją 6500, ale oferuje zarówno porty 10/100BaseTX, 100BaseFX jak i gigabit we wszystkich standardach oraz realizuje większość funkcjonalności rodziny 6500. Niestety nadal karty 10GbE dostępne są tylko dla 6500/7600 (montaż takiej karty w 4500 nie ma sensu, każdy moduł ma zarezerwowane tylko 6Gbit/s do i z modułu zarządzającego). Więcej informacji o przełącznikach 4500 znajdziesz tutaj: http://www.cisco.com/go/cat4000, a o rodzinie 6500 tutaj: http://www.cisco.com/en/US/products/hw/switches/ps708/index.html.
Tak, nazywają się Cisco PIX (ang. Private Internet eXchange). Oferowane są od modelów 501 i 506E (bez możliwości rozbudowy), przez 515, 525 do 535 (z modułami GigabitEthernet) do karty realizującej ścianę ogniową w przełącznikach Catalyst 6500 (karta nazywa się FWSM, a jej P/N handlowy to: WS-SVC-FWM-1-K9=). PIXy dedykowane są w stanie filtrować ruch do 1,7Gbit/s (pakiety 1400 bajtowe, PIX-535UR), natomiast karta do Catalysta ma przepustowość do 5,5Gbit/s.
PIXy obsługują programowe i sprzętowe (dodatkowa karta do modeli 515/525/535) szyfrowanie IPsec dla DES/3DES/AES (ten ostatni od PIX OS 6.3), oraz terminowanie tuneli L2TP i PPTP. Również od wersji 6 pojawiła się możliwość realizowania VLANów na PIXach (w standardzie 802.1Q, od modelu 515).
Więcej o PIXach znajdziesz pod adresem: http://www.cisco.com/go/pix.
Tak, jest to seria produktów Cisco Aironet. Obecnie w sprzedaży znajdują się:
Punkty dostępowe 1120. Są to urządzenia pracujące w standardzie 802.11b (P/N: AIR-AP1120B-E-K9), 802.11g kompatybilnym w dół z 802.11b (P/N: AIR-AP1121G-E-K9). W obu wersjach anteny zamontowane są wewnątrz urządzenia i nie ma możliwości dołączenia zewnętrznych. Do zakupionego AP serii 1120 ze starym radiem 802.11b, można dokupić nowe radio zgodne ze standardem 802.11g (P/N: AIR-MP21G-E-K9).
Punkty dostępowe serii 1200. Wcześniejsza seria tych produktów (1220) posiadała system operacyjny oparty na platformie VxWorks. Na obecnie sprzedawanych AP (seria 1230) zainstalowany jest już zwykły Cisco IOS. Punkty dostępowe tej serii są dwusystemowe - posiadają dwa sloty na radia obu standardów: 802.11b lub 802.11g, oraz 802.11a. Do radia 802.11b lub 802.11g należy dokupić osobno anteny zewnętrzne, radio 802.11a posiada zamontowaną na stałe, zintegrowaną antenę.
Punkty dostępowe serii 350. Starsza generacja sprzętu, kompatybilna tylko ze standardem 802.11b.
Mosty bezprzewodowe 350. Starsza generacja sprzętu, kompatybilna tylko ze standardem 802.11b, umożliwia zestawianie połączeń punkt-punkt i punkt-wielopunkt.
Więcej o produktach bezprzewodowych możesz przeczytać pod adresem: http://www.cisco.com/go/wireless.
Zakładając, że posiadasz kabel i wszystko odpowiednio podłączyłeś, poniżej gotowiec konfiguracji.
Przyjęto, że interesuje Cię podstawowa konfiguracja, bez dodatkowej funkcjonalności spotykanej tylko na niektórych routerach (firewall, IDS, wymyślne filtrowanie czy uwierzytelnianie).
Podsieć między Twoim routerem a routerem ISP to 169.254.1.0/30 (169.254.1.1 to adres routera ISP, 169.254.1.2 to adres Twojego routera), sieć LAN ma adresację 192.168.0.0/24, przy czym interfejs Ethernet Twojego routera ma adres 192.168.0.1 i jest dla tej sieci domyślną bramką.
Dodatkowo, sieć LAN wychodzi do Internetu z adresem publicznym routera (169.254.1.2), a interfejs Frame Relay ma DLCI równe 99.
no service pad service tcp-keepalives-in service tcp-keepalives-out service timestamps debug datetime msec localtime service timestamps log datetime msec localtime service password-encryption ! hostname rtr_cisco ! enable password jakies_trudne_haslo ! username user_1 password haslo_usera_1 ip subnet-zero no ip source-route no ip domain-lookup ip tcp path-mtu-discovery ! interface Ethernet0 description Polaczenie dla sieci LAN ip address 192.168.0.1 255.255.255.0 ip nat inside ! interface Serial0 description Konfiguracja fizycznego interfejsu szeregowego no ip address encapsulation frame-relay frame-relay lmi-type ansi ! interface Serial0.1 point-to-point description Polaczenie Polpak-T do Internetu 2Mbit ip address 169.254.1.2 255.255.255.252 frame-relay interface-dlci 99 IETF ip nat outside ! ip classless ip route 0.0.0.0 0.0.0.0 Serial0.1 no ip http server ! ip nat inside source list 100 interface Serial 0.1 overload ! access-list 100 permit ip 192.168.0.0 0.0.0.255 any access-list 100 deny ip any any no cdp run ! line con 0 exec-timeout 5 0 login local line vty 0 4 exec-timeout 5 0 login local ! end
Zakładając, że posiadasz kabel i dwa interfejsy Ethernet/FastEthernet na routerze, oraz wszystko odpowiednio podłączyłeś, poniżej gotowiec konfiguracji.
UWAGA: możesz spiąć styk Ethernet dostawcy z interfejsem Ethernet/FastEthernet na swoim routerze pod warunkiem, że użyjesz kabla skrosowanego!
Przyjęto, że interesuje Cię podstawowa konfiguracja, bez dodatkowej funkcjonalności spotykanej tylko na niektórych routerach (firewall, IDS, wymyślne filtrowanie czy uwierzytelnianie).
Podsieć między Twoim routerem a routerem ISP to 169.254.1.0/30 (169.254.1.1 to adres routera ISP, 169.254.1.2 to adres Twojego routera), sieć LAN ma adresację 192.168.0.0/24, przy czym interfejs Ethernet Twojego routera ma adres 192.168.0.1 i jest dla tej sieci domyślną bramką.
Dodatkowo, sieć LAN wychodzi do Internetu z adresem publicznym routera (169.254.1.2).
no service pad service tcp-keepalives-in service tcp-keepalives-out service timestamps debug datetime msec localtime service timestamps log datetime msec localtime service password-encryption ! hostname rtr_cisco ! enable password jakies_trudne_haslo ! username user_1 password haslo_usera_1 ip subnet-zero no ip source-route no ip domain-lookup ip tcp path-mtu-discovery ! interface Ethernet0 description Polaczenie dla sieci LAN ip address 192.168.0.1 255.255.255.0 ip nat inside ! interface Ethernet1 description Polaczenie dla sieci Internet ip address 169.254.1.2 255.255.255.252 ip nat outside ! ip classless ip route 0.0.0.0 0.0.0.0 169.254.1.1 no ip http server ! ip nat inside source list 100 interface Ethernet 1 overload ! access-list 100 permit ip 192.168.0.0 0.0.0.255 any access-list 100 deny ip any any no cdp run ! line con 0 exec-timeout 5 0 login local line vty 0 4 exec-timeout 5 0 login local ! end
SDI/CDI można do routera Cisco podłączyć na dwa sposoby: do portu AUX routera (niepolecane, obciąża mocno procesor) lub do interfejs asynchronicznego.
Na mniejszych routerach (klasy 1700) port asynchroniczny znajduje się na karcie WIC-2A/S. Dodatkowo, ale tylko na platformie 1700, w tryb asynchroniczny można ustawić porty na karcie WIC-2T (lub jedyny port na karcie WIC-1T) - w konfiguracji interfejsu dodając polecenie physical layer async.
UWAGA: możesz spiąć styk Ethernet dostawcy z interfejsem Ethernet/FastEthernet na swoim routerze pod warunkiem, że użyjesz kabla skrosowanego!
Przyjęto, że interesuje Cię podstawowa konfiguracja, bez dodatkowej funkcjonalności spotykanej tylko na niektórych routerach (firewall, IDS, wymyślne filtrowanie czy uwierzytelnianie).
Zarówno w usłudze SDI jak i CDI router musi w ramach połączenia PPP uwierzytelnić się - login i hasło otrzymałeś od dostawcy. Sieć LAN ma adresację 192.168.0.0/24, przy czym interfejs Ethernet routera ma adres 192.168.0.1 i jest domyślną bramką dla sieci. Sieć LAN używa oczywiście w łączności z Internetem adresu publicznego przypisanego routerowi.
W poniższej konfiguracji zakładamy, że używasz karty WIC-1T lub pierwszego portu z karty WIC-2T.
no service pad service tcp-keepalives-in service tcp-keepalives-out service timestamps debug datetime msec localtime service timestamps log datetime msec localtime service password-encryption ! hostname rtr_cisco ! enable password jakies_trudne_haslo ! username user_1 password haslo_usera_1 ip subnet-zero no ip source-route no ip domain-lookup ip tcp path-mtu-discovery ! interface Ethernet0 description Polaczenie dla sieci LAN ip address 192.168.0.1 255.255.255.0 ip nat inside ! interface Serial0 description Polaczenie SDI physical-layer async ip address negotiated no ip directed-broadcast ip nat outside encapsulation ppp async mode dedicated no cdp enable ppp pap sent-username nazwa_uzytkownika_sdi password haslo_uzyt_sdi ! ip classless ip route 0.0.0.0 0.0.0.0 Serial 0 no ip http server ! ip nat inside source list 100 interface Serial 0 overload ! access-list 100 permit ip 192.168.0.0 0.0.0.255 any access-list 100 deny ip any any no cdp run ! line con 0 exec-timeout 5 0 login local line vty 0 4 exec-timeout 5 0 login local ! end
Zakładam, że chodzi o Neostradę zakończoną stykiem ADSL. Odpowiednie routery Cisco do takiej konfiguracji, to np. Cisco 837 - który ma zabudowane na stałe styk ADSL, lub Cisco 1700 czy 2600 z modułem WIC-1ADSL. Zakładając, że posiadasz kabel i wszystko odpowiednio podłączyłeś, poniżej gotowiec konfiguracji.
Przyjęto, że interesuje Cię podstawowa konfiguracja, bez dodatkowej funkcjonalności spotykanej tylko na niektórych routerach (firewall, IDS, wymyślne filtrowanie czy uwierzytelnianie).
Adres publiczny przydzielany jest dynamicznie przy każdym połączeniu, sieć LAN ma adresację 192.168.0.0/24, przy czym interfejs Ethernet Twojego routera ma adres 192.168.0.1 i jest dla tej sieci domyślną bramką.
Sieć LAN wychodzi do Internetu z dynamicznie przyznanym adresem IP.
no service pad service tcp-keepalives-in service tcp-keepalives-out service timestamps debug datetime msec localtime service timestamps log datetime msec localtime service password-encryption ! hostname rtr_cisco ! enable password jakies_trudne_haslo ! username user_1 password haslo_usera_1 ip subnet-zero no ip source-route no ip domain-lookup ip tcp path-mtu-discovery ! ip dhcp excluded-address 192.168.0.1 ! ip dhcp pool CLIENT import all network 192.168.0.0 255.255.255.0 default-router 192.168.0.1 dns-server 194.204.159.1 194.204.152.34 lease 0 2 ! interface Ethernet0 description Polaczenie dla sieci LAN ip address 192.168.0.1 255.255.255.0 ip nat inside ! interface ATM0 description Polaczenie ADSL do ISP no ip address no atm ilmi-keepalive pvc 0/35 encapsulation aal5mux ppp dialer dialer pool-member 1 ! dsl operating-mode auto hold-queue 224 in ! interface Dialer0 description Interfejs dzwoniacy ip address negotiated ip nat outside encapsulation ppp dialer pool 1 dialer-group 1 ppp chap hostname login@neostrada.pl ppp chap password 0 twoje_haslo_do_neo+ ! ip classless ip route 0.0.0.0 0.0.0.0 Dialer 0 no ip http server ! ip nat inside source list 100 interface Dialer 0 overload ! access-list 100 permit ip 192.168.0.0 0.0.0.255 any access-list 100 deny ip any any no cdp run ! line con 0 exec-timeout 5 0 login local line vty 0 4 exec-timeout 5 0 login local ! end
Przyjęto, że interesuje Cię podstawowa konfiguracja, bez dodatkowej funkcjonalności spotykanej tylko na niektórych routerach (firewall, IDS, wymyślne filtrowanie czy uwierzytelnianie).
Adres publiczny przydzielany jest dynamicznie przy każdym połączeniu, sieć LAN ma adresację 192.168.0.0/24, przy czym interfejs Ethernet Twojego routera ma adres 192.168.0.1 i jest dla tej sieci domyślną bramką.
Sieć LAN wychodzi do Internetu z dynamicznie przyznanym adresem IP.
cbos> enable cbos# set password enable haslo_do_enable cbos# set password exec haslo_do_telneta cbos# set web enabled cbos# set telnet enabled cbos# set int eth0 address 192.168.0.1 cbos# set int eth0 netmask 255.255.255.0 cbos# set ppp wan0-0 login username_neostrada cbos# set ppp wan0-0 password haslo_neostrada cbos# set ppp wan0-0 ipcp 0.0.0.0 cbos# set ppp restart enabled cbos# set dhcp server enabled cbos# set dhcp server pool 0 ip 192.168.0.11 cbos# set dhcp server pool 0 size 200 cbos# set dhcp server pool 0 netmask 255.255.255.0 cbos# set dhcp server pool 0 gateway 192.168.0.1 cbos# set dhcp server pool 0 dns 194.204.159.1 cbos# set dhcp server pool 0 sdns 194.204.152.34 cbos# set nat enabled cbos# set int wan0-0 close cbos# set int wan0-0 vpi 0 cbos# set int wan0-0 vci 35 cbos# set int wan0-0 open cbos# set route default wan0-0 cbos# write
Jeśli chcesz zasymulować połączenie Frame Relay, posiadając dwa routery z odpowiednimi interfejsami i okablowaniem - nic prostszego. Jeden z nich będzie emulował przełącznik Frame Relay, a drugi "zwykły" router.
Na routerze emulującym przełącznik interfejs szeregowy skonfiguruj w ten sposób:
! frame-relay switching ! interface Serial0 description Emulacja 2Mbit/s FR - strona przelacznika no ip address encapsulation frame-relay IETF no ip mroute-cache clockrate 2000000 frame-relay lmi-type ansi frame-relay intf-type dce ! interface Serial0/1.1 point-to-point description Emulacja 2Mbit/s FR - do routera FR ip address 169.254.10.1 255.255.255.252 frame-relay interface-dlci 99
Parametr `clockrate 2000000' decyduje o taktowaniu łącza - w powyższym przykładzie są to 2Mbit/s.
Konfiguracja routera do niego podłączonego:
interface Serial0 description Polaczenie FR 2Mbit/s no ip address encapsulation frame-relay IETF no ip mroute-cache frame-relay lmi-type ansi ! interface Serial0/1.1 point-to-point description Polaczenie FR 2Mbit/s - do ISP ip address 169.254.10.2 255.255.255.252 frame-relay interface-dlci 99
Jest to bardzo popularny scenariusz. Załóżmy, że posiadasz dwa łącza: jedno Frame Relay i jedno Ethernet. Do obu dostałeś adresy połączeniowe (styk Twój router-router ISP) oraz adresy do użycia w ramach NATu.
Pierwszy dostawca przydzielił Ci adres połączeniowy 169.254.10.2/30 (jego router ma dla Ciebie adres 169.254.10.1), oraz zakres adresów 172.16.10.1-172.16.10.14 (172.16.10.0/28).
Drugi dostawca przydzielił Ci adres połączeniowy 169.254.20.2/30 (jego router ma dla Ciebie adres 169.254.20.1), oraz zakres adresów 172.16.20.1-172.16.20.14 (172.16.20.0/28).
W swojej sieci LAN (192.168.0.0/24), chcesz pierwszą połowę sieci NATować na pierwsze łącze, a drugą połowę na drugie łącze.
Notatka: Niestety, stosując statyczny mechanizm routingu wg zasad (ang. policy based routing), nie masz możliwości automatycznemu przeciwdziałaniu awarii łącza lub sieci ISP - tj. jeśli zawiedzie któreś z łącz, ruch generowany od jednej z połówek sieci LAN będzie po prostu odrzucany.
Poniżej konfiguracja przykładowa routera, uwzględniająca powyższe założenia:
no service pad service tcp-keepalives-in service tcp-keepalives-out service timestamps debug datetime msec localtime service timestamps log datetime msec localtime service password-encryption ! hostname rtr_cisco ! enable password jakies_trudne_haslo ! username user_1 password haslo_usera_1 ip subnet-zero no ip source-route no ip domain-lookup ip tcp path-mtu-discovery ! interface Ethernet0 description Polaczenie dla sieci LAN ip address 192.168.0.1 255.255.255.0 ip nat inside ip policy route-map ruch_z_lan ! interface Ethernet1 description Lacze od ISP #1 ip address 169.254.10.2 255.255.255.252 ip nat outside ! interface Serial0 description Lacze od ISP #2 no ip address encapsulation frame-relay frame-relay lmi-type ansi ! interface Serial0.1 point-to-point description Lacze do Internetu 2Mbit/s ip address 169.254.20.2 255.255.255.252 frame-relay interface-dlci 99 IETF ip nat outside ! ip classless ip route 0.0.0.0 0.0.0.0 169.254.10.1 no ip http server ! ip nat pool ISP1 172.16.10.1 172.16.10.14 netmask 255.255.255.240 ip nat pool ISP2 172.16.20.1 172.16.20.14 netmask 255.255.255.240 ! ip nat inside source list 1polowkaLAN pool ISP1 overload ip nat inside source list 2polowkaLAN pool ISP2 overload ! ip access-list extended 1polowkaLAN permit ip 192.168.0.0 0.0.0.127 any ip access-list extended 2polowkaLAN permit ip 192.168.0.128 0.0.0.127 any ! route-map ruch_z_lan permit 10 match ip address 2polowkaLAN set ip next-hop 169.254.20.1 ! no cdp run ! line con 0 exec-timeout 5 0 login local line vty 0 4 exec-timeout 5 0 login local ! end
Jak to działa? Do interfejsu Ethernet0 dociera ruch z sieci LAN, adresowany do Internetu. Route-mapa ruch_z_lan sprawdza, czy pakiet nie pasuje do ACL 2polowkaLAN. Jeśli pakiet pasuje, wpis w route-mapie mówi, że należy go wyroutować przez adres, dla którego następnym "hopem" będzie 169.254.20.1, czyli interfejs Serial0.1 (podsieć 169.254.20.0/30). Jeśli nie pasuje, route-mapa kończy testy i przekazuje pakiet do normalnego procesu routingu. W tablicy routingu znajduje się tylko jeden wpis statyczny - trasa wskazuje na pierwsze łącze:
ip route 0.0.0.0 0.0.0.0 169.254.10.1
Ponieważ w trakcie podróży, pakiet przechodzi pomiędzy interfejsem oznaczonym jako ip nat inside (interfejs Ethernet0) a jednym z dwóch interfejsów oznaczonych jako ip nat outside wykonywany jest NAT.
O kolejności sprawdzania na jaki zakres adresów zNATować pakiet, decyduje kolejność wpisów ip nat inside [...]. W naszej konfiguracji są dwa:
ip nat inside source list 1polowkaLAN pool ISP1 overload ip nat inside source list 2polowkaLAN pool ISP2 overload
Wpisy te wprost mówią: pakiety z adresami źródłowymi pasującymi do ACL o nazwie 1polowkaLAN mają zostać zNATowane na adresy z puli ISP1, a pakiety z adresami źródłowymi pasującymi do 2polowkaLAN na pulę adresów ISP2.
Notatka: Warto zwrócić uwagę, że ruch można rozkładać nie tylko ze względu na adres/podsieć IP. Mógłbyś na przykład zechcieć kierować ruch dla typowych usług kierować na jedno łącze, a całą resztę na drugie - dzięki temu, użytkownicy popularnych aplikacji P2P, czy namiętni ściągacze wszystkiego co tylko można za pomocą FTP nie będą przeszkadzać czytającym pocztę.
Musisz zmienić ACLkę 2polowkaLAN:
ip access-list extended 2polowkaLAN permit tcp 192.168.0.0 0.0.0.255 any eq 22 permit tcp 192.168.0.0 0.0.0.255 any eq 23 permit tcp 192.168.0.0 0.0.0.255 any eq 25 permit udp 192.168.0.0 0.0.0.255 any eq 53 permit tcp 192.168.0.0 0.0.0.255 any eq 80 permit tcp 192.168.0.0 0.0.0.255 any eq 110 permit tcp 192.168.0.0 0.0.0.255 any eq 143 permit tcp 192.168.0.0 0.0.0.255 any eq 445 permit tcp 192.168.0.0 0.0.0.255 any eq 465 permit tcp 192.168.0.0 0.0.0.255 any eq 993 permit tcp 192.168.0.0 0.0.0.255 any eq 995 permit icmp 192.168.0.0 0.0.0.255 any
Teraz ruch do serwerów popularnych usług oraz ruch ICMP będzie wychodził łączem, na które wskazuje route-mapa ruch_z_lan, a całą resztę ruchu router skieruje tam gdzie wskazuje zwykły wpis w tablicy routingu.
Musisz dodać kolejne wpisy w route-mapie, wskazujące dla jakiegoś unikalnego typu ruchu kolejne interfejsy.
W zasadzie całą konfigurację routingu można wykonać za pomocą routingu wg zasad (bez statycznego wpisu w tablicy routingu dotyczącego trasy domyślnej), ale wtedy musisz dodatkowo określić politykę dla tzw. ruchu lokalnego, czyli ruchu do/z routera.
Poniżej taki przykład - do konfiguracji z przykładu powyżej dodajemy definicję route-mapy, która kieruje ruch lokalny na oba łącza w zależności od tego, ruchu do jakiego IP dotyczył. Innymi słowy, jeśli ktoś np. spinguje Twój drugi interfejs, pasować będzie dopiero drugi wpis w route-mapie (RuchLokalny permit 20) i dopiero on spowoduje skierowanie pakietu odpowiedzi drugim łączem.
ip local policy route-map RuchLokalny ! ! dodajemy route-mapę dla ruchu lokalnego - jeśli robisz to zdalnie, ! powyższą komendę dodaj NA KOŃCU! ! route-map RuchLokalny permit 10 match ip address 100 set ip next-hop 169.254.10.1 ! cały ruch pasujący do ACL 10 przerzuć na interfejs, dla którego następnym ! "hopem" jest 169.254.10.1 i zakończ sprawdzanie route-mapy ! route-map RuchLokalny permit 20 match ip address 101 set ip next-hop 169.254.20.1 ! jeśli tu doszedłeś, cały ruch pasujący do ACL 10 przerzuć na interfejs, ! dla którego następnym "hopem" jest 169.254.20.1 ! ip access-list extended 100 remark ACL pasuje do ruchu do puli łącza ISP #1 permit ip any 169.254.10.0 255.255.255.252 ip access-list extended 101 remark ACL pasuje do ruchu do puli łącza ISP #2 permit ip any 169.254.20.0 255.255.255.252
W tym momencie, możesz usunąć z routera wpis statyczny domyślnego routingu, wskazujący na pierwsze łącze.
Jeśli chcesz zbierać informacje o strumieniach danych przepływających przez router, możesz skorzystać z mechanizmu NetFlow i zewnętrznego systemu, który dane te przerobi i np. przedstawi graficznie.
Pamiętaj, że na większości małych platform eksport danych NetFlow powoduje znaczny wzrost obciążenia routera - przemyśl to zatem.
Z punktu widzenia routera należy wykonać następujące polecenia:
! Włączamy CEF: router(config)# ip cef ! Konfigurujemy mechanizm NetFlow: router(config)# ip flow-export version 5 peer-as ! używamy wersji 5 NetFlow, większość kolektorów obsługuje poprawnie ! tylko ten format router(config)# ip flow-export source-interface FastEthernet 0/0 ! wskazujemy interfejs najbliższy sieci w której znajduje się kolektor, ! najlepiej oczywiście gdyby był to interfejs bezpośrednio do tej sieci ! podłączony router(config)# ip flow-export destination adres_IP port_docelowy ! wskazujemy adres IP kolektora i port docelowy, na którym będzie on nasłuchiwał ! Dla IOSów 12.2/12.3: router(config)# ip flow-cache timeout active 1 ! a dla IOSów 12.0/12.1: router(config)# ip flow-cache active-timeout 1 ! Na każdym interfejsie, z którego ruch ma wchodzić w skład ! zbieranych statystyk: router(config-if)# ip route-cache flow
Więcej o mechaniźmie NetFlow przeczytać możesz tutaj: http://www.cisco.com/go/netflow. Jeśli natomiast chcesz skonfigurować stację odbierającą informacje z routera, zajrzyj pod te adresy: http://www.linuxgeek.org/netflow-howto.php i http://www.ncne.org/training/techs/2002/0127/presentations/200201-fullmer1_files/v3_document.htm.
Wspomniane karty są przełącznikami L2, ale dzięki możliwości stworzenia na routerze logicznych interfejsów VLAN, można stworzyć mapowanie warstwy drugiej (VLAN przypisany do portu) na warstwę trzecią (adres IP przypisany do logicznego interfejsu o numeracji zgodnej z numerem VLANu).
Oba rodzaje modułów wymagają oprogramowania IP Plus - o ile w routerach 1711 i 1712 w których skład wchodzi moduł WIC-4ESW oprogramowanie to znajduje się "w zestawie" o tyle do pozostałych routerów, na których moduły te są obsługiwane (WIC-4ESW dla 1721/1751/1760, oraz moduły NM-16ESW i NM-32ESW dla serii 2600, 3600 i 3700) należy to oprogramowanie dokupić.
Konfigurację należy rozpocząć od zdefiniowania w bazie danych VLANów konkretnych VLANów, które chcemy założyć. Zakładam, że naszym celem jest stworzenie dwóch VLANów - 10 i 20:
router# vlan database router(vlan)# vlan 10 name Siec1 VLAN 10 added: Name: Siec1 router(vlan)# vlan 20 name Siec2 VLAN 20 added: Name: Siec2 router(vlan)# exit APPLY completed. Exiting.... router#
Teraz należy fizyczne porty na przełączniku przypisać do jednego z tych dwóch VLANów - 10 lub 20. Zakładam, że pierwsze dwa porty przypisujemy do 10, a pozostałe dwa do 20:
router(config)# interface range FastEthernet 0/0 - 1 router(config-if-range)# switchport mode access router(config-if-range)# switchport access vlan 10 router(config-if-range)# exit router(config)# interface range FastEthernet 0/2 - 3 router(config-if-range)# switchport mode access router(config-if-range)# switchport access vlan 20
Pozostaje stworzyć logiczne interfejsy VLAN10 i VLAN20, do których przypiszemy adresy IP (i które będą dla stacji w odpowiednich VLANach domyślnymi bramkami). Zakładam, że sieć VLAN10 ma adresację 192.168.10.0/24 przy czym .1 to adres routera, a VLAN20 ma adresację 192.168.20.0/24 przy czym .1 to adres routera.
router(config)# interface vlan 10 router(config-if)# ip address 192.168.10.1 255.255.255.0 router(config-if)# no shutdown router(config)# interface vlan 20 router(config-if)# ip address 192.168.20.1 255.255.255.0 router(config-if)# no shutdown
Do tak stworzonych logicznych interfejsów VLAN x można przypisać oczywiście ACLki, inspecty, route-mapy itp.
Należy wydać polecenie `ip routing'.
Dodając trasę w ten sposób:
router(config)# ip route 0.0.0.0 0.0.0.0 adres_bramki lub router(config)# ip route 0.0.0.0 0.0.0.0 nazwa_interfejsu_do_bramki
Innymi słowy, jeśli cały ruch ma trafiać pod adres 169.254.10.1, napisz:
router(config)# ip route 0.0.0.0 0.0.0.0 169.254.10.1
...a jeśli adres bramki jest zmienny (np. Neostrada+), wskaż interfejs odpowiedzialny za terminowanie IP, czyli np.:
router(config)# ip route 0.0.0.0 0.0.0.0 Dialer 0
UWAGA! Jeśli wpis ma wskazywać na interfejs Ethernet, powinieneś podać adres IP bramki! Wpisanie nazwy interfejsu może nie zadziałać tak, jak chciałeś.
Informacje podawane przez protokół, który ma najmniejszy dystans administracyjny (ang. administrative distance). Jest to miara "wiarygodności" danych, podawanych przez konkretny protokół routingu.
Poniżej lista rodzajów tras i ich dystansów administracyjnych - ta o najniższej wartości znajdzie się w tablicy routingu i będzie używana:
trasa podłączona 0 trasa wpisana statycznie 1 trasa sumaryczna EIGRP 5 trasa pozyskana z eBGP 20 trasa pozyskana z internal EIGRP 90 trasa pozyskana z IGRP 100 trasa pozyskana z OSPF 110 trasa pozyskana z IS-IS 115 trasa pozyskana z RIP 120 trasa pozyskana z external EIGRP 170 trasa pozyskana z iBGP 200
W procesie routingu uczestniczą trzy niezależne od siebie zagadnienia:
Aktywne procesy routingu działające na routerze - np. BGP, EIGRP i OSPF.
Zawartość tablicy routingu, która otrzymuje informacje od procesów routingu i udziela pewnych informacji procesowi fizycznie przekazującemu pakiety
Proces przekazujący pakiety (ang. forwarding process), który na podstawie informacji z tablicy routingu podejmuje decyzje co i jak wysłać.
Generalnie obowiązuje zasada, że najdokładniejszy wpis w tablicy routingu zwycięża, tj. najdłuższy pasujący prefiks do danej sieci ma pierwszeństwo nad bardziej ogólnymi. Jeśli pakiet przeznaczony jest do hosta o adresie 10.1.10.5, a w tablicy routingu istnieją dwa wpisy: do sieci 10.1.10.0/24 i do sieci 10.0.0.0/16, użyty zostanie ten pierwszy.
Procesy routingu dostarczają tablicy routingu najlepszych tras, zachowując dla siebie trasy o gorszych metrykach - czyli miarach "wartości" danej trasy. Decyzja co wpisać do tablicy routingu, jeśli wiele procesów posiada trasę do jednej sieci, podejmuje się na podstawie dystansu administracyjnego (można go dla danego protokołu zmienić). W ramach tego samego protokołu routingu, w tablicy routingu mogą pojawić się równoległe trasy, jeśli wynika to wprost z konfiguracji, lub metryki tych tras są sobie równe (nie myl dystansu administracyjnego i metryk!)
Doskonały artykuł na ten temat znajduje się tutaj: http://www.cisco.com/en/US/tech/tk365/tk207/technologies_tech_note09186a0080094823.shtml.
Tras pływających używa się do uruchamiania łącz zapasowych. Wykorzystują one zasadę działania tablicy routingu - tylko wpis o najlepszym dystansie administracyjnym znajdzie się w tablicy. Wpisy o gorszym dystansie czekają na zniknięcie lub unieważnienie lepszego wpisu.
Załóżmy, że posiadasz router z interfejsem szeregowym (Serial 0) i ISDN. Chciałbyś wykorzystywać łącze ISDN ale tylko wtedy, gdy trasa przez łącze szeregowe nie działa. Wystarczy, że zdefiniujesz dwa wpisy o bramce domyślnej - jeden wskazujący na interfejs szeregowy, a drugi na interfejs ISDN (Dialer), ale o znacznie gorszej metryce. Pamiętaj, że trasy statyczne mają domyślnie metrykę 1:
router(config)# ip route 0.0.0.0 0.0.0.0 Serial 0 router(config)# ip route 0.0.0.0 0.0.0.0 Dialer 1 200
Podczas normalnej pracy (interejs szeregowy działa) w tablicy znajduje się tylko wpis wskazujący na interfejs Serial 0. Jeśli interfejs ten zmieni stan na down, wpis zostanie wycofany z tablicy routingu i router sprawdzi, czy do tej sieci nie prowadzi inny wpis - w naszym przypadku będzie taki, wskazujący na interfejs Dialer 1. Po pewnym czasie, interfejs szeregowy zapewne znowu się podniesie - router znowu sprawdzi tablicę routingu i zamieni wpis wskazujący na Dialer 1 na wpis wskazujący na Serial 0, ponieważ ten ostatni ma lepszą metrykę. Zwykle od tego momentu interfejs ISDN nie przenosi już ruchu i po upłynięciu skonfigurowanego czasu bezczynności zostanie zamknięty.
Domyślnie, router instaluje w tablicy routingu do 4 tras o tej samej metryce - z wyjątkiem BGP (domyślnie 1) i tras statycznych (do sześciu). Jeśli chcesz to zmienić, w konfiguracji protokołu routingu wydaj polecenie `maximum-paths X', gdzie X to liczba od 1 do 6:
! Dla OSPF: router(config)# router ospf 10 router(config-router)# maximum-paths 6 ! Dla EIGRP: router(config)# router eigrp 10 router(config-router)# maximum-paths 6 ! Dla BGP: router(config)# router bgp 10 router(config-router)# maximum-paths 6 ! dodatkowo dla iBGP: router(config-router)# maximum-paths ibgp 6
Pamiętaj, że jeśli zmieniasz domyślne ustawienia musisz wiedzieć, co robisz.
Dopisz odpowiednio więcej tras do tej samej sieci. W przykładzie poniżej preferujemy łącze przez Serial 1, Serial 0 obsługuje tylko 1/3 ruchu:
router(config)# ip route 0.0.0.0 0.0.0.0 Serial 1 router(config)# ip route 0.0.0.0 0.0.0.0 Serial 1 router(config)# ip route 0.0.0.0 0.0.0.0 Serial 0
Protokoły routingu typu link-state (łącze-stan), czyli OSPF, NSLP, BGP i IS-IS, opierają swoje działanie o przesyłanie uaktualnień do tablic routingu. Informacje przesyłane są pomiędzy routerami które w jakiś sposób nawiązały ze sobą sąsiedztwo. Do określenia metryki używa się zwykle wielu złożonych czynników. Protokoły tego typu działają w oparciu o algorytmy SPF (ang. Shortest Path First), takie jak np. algorytm Dijkstry.
Protokoły routingu typu distance-vector (dystans-wektor) takie jak RIP, RTMP czy IGRP wymieniają się pełnymi tablicami routingu co określone odcinki czasu. Do obliczania metryki trasy używa się algorytmu Bellmana-Forda.
Protokół hybrydowy, EIGRP (firmowy Cisco), nazywany jest tak, ponieważ co prawda wylicza metryki tras podobnie do protokołu IGRP, ale utrzymuje sąsiedztwa i wysyła tylko uaktualnienia jak protokoły typu link-state.
Protokoły routingu typu dystans-wektor, używają paru mechanizmów, zapobiegających wadliwemu interpretowaniu otrzymywanych informacji, lub wstrzymujących rozpowszechnianie pewnych informacji. Są to:
router# show ip protocol Routing Protocol is "rip" Sending updates every 30 seconds, next due in 3 seconds Invalid after 180 seconds, hold down 180, flushed after 240
Interfejsy loopback (tak, może być ich wiele), są wirtualnym tworem, bardzo wygodnym z paru powodów:
Jeśli tylko router działa, znajdują się w stanie "podniesionym" - ma to diametralne znaczenie dla dużych sieci, w których stabilność tablic routingu ma znaczenie;
Ponieważ można przypisać im adres IP i wszelkie czynności administracyjne, "podpiąć" pod ten adres (np. tak, by w pakietach Syslog, SSH, Telnet, SNMP, NTP itp. jako źródło pakietu figurował adres interfejsu loopback), łatwo kontrolować listy dostępu (jeden, stały adres IP do przepuszczenia, zamiast stale zmieniającego się adresu lub grupy adresów), zezwalające na ruch do i z nich, oraz łatwiej zarządzać siecią złożoną z większej liczby urządzeń (jeśli np. interfejsy loopback wszystkich interfejsów w danej sieci wybrano z jednej podsieci /24, łatwiej jest je po kolei zlokalizować);
Przy wykorzystaniu interfejsu loopback z przypisanym adresem IP, wygodnie pracuje się z interfejsami unnumbered - router może mieć dziesięć interfejsów fizycznych, z których każdy wskazuje jako swój adres IP aktualny adres interfejsu loopback;
RIP jest starym i obecnie rzadko używanym w konstrukcji nowoczesnych sieci protokołem typu dystans-wektor. Nowsza wersja RIPa, wersja 2 (opisana w RFC 1723) różni się od starszej wersji (v1, RFC 1058) tym, że oprócz sieci przenosi jej maskę, co efektywnie oznacza, że RIP wspiera VLSM (ang. Variable Length Subnet Masks, czyli sieci z maskami różnych długości). RIP w wersji 2 wspiera również uwierzytelnianie, co pozwala zwiększyć bezpieczeństwo sieci, a także rozgłaszanie informacji routingowych za pomocą multicastów (na adres 224.0.0.9).
RIP rozsyła co 30 sekund na port 520/udp (v1, wersja druga używa multicastów dla normalnych rozgłoszeń i unicastów na port 520/udp dla uaktualnień wyzwolonych przez jakąś zmianę w sieci) całe tablice routingu do swoich sąsiadów. Jako jedynej metryki używa liczby przeskoków (hopów) do danej sieci. Ponieważ pole to ma maksymalną wartość 16, efektywnie obniża to skalowalność sieci do 15 hopów (gdzie 1 hop = sieć podłączona bezpośrednio, a 16 = sieć nieosiągalna). Podstawowym problemem w protokole RIP są zatem sytuacje, w których teoretycznie gorsza trasa (składająca się np. z 5 a nie z 2 hopów), jest bardziej niezawodna, ma większą przepustowość itp. - a RIP nie bierze tego pod uwagę.
Standardowo, proces RIP zaczyna pracę po wydaniu w trybie konfiguracji polecenia:
router(config)# router rip
Samo polecenie nie zrobi jednak niczego atrakcyjnego - proces RIP wystartuje, ale nie będzie jeszcze zajmował się routingiem. Dopiero wskazanie sieci, którą ma zająć się RIP, powoduje rozpoczęcie pracy. Załóżmy, że mamy sieć składającą się z dwóch routerów, tak jak na rysunku poniżej:
Polecenie `network 172.16.0.0' wydane na routerze "rtr_1" spowoduje, że RIP rozpocznie przetwarzanie rozgłoszeń RIP na wewnętrznym interfejsie routera. Dopiero dodanie polecenia `network 192.168.0.0' spowoduje, że router "rtr_2" zacznie otrzymywać rozgłoszenia RIP od swojego sąsiada. Po dodaniu na routerze "rtr_2" analogicznej konfiguracji (do tego czasu "rtr_2" będzie otrzymywał rozgłoszenia, ale ignorował je), zobaczymy że routery "dowiedziały się" o istnieniu sieci podłączonych do interfejsów FastEthernet sąsiadów:
! Na routerze rtr_1: rtr_1(config)# router rip rtr_1(config)# network 172.16.0.0 rtr_1(config)# network 192.168.0.0 ! Na routerze rtr_2: rtr_2(config)# router rip rtr_2(config)# network 10.0.0.0 rtr_2(config)# network 192.168.0.0
W głównej tablicy routingu, trasy poznane dzięki działaniu protokołu RIP oznaczone są literą "R":
rtr_1# show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area [...] P - periodic downloaded static route Gateway of last resort is not set 172.16.0.0/24 is subnetted, 1 subnets C 172.16.0.0 is directly connected, FastEthernet0 R 10.0.0.0/8 [120/1] via 192.168.0.254, 00:00:03, Serial0 C 192.168.0.0/16 is directly connected, Serial0
Dodając do definicji procesu RIP polecenie `version 2', np. tak:
router(config)# router rip router(config)# version 2 router(config)# network 192.168.0.0 router(config)# network 169.254.10.0
OSPF (ang. Open Shortest Path First) jest protokołem dynamicznego routingu typu link-state i należy do kategorii IGP. Każdy router, w obrębie jednostek grupujących sieci zwanych areami (obszarami), posiada identyczną bazę stanu linków. Na bazie tych informacji tworzone jest drzewo najkrótszych ścieżek i wpisy do tablicy routingu. Podstawowymi cechami odróżniającymi go od protokołów typu distance-vector są:
metryki/koszty przejścia pakietu przez dany link;
oszczędność pasma - uaktualnienia wysyłane są na skutek zmiany stanu danego linku, a nie w formie okresowych rozgłoszeń;
szybka konwergencja - zdolność do uzyskania stanu stabilnego po wykryciu zmiany w drzewie połączeń sieciowych;
struktura hierarchiczna;
wsparcie dla VLSM (subnetowania sieci);
możliwość uwierzytelniania sąsiadów (przyległych węzłów w rozumieniu sesji OSPF);
Hierarchiczny model protokołu OSPF pozwala podzielić jedna wielką sieć korporacyjną na mniejsze segmenty zwane obszarami (ang. area). Obszar jest jakby samodzielną sekcją sieci, wewnątrz której odbywa się wymiana LSA (ang. Link State Advertisement, rozgłoszeń link-state), zakończona przeliczaniem ścieżek przy użyciu algorytmu SPF (ang. Shortest Path First). Podział sieci na obszary pozwala na ograniczenie rozmiaru tablic routingu na routerach - sieci z danego obszaru widziane są w innych obszarach tylko w postaci zsumaryzowanej. Innymi słowy, niestabilność jakiegoś linku wewnątrz obszaru nie przenosi się na zewnątrz.
Podział sieci na obszary spowodował również przypisanie różnych funkcji routerom w sieci z OSPF. Wyróżniamy zatem ich następujące typy:
internal router - posiada wszystkie interfejsy w jednym obszarze. Jego zadania ograniczają się do ogłaszania LSA i utrzymywania aktualnych informacji w bazach danych.
backbone router - OSPF zakłada istnienie specjalnego obszaru (nazywanego area 0 bądź backbone area), który "spina" inne obszary ze sobą. Router pracujący w tym obszarze to właśnie backbone router.
Area Border Router (ABR) - jest to router odpowiedzialny za łączenie dwóch lub większej ilości obszarów (jednym z nich musi być backbone area). Utrzymuje pełną topologiczna bazę o każdym obszarze, do którego jest podłączony i przesyła LSA między nimi. LSA zawierają zsumaryzowane informacje dotyczące sieci w danym obszarze.
Autonomous System Border Router (ASBR) - aby wyjść poza swój system autonomiczny bądź wykorzystać informację pochodzącą z innego protokołu routingu (dynamicznego bądź statycznego) musisz opuścić domenę OSPFa. Router, na którym dochodzi do takiego przejścia z ospf na inny typ routingu (poprzez np. redystrybucję routingu statycznego) to właśnie ASBR. Funkcje ASBRa spełnia również router na którym jest dokonywana redystrybucja tras statycznych do ospfa.
Wizualnie, role poszczególnych routerów przedstawiają się następująco:
W OSPFie metryka jest określana mianem kosztu. Domyślnie na routerach Cisco koszt jest odwrotnie proporcjonalny do pasma danego linku wg proporcji:
100,000,000 Koszt = --------------------------- pasmo w bitach na sekundę
(dla pasma liczonego w kilobitach na sekundę, jak np. podaje się poleceniem bandwidth X przepustowość interfejsu dla protokołów routingu, wzór ten wygląda oczywiście 10^5/pasmo)
Innymi słowy, łącze E1 (2Mbit/s) wg OSPF będzie miało koszt 48, Ethernet 10Mbit/s 10, a jeden kanał 64Kbit/s ISDN BRI (kanał B) będzie miał koszt 1562.
Należy pamiętać o następujących warunkach do spełnienia:
sumaryzacji mogą dokonywać tylko ABRy i ASBRy;
można sumaryzować do dowolnego rozmiaru podsieci (podsieć ma oczywiście rozmiar potęgi cyfry 2);
sumaryzację należy skonfigurować ręcznie, uważnie rozplanowując sieć przy podziale na obszary;
Wyróżniamy 5 typów LSA:
Router-link (LSA typ 1) - wszystkie linki, które posiada dany router wraz z lista wszystkich sąsiadów. Rozsyłany tylko wewnątrz obszaru.
Network-link (LSA typ 2) - rozsyłana przez DR lista wszystkich routerów w danym segmencie, dla których służy jako DR i z którymi utrzymuje sąsiedztwo. Rozsyłany tylko wewnątrz obszaru.
Summary link typu 3 - przesyłane między obszarami, sumaryzuje informacje o sieciach w danym obszarze. Tworzy je ABR.
Summary link typu 4 - przesyłana między obszarami, zsumaryzowana informacja o sieciach pojawiających się w OSPFie wskutek redystrybucji. Tworzy je ASBR.
External link (LSA typ 5) - informacje o redystrybuowanych sieciach. Rozsyłają je ASBRy. Wyróżniamy 2 podtypy:
Typ 1 - metryka jest sumą kosztu dojścia po OSPF i metryki zewnętrznego protokołu;
Typ 2 - metryka jest tylko kosztem zewnętrznego protokołu;
NSSA external link (LSA typ 7) - typ specjalnie stworzony dla obszarów NSSA, przeznaczony do przenoszenia informacji o redystrybuowanych sieciach. Analogicznie jak LSA5 ma 2 typy. Tworzy je ASBR.
Routery muszą być poprawnie skonfigurowane i zestawić ze sobą sąsiedztwo (ang. adjacency). Samo zestawienie sesji OSPF między routerami składa się z kilku etapów:
Tabelka stanów OSPF można przejrzeć poleceniem `show ip ospf neighbor'.
Stan Znaczenie DOWN Nie odpowiada na hello ATTEMPT Wysłane hello, ale jeszcze brak odpowiedzi INIT Usłyszane hello, ale jeszcze nie ma status sąsiada TWO-WAY Pełne sąsiedztwo. W takim stanie pozostają 2 routery w środowiskach multiaccess, gdy żaden z nich nie jest DR ani BDR EXSTART/ EXCHANGE/ LOADING Kolejne etapy mające na celu transfery bazy LSA miedzy sąsiadami. FULL Stan pełnego zsynchronizowania baz LSA. DR/ BDR/ DROTHER Oznacza, że dany sąsiad jest DR bądź BDR bądź żadnym z nich.
Tak jak wskazała powyższa tabelka stabilnymi stanami między sąsiadami są:
dla środowisk multiaccess:
FULL/DR lub FULL/BDR między routerem w segmencie a (B)DRem;
2WAY/DROTHER między 2 routerami niebędącymi DR ani BDR;
dla środowisk point-to-point stan FULL
Jeśli w rezultacie komendy `show ip ospf neighbor' widzimy, że stan na jakimś podejrzanym interfejsie/linku odbiega od powyższych wskazań wtedy postępujemy wg wskazań z poniższej tabelki:
Utrzymujący się stan Oznacza Sprawdź.... ------------------------------------------------------------------------------- DOWN Nie ma odpowiedzi od ...czy dany interfejs działa. żadnego sąsiada Jeśli działa, to spróbuj wysłać: ping 224.0.0.6 powinni odpowiedzieć potencjalni sąsiedzi na linku ATTEMPT Wysłane HELLO, ale brak Sprawdź, czy dany sąsiad odpowiedzi odpowiada, np. pingiem do niego INIT Wysłane i otrzymane HELLO, ale nie ustanowione sąsiedztwo 2WAY/DR W środowiskach multiaccess normalne. lub 2WAY/BDR 2WAY W środowiskach p-to-p oznacza problemy z rozpoczęciem transferu bazy topologicznej. EXSTART lub EXCHANGE Transfer bazy topologicznej ...MTU (czy takie same) oraz link lub między sąsiadami nie może fizyczny. Wyślij większe LOADING poprawnie dojść do skutku (1550 bajtowe) pingi do sąsiada
Poniższy schemat znacznie to ułatwia:
Cisco udostępniło swoje zalecenia co do budowania sieci wykorzystujących protokół OSPF. Jest on dostępny pod adresem http://www.cisco.com/en/US/tech/tk365/tk480/technologies_design_guide09186a0080094e9e.shtml, a PDF tego samego materiału pod adresem http://www.cisco.com/warp/public/104/1.pdf.
Border Gateway Protocol jest protokołem typu external (zewnętrznym, choć może również pracować w konfiguracjach wewnętrznych), a służy głównie do komunikowania się routerów brzegowych różnych systemów autonomicznych. Wyróżnikiem systemu autonomicznego (AS) jest jego numer, przyznawany w Europie przez RIPE. Protokół BGP w wersji 4 posiada zaimplementowane mechanizmy ochrony przed zapętleniami pakietów i jest powszechnie stosowany dla zapewnienia komunikacji miedzy sieciami dostawców internetu (ang. Internet Service Providers, ISP).
Komunikacja między routerami wymieniającymi wzajemnie tablice BGP (ang. peer, neighbor) oparta jest o protokół tcp, port 179. Routery należące do różnych AS'ów i wymieniające tablice BGP działają w ramach external BGP (EBGP).
Jak każdy protokół routujący, BGP zarządza tablicami routingu, wymienia informacje routingowe i opiera decyzje o routowaniu na metryce. Podstawową funkcją jest wymiana informacji o dostępności danej sieci zawierająca informacje o liście ścieżek ASów. Ta informacja może być wykorzystana do skonstruowania grafu dostępności systemu autonomicznego. W informacjach rozgłoszeniowych peerom BGP podsyłana jest tylko optymalna ścieżka do danej sieci.
Każdy system autonomiczny musi posiadać swój unikalny identyfikator ASN (Autonomic System Number), nadawany przez odpowiednią organizację (w Europie jest to RIPE). Numer ten jest identyfikatorem wszystkich routerów BGP danego systemu. Powielenie numeru na zewnątrz grozi wyłączeniem dużych obszarów sieci ze względu na wewnętrzne zabezpieczenia protokołu przed zapętleniem. Do celów testowych można użyć prywatny numer AS z puli 64512-65535 - należy jednak pamiętać, że nie wolno ogłasza takiego prywatnego ASa do swoich BGP peerów.
Osobnym zagadnieniem ważnym przy uruchamianiu BGP jest wybór platformy sprzętowej do obsługi połączeń internetowych. Na chwilę obecną pełna tablica BGP to ponad 174 tysięcy wpisów (http://www.cymru.com/BGP/robbgp01.html) - na obróbkę takiej ilości, często zmieniających się danych, na dodatek otrzymanych od co najmniej 2 ISP potrzebny jest silny router z niemałą ilością pamięci. Zużycie zasobów możemy sprawdzić przez:
router_bgp# sh proc memory | inc Holding|BGP PID TTY Allocated Freed Holding Getbufs Retbufs Process 75 0 11856640 11855460 8008 0 0 BGP Open 121 0 971742788 51185912 85739960 4940 0 BGP Router 122 0 30531708 846392840 95900 14707036 2799936 BGP I/O 123 0 23816 4834392 32876 0 0 BGP Scanner 142 0 20688180 20687760 6968 0 0 BGP Open 149 0 15935988 14198940 6828 0 0 BGP Open 153 0 20680512 20675960 6976 0 0 BGP Open
..oraz:
router_bgp# sh proc cpu | exc 0.00% 0.00% 0.00% CPU utilization for five seconds: 61%/31%; one minute: 36%; five minutes: 35% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process 3 37272304 1981781 18807 0.00% 0.36% 0.42% 0 Check heaps 15 1331000 4103026 324 0.00% 0.03% 0.00% 0 ARP Input 22 744268 1573286 473 0.07% 0.02% 0.00% 0 Net Background 41 11547076 55980307 206 0.15% 0.07% 0.08% 0 IP Input 49 7493092 110337 67911 0.00% 0.09% 0.06% 0 IP Background 75 484 208 2326 0.76% 0.34% 0.09% 2 Virtual Exec 95 1549732 106200 14592 0.00% 0.02% 0.00% 0 Per-minute Jobs 112 3285676 20064138 163 0.00% 0.01% 0.00% 0 SNMP ENGINE 119 18127088 12981037 1396 0.07% 0.01% 0.10% 0 OSPF Router 121 18955580 34540455 548 0.07% 0.12% 0.12% 0 BGP Router 123 2648032 10310905 256 0.00% 0.01% 0.00% 0 BGP I/O 124 277728220 1697064 163655 29.08% 4.38% 3.70% 0 BGP Scanner
Powyższe statystyki zebrano na routerze 7200 z modułem NPE-300.
Generalnie, należy założyć, że 128MB pamięci to już dzisiaj za mało, żeby utrzymać pełne tablice i zapewnić jednocześnie sensowną funkcjonalność. Jako minimum, zalecamy zatem routery 3825/3845 (wydajność wg Cisco odpowiednio 225 i 500kpps) - można je rozbudować do 1GB RAMu i posiadają wydajność na dolnym pułapie sensownej obsługi 1-2 ISP. Oczywiście routery 3660 również można rozbudować do 256MB RAMu, ale od grudnia 2003r. routery te nie są już ani produkowane ani sprzedawane.
Powinieneś jednak poważnie rozważyć zakup routera klasy 7200 z modułem NPE-400 lub NPE-1G do obsługi "poważnego" BGP. (NPE-400 posiada wg Cisco wydajność do 400kpps, ale można je rozbudować do maksymalnie 512MB RAM, NPE-1G do 1GB RAM).
Pod kątem konwergencji BGP należy do jednych z wolniejszych protokołów routingu. Awaria połączenia wykrywana jest po ok. 1 minucie (chyba, że włączymy funkcję "bgp fast-external-fallover", ale nie jest to zalecane), nie może się zatem równać się z szybkimi protokołami IGP tj. OSPF czy EIGRP (tam awaria wykrywana jest po paru sekundach). Jednak takie spowolnienie reakcji może być dosyć korzystne w przypadku Internetu - zbyt szybka reakcja na chwilowe flapnięcie (przejście ze stanu działania do awarii i po chwili z powrotem) linku mogłaby zachwiać stabilnością Internetu. Ponadto BGP znacznie lepiej się skaluje w internecie - użycie innego protokołu do internetu takiego jak OSPF spowodowałby natychmiastowe przeciążenie routera. Zaimplementowany mechanizm nie akceptowania od neighborów ścieżek zawierających własny numer ASa zabezpiecza przed zapętleniami.
Do badania dostępności neighborów BGP używane są pakiety Hello standardowo przesyłane co 60 sekund. Nie dotarcie trzeciego z kolei pakietu Hello implikuje "położenie" sesji BGP. Standardowo zatem pad połączenia, na którym zapięta jest sesja BGP, wykrywany jest po 3 minutach.
router bgp 300 neighbor 1.1.1.1 remote-as 100 neighbor 1.1.1.1 filter-list 5 weight 2000 neighbor 2.2.2.2 remote-as 200 neighbor 2.2.2.2 filter-list 6 weight 1000 ! ip as-path access-list 5 permit ^100$ ip as-path access-list
router bgp 300 neighbor 1.1.1.1 remote-as 100 neighbor 1.1.1.1 route-map SETWEIGHTIN in neighbor 2.2.2.2 remote-as 200 neighbor 2.2.2.2 route-map SETWEIGHTIN in ! ip as-path access-list 5 permit ^100$ ! route-map SETWEIGHTIN permit 10 match as-path 5 set weight 2000 route-map SETWEIGHTIN permit 20 set weight 1000
router bgp 300 neighbor 1.1.1.1 remote-as 100 neighbor 1.1.1.1 weight 2000 neighbor 2.2.2.2 remote-as 200 neighbor 2.2.2.2 weight 1000
! Na routerze D: router bgp 256 neighbor 3.3.3.4 remote-as 300 route-map SETLOCALIN in neighbor 128.213.11.1 remote-as 256 ! ip as-path 7 permit ^300$ ! route-map SETLOCALIN permit 10 match as-path 7 set local-preference 200 ! route-map SETLOCALIN permit 20 !
Community Prefiksów oznaczonych tym community..... No-export ... nie ogłaszaj do peerów eBGP No-advertised ... nie ogłaszaj nikomu
router bgp 100 neighbor 3.3.3.3 remote-as 300 neighbor 3.3.3.3 send-community neighbor 3.3.3.3 route-map setcommunity out ! route-map setcommunity match as-path 1 set community 200 additive !
Algorytm wyboru ścieżki w BGP jest następujący:
Jeśli ścieżka wskazuje next hop, do którego nie ma dojścia, update jest usuwany.
Wybierana jest ścieżka z większa wagą.
Jeśli wagi są takie same, wybierana jest z wyższym local-preference.
Jeśli local-preference są takie same, wybierana jest ścieżka zdefiniowana generowana (origin) na danym routerze (komendą network lub droga redystrybucji).
Następnie wybierana jest ta z krótszą ścieżką.
IGP < EGP < incomplete
Najniższy MED
EBGP ponad IBGP
Najniższy nexthop
Najniższy Router-ID
Poniższy schemat znacznie to ułatwia:
UWAGA: standardowo włączona jest opcja auto-summary. Powoduje ona, że:
Przy redystrybucji z np. RIPv2 do BGP, sieci pojawiają się w tablicy BGP z maską classful
Wpisanie sieci komendą network nawet bez maski, powoduje, że ta sieć musi być obecna w RIB z dokładnością do długości prefixu
Po pierwsze, zastanów się czy BGP jest Ci na pewno potrzebne. Nie potrzebujesz BGP jeśli:
Formularz podania o własny numer AS dla RIPE znajduje się tutaj: http://www.ripe.net/ripe/docs/asnrequestform.html.
Pula adresowa PA, czyli Provider Aggregatable przyznawana jest lokalnym dostawcom (LIR, Local Internet Registry), do dalszego wykorzystania i podziału np. na pule adresowe dla użytkowników.
Pula adresowa PI, czyli Provider Independent (niezależna od dostawcy), jak sama nazwa wskazuje, oznacza przydział zakresu adresów dla konkretnego użytkownika końcowego. Oznacza to, że otrzymujesz własną, unikalną pulę adresów w Internecie, nie należącą do nikogo innego. Zwróć jednak uwagę, że jeśli będzie to pula z prefiksem /23 lub /24, mogą (nie muszą) pojawić się mniejsze lub większe problemy z osiągalnością Twojej sieci w Internecie (niektórzy ISP odrzucają informacje dokładniejsze niż /20, /21 czy /22 akceptując tylko "ogólniejsze" informacje).
Dokładniej różnice między PI a PA opisano w tym dokumencie: http://www.ripe.net/ripe/docs/ipv4-policies.html#pa_pi.
Formularz zamówienia na przestrzeń adresową PI dla RIPE znajduje się tutaj: http://www.ripe.net/ripe/docs/pi-requestform.html a dla PA tutaj: http://www.ripe.net/ripe/docs/iprequestform.html.
Przed konfiguracją BGP najlepiej dużo poczytać. Cisco stworzyło osobną sekcję swojej strony WWW poświęconom zagadnieniom związanym z BGP. Znajduje się ona pod adresem http://www.cisco.com/pcgi-bin/Support/browse/psp_view.pl?p=Technologies:BGP.
Bardzo dobry przewodnik po konfiguracji BGP z opisem konkretnych scenariuszy znajduje się pod adresem http://www.cisco.com/univercd/cc/td/doc/cisintwk/ics/icsbgp4.htm, dokładny opis poleceń pod adresem http://www.cisco.com/en/US/products/sw/iosswrel/ps1831/products_configuration_guide_chapter09186a00800d97fc.html, warto również zajrzeć do książki Sama Halabiego, do której link znajduje się na początku tego FAQ w rozdziale poświęconym dokumentacji.
QoS to dokładnie akronim od Quality of Service, czyli Jakość Usługi.
Jest to bardzo popularne słowo-klucz stosowane (na nieszczęście), głównie w materiałach handlowych i oznacza zwykle tylko malutki fragment całej rozległej dziedziny, zajmującej się gwarantowaniem jakości usług w sieciach.
Według Cisco, na możliwość zapewnienia QoS w sieci składa się:
Klasyfikacja ruchu (ang. Traffic Classification) - chodzi o możliwość identyfikacji otrzymanego ruchu tak, by na tej podstawie można było później kształtować jego charakterystyki, czy gwarantować mu np. pierwszeństwo, lub stałe pasmo. W skład klasyfikacji ruchu na routerach Cisco wchodzą zagadnienia:
Routingu według zasad (ang. policy-based routing), czyli wprost wskazywania, że ruch o danej charakterystyce powinien być routowany w taki a nie inny sposób
Commited Access Rate
Class-Based Weighted Fair Queuing
Zarządzanie zatorami (ang. Congestion Management) - próba ograniczenia wpływu niesfornych protokołów i aplikacji na pozostały ruch wymieniany w sieci. W skład wchodzi:
Weighted Fair Queuing
Class-Based Weighted Fair Queuing
Priority Queuing
Custom Queuing
Unikanie zatorów (ang. Congestion Avoidance) - próba proaktywnego zapobiegania wysyceniu łącza, lub wprost narzucanie polityki uniemożliwiającej danemu rodzajowi ruchu wysycenia całego dostępnego pasma.
Random Early Detection / Weighted Random Early Detection
Commited Access Rate
ToS, czyli Type of Service (Rodzaj Usługi) to standard definicji "klasy ruchowej" pakietu IP, opisany dokładniej w RFC 1349. Definiuje sześć "typów" ruchu, i przypisuje każdemu z nich wartość, zapisywaną do bitów 3-6, w 1-bajtowym polu nagłówka pakietu IPv4. Pole Precedence to wartość z bitów 0-2 tego samego 1-bajtowego pola, określające "pierwszeństwo" danego ruchu.
DSCP, czyli Differentiated Services Codepoint, zdefiniowany w nowszym standardzie (RFC 2474), opisuje jak za pomocą tego samego, 1-bajtowego pola w nagłówku IPv4 podzielić ruch na klasy trochę inaczej - posługując się przy tym bitami 0-5, pozostałe dwa pozostawiając jako nieużywane.
Za pomocą odczytywania lub oznaczania pakietów pasujących do konkretnych kryteriów, routery i przełączniki są w stanie różnicować traktowanie ruchu w sieci. Zwykle zakłada się, że inteligentne urządzenia sieciowe (zwykle chodzi o przełączniki, ale czasami wykonują tą pracę również routery) znajdujące się najbliżej stacji użytkowników, serwerów, czy innych urządzeń generujących ruch, oznaczają różne rodzaje ruchu różnymi etykietami ToS/Precedence lub DSCP (wg przyjętego w danej sieci standardu; dobrze jest robić w taki sam sposób w całej sieci pod swoją kontrolą), a kolejne urządzenia "w łańcuszku" posługują się już tymi etykietami do priorytezacji ruchu, gwarantowania pasma czy jego ograniczania.
PQ, czyli Priority Queueing (kolejki z priorytetami) używa czterech kolejek i klasyfikowania ruchu do jednej z nich. Kolejki te nazywają się od posiadającej największy priorytet high, przez medium, normal do low.
Cechą charakterystyczną PQ jest fakt, że dopóki jakiekolwiek pakiety znajdują się w kolejce o wyższym priorytecie, router nie wyśle pakietów oczekujących w kolejkach o priorytecie niższym. Łatwo doprowadzić w ten sposób do "umierania" transmisji, klasyfikowanych do kolejek o niższych priorytetach.
Załóżmy, że chcemy prioretyzować cały ruch SSH, ICMP oraz Telnet. W kolejnej, mniej ważnej kolejce powinien znaleźć się ruch DNS, ISAKMP (500/udp) oraz ESP (protokół 50). Do trzeciej kolejki wrzucimy ruch WWW, SMTP, POP3, IMAP4 a cała reszta ruchu trafi do domyślnej, czwartej, najmniej uprzywilejowanej kolejki:
! interface serial 0.99 priority-group 10 ! do interfejsu szeregowego przypisujemy grupę priorytetów o ! identyfikatorze 10 ! ! konfigurujemy wspomnianą grupę priorytetów: priority-list 10 protocol ip high list 100 priority-list 10 protocol ip medium list 110 priority-list 10 protocol ip normal list 120 priority-list 10 default low ! ! access lista 100 - wybiera ruch SSH, ICMP oraz Telnet: ip access-list extended 100 permit tcp any any eq 22 permit tcp any any eq 23 permit icmp any any ! ! access lista 110 - wybiera ruch DNS, ISAKMP i ESP: ip access-list extended 110 permit udp any any eq 53 permit udp any any eq 500 permit esp any any ! ! access lista 120 - wybiera ruch WWW, SMTP, POP3, IMAP4: ip access-list extended 120 permit tcp any any eq 25 permit tcp any any eq 80 permit tcp any any eq 110 permit tcp any any eq 143
CQ, czyli Custom Queueing (kolejkowanie konfigurowalne) jest mechanizmem podobnym do PQ, ale możemy po pierwsze używać do 16 kolejek, a po drugie opróżniane one są na zasadzie round-robin: najpierw X bajtów z kolejki pierwszej, później Y bajtów z kolejki drugiej i tak dla wszystkich kolejek i od początku. Taka konstrukcja zapobiega wymieraniu potoków mniej uprzywilejowanych.
Poniżej analogiczna konfiguracja, jak w przykładzie z PQ:
! interface serial 0.99 custom-queue-list 10 ! ! konfigurujemy kolejkowanie, tworząc cztery kolejki: 1, 2, 3 i 4 queue-list 10 protocol ip 1 list 100 queue-list 10 protocol ip 2 list 110 queue-list 10 protocol ip 3 list 120 queue-list 10 default 4 ! ! dla każdej z kolejek, określamy limity ruchowe w bajtach: queue-list 1 queue 1 byte-count 3000 queue-list 1 queue 2 byte-count 2000 queue-list 1 queue 3 byte-count 1000 queue-list 1 queue 4 byte-count 500 ! ! access lista 100 - wybiera ruch SSH, ICMP oraz Telnet: ip access-list extended 100 permit tcp any any eq 22 permit tcp any any eq 23 permit icmp any any ! ! access lista 110 - wybiera ruch DNS, ISAKMP i ESP: ip access-list extended 110 permit udp any any eq 53 permit udp any any eq 500 permit esp any any ! ! access lista 120 - wybiera ruch WWW, SMTP, POP3, IMAP4: ip access-list extended 120 permit tcp any any eq 25 permit tcp any any eq 80 permit tcp any any eq 110 permit tcp any any eq 143
WFQ, czyli Weighted Fair Queueing (ważone, sprawiedliwe kolejkowanie) jest domyślnym mechanizmem kolejkowania, włączonym na interfejsach szeregowych o przepływności do 2Mbit/s. WFQ klasyfikuje ruch w potoki, przy czym do jednego potoku należą pakiety o takim samym źródłowym i docelowym adresie IP, portach TCP/UDP, należące do tego samego protokołu i posiadające tą samą wartość pola ToS (Type of Service).
Jeśli na interfejsie wyłączono WFQ, można je włączyć wydając polecenie `fair-queue'.
Cisco oferuje mechanizm CAR (Commited Access Rate) oraz GTS (Generic Traffic Shape). O ile CAR po prostu odrzuca pakiety przekraczające zadane wartości (i może działać zarówno dla ruchu wchodzącego jak i wychodzącego), GTS stara się delikatniej wpływać na przebieg transmisji, manewrując opóźnieniami pakietów, gdy pasmo zajmowane przez wskazany typ ruchu zbliża się do założonych ograniczeń. GTS działa tylko dla ruchu wychodzącego z routera.
Przycięcie ruchu FTP do 256kbit/s przez CAR:
interface Ethernet0 rate-limit input access-group 100 256000 8192 8192 conform-action transmit exceed-action drop rate-limit output access-group 100 256000 8192 8192 conform-action transmit exceed-action drop ! access-list 100 permit tcp any any eq ftp access-list 100 permit tcp any eq ftp any access-list 100 permit tcp any any eq ftp-data access-list 100 permit tcp any eq ftp-data any
Przycięcie ruchu FTP do 256kbit/s przez GTS:
interface Ethernet0 traffic-shape group 100 256000 8192 8192 ! access-list 100 permit tcp any any eq ftp access-list 100 permit tcp any any eq ftp-data
CBWFQ, czyli Class-Based WFQ (WFQ oparte o klasy), jest potężnym mechanizmem, umożliwiającym łączenie wielu różnych innych mechanizmów w jedną całość na interfejsie routera.
Aby wykorzystać CBWFQ, należy najpierw wskazać, czyli inaczej sklasyfikować ruch, który będzie traktowany w różny sposób - innymi słowy, podzielić go na klasy. Cisco IOS daje wiele metod klasyfikacji - możemy wskazywać ogólnie protokoły (np. IP, EIGRP, ESP), dowolny ruch pasujący do jakiegoś rodzaju ACLek (np. tylko ruch do konkretnego hosta na port 80/tcp itp.), a także z wykorzystaniem mechanizmu NBAR, zagłębiać się w konstrukcję pakietu i np. wykrywać sieci P2P.
W poniższym przykładzie wyjdziemy z następujących założeń:
Posiadamy symetryczne łącze 2Mbit/s
Przede wszystkim interesuje nas ruch z wewnętrznych serwerów poczty i WWW - chcemy, by miały w ruchu wychodzącym gwarantowane do 1Mbit/s ruchu, przy czym jeśli "rozpędzą" się powyżej 1,2Mbit/s zaczynamy ten ruch shape'ować by nie wysycił nam zupełnie pasma w ruchu wychodzącym;
Aplikacjom typu SSH czy Telnet dajemy osobne 256kbit/s starając się, by pakiety należące do tego ruchu utrzymywały możliwie małe opóźnienia. Podobnie jak dla powyższego ruchu, powyżej 384kbit/s zaczynamy ten ruch shape'ować.
Statycznie przycinamy cały ruch UDP i ICMP do po 64kbit/s zarówno przychodzący jak i wychodzący. Nie spodziewamy się otrzymywać więcej ruchu tego typu w jednostce czasu, a na pewno nie będziemy również więcej generować (to w ograniczonym stopniu powstrzyma też trojany, które mogą zainstalować się na stacjach naszych użytkowników i próbować przeprowadzać ataki DDoS na innych użytkowników Internetu)
Przycinamy wszelakie protokoły P2P które jesteśmy w stanie rozpoznać do minimalnej wartości - 16kbit/s. To nie zablokuje w całości ruchu i nie zagwarantuje, że ruch P2P nie wysyci naszego pasma od ISP do naszego routera (pojedyńczy request z aplikacji P2P potrafi wygenerować wiele jednoczesnych strumieni które są w stanie zapchać naprawdę wielkie łącza), ale będzie naszym sposobem na kontrolę tego, co kontrolować trudno.
Całą resztę ruchu kolejkujemy wg WFQ w 64 osobne potoki.
class-map match-any cm_serwery match access-group name acl_serwery ! klasa cm_serwery wybiera tylko ruch pasujący do ACL acl_serwery class-map match-any cm_ruch_gwarantowany match access-group name acl_ruch_gwarantowany ! klasa cm_ruch_gwarantowany wybiera tylko ruch pasujący do ACL ! acl_ruch_gwarantowany class-map match-any cm_udp_icmp match access-group name acl_udp_icmp ! klasa cm_udp_icmp wybiera tylko ruch pasujący do ACL acl_udp_icmp class-map match-any P2Ptraffic match protocol kazaa2 match protocol http url "\.hash=*" match protocol gnutella match protocol napster match protocol fasttrack match protocol bittorrent ! wykorzystujemy tutaj funkcjonalność NBAR; umożliwia ona routerowi ! zaglądanie do wnętrza przesyłanych danych i analizę ich ! przynależności do różnego rodzaju aplikacji ! policy-map pm_lan2internet class cm_serwery bandwidth 1016 ! ruch zaliczony do klasy cm_serwery ma gwarantowane ! pasmo do 1Mbit/s, przy czym shape average 1256000 32768 32768 ! jeśli zajmie 1,25Mbit/s zaczyna być shape'owany class cm_ruch_gwarantowany bandwidth 256 ! ruch zaliczony do klasy cm_ruch_gwarantowany ma gwarantowane ! pasmo do 256kbit/s, przy czym shape average 384000 32768 32768 ! jeśli zajmie 384kbit/s zaczyna być shape'owany class cm_udp_icmp police 256000 conform-action transmit exceed-action drop ! ruch zaliczony do klasy cm_udp_icmp jest odrzucany jeśli ! przekracza 256kbit/s class P2Ptraffic police 16384 conform-action transmit exceed-action drop ! ruch zaliczony do klasy P2Ptraffic powinien zostać ! przycięty do 16kbit/s, z uwagi na mechanizmy działania ! aplikacji tego typu trudno spodziewać się jednak że ! to ograniczenie będzie działało zawsze idealnie do ! zadanej przepustowości class class-default fair-queue 64 ! pozostały ruch, który nie trafił do żadnej z klas powyżej ! rozkładany jest do 64 niezależnych kolejek ! ip access-list extended acl_serwery permit tcp host 192.168.10.10 eq 25 any permit udp host 192.168.10.10 eq 53 any permit tcp host 192.168.10.11 eq 80 any permit tcp host 192.168.10.10 eq 110 any permit tcp host 192.168.10.10 eq 143 any ! ip access-list extended acl_ruch_gwarantowany permit tcp any any eq 22 permit tcp any any eq 23 ! ip access-list extended acl_udp_icmp permit icmp any any permit udp any any
Oczywiście, tak stworzoną konfigurację należy przypisać jeszcze do interfejsu:
! interface Serial 0.99 description Polaczenie WAN service-policy output pm_lan2internet ! interface FastEthernet 0 description Polaczenie LAN ip nbar protocol-discovery
NBAR, czyli Network-Based Application Recognition, to mechanizm "wykrywania" na podstawie oglądania zawartości pakietów, do jakiej aplikacji lub usługi danych ruch należy.
NBAR pojawił się w IOSie 12.0(5)XE2 i jest dostępny w podstawowej wersji oprogramowania (nawet na małych platformach). Aby go użyć, musisz zdefiniować na interfejsie politykę (service policy), która w ramach class-map sprawdzających kryteria przynależności ruchu do klas zawiera sprawdzanie protokołu poleceniem `match protocol [...]'. W przykładzie powyżej użyto funkcjonalności NBAR do wykrycia protokołów takich jak Bittorrent, Kazaa1/2 itp.
Przykładowe statystyki udostępniane przez polecenie `show ip nbar protocol-discovery' poniżej:
router# show ip nbar protocol-discovery Serial0/0.99 Input Output Protocol Packet Count Packet Count Byte Count Byte Count 5 minute bit rate (bps) 5 minute bit rate (bps) ------------------------ ------------------------ ------------------------ kazaa2 386586 338412 Pierwsza linijka to odpowiednio ilość pakietów wchodzących i wychodzących, które sklasyfikowano jako należące do danego protokołu 403005080 121530825 Kolejna linijka to ten sam podział na ruch wchodzący i wychodzący, ale wyrażony w bajtach 567000 380000 Ostatnia linijka to aktualne statystyki za ostatnie 5 minut pracy, w bitach na sekundę http 393493 205820 322833938 103136747 123000 122000 ssh 263541 158289 391470822 9749154 220000 10000 [...]
Więcej o obsługiwanych standardach i idei działania przeczytać można tutaj: http://www.cisco.com/en/US/products/sw/iosswrel/ps1835/products_configuration_guide_chapter09186a00800c75d1.html#54116, a konfigurację opisano np. tutaj: http://www.cisco.com/en/US/products/sw/iosswrel/ps1835/products_configuration_guide_chapter09186a00800c75d0.html#80560.
Bardzo wiele informacji znajduje się na stronach Cisco:
Dodatkowo, ciekawe materiały znaleźć można na innych stronach:
Najprościej jest ustawić na wirtualnych liniach terminali (ang. VTY, Virtual TeletYpes), wymuszanie podania konkretnego hasła:
router(config)# line vty 0 15 router(config-line)# login router(config-line)# password jakieś_hasło
Jeśli router ma sprawdzać istnienie konta o danym loginie i poprawność hasła bez zewnętrznej bazy danych, należy skonfigurować użytkowników lokalnie, np. tak:
router(config)# username lukasz password ala10
Następnie, należy włączyć lokalne uwierzytelnianie:
router(config)# aaa new-model router(config)# aaa authentication login default local
...i skonfigurować wirtualne linie terminali tak, by wymagały uwierzytelnienia się, w oparciu o lokalną bazę użytkowników:
router(config)# line vty 0 15 router(config-line)# login local
Najczęściej potrzeba przypisania adresu IP do MAC karty sieciowej wynika z chęci zablokowania użytkownikom, możliwości samowolnej zmiany adresu IP. W Cisco istnieje możliwość przypisania adresu MAC do adresu IP poleceniem:
router(config)# arp 192.168.5.5 aaaa.bbbb.cccc arpa ! I sprawdzenie lokalnej bazy ARP: router# show arp Protocol Address Age (min) Hardware Addr Type Interface Internet 192.168.5.1 - 000c.0c93.115a ARPA Ethernet0 Internet 192.168.5.5 - aaaa.bbbb.cccc ARPA
Jednak przypisanie takie dotyczy tylko mapowania IP -> MAC, ale nie na odwrót. Jeśli komputerowi o adresie MAC aaaa.bbbb.cccc użytkownik przypisze inny adres IP, będzie on mógł komunikować się z siecią. Natomiast przypisanie adresu IP 192.168.5.5 komputerowi o adresie MAC innym niż zdefiniowany uniemożliwi komunikację, gdyż wszystkie ramki przesyłane do adresu 192.168.5.5 zostana skierowane na MAC adres aaaa.bbbb.cccc.
Jeśli zatem zrobimy statyczne mapowania IP->MAC wszystkim użytkownikom, a resztę adresów IP zablokujemy odpowiednią access-lista to uzyskamy zamierzony efekt - nikt nie będzie mógł zmienić adresu IP w taki sposób, aby nadal mógł komunikować się z siecią.
W zasadzie najlepiej najpierw dużo poczytać. Większość zaleceń sprowadza się jednak do: a) wyłącz niepotrzebne usługi, b) upewnij się, że routerowi nic nie przeszkadza.
Poniżej lista podstawowych poleceń, które warto wykonać. Jednak UWAGA: po pierwsze możesz coś zepsuć(!), po drugie takie pójście na skróty powinno być dopiero początkiem do dalszej dogłębnej analizy konfiguracji!
W konfiguracji globalnej wykonaj:
router(config)# no service udp-small-servers router(config)# no service tcp-small-servers router(config)# no service finger router(config)# no service dhcp router(config)# no service config router(config)# no service pad router(config)# no ip domain-lookup router(config)# no ip finger router(config)# no ip http server router(config)# no ip http secure-server router(config)# no ip bootp server router(config)# no ip source-route router(config)# no snmp-server router(config)# no cdp run ! teraz trochę rzeczy włączymy: router(config)# ip cef router(config)# service tcp-keepalives-in router(config)# service tcp-keepalives-out router(config)# service password-encryption router(config)# ip tcp path-mtu-discovery router(config)# ip tcp selective-ack router(config)# ip tcp timestamp router(config)# service timestamps debug datetime localtime msec router(config)# service timestamps log datetime localtime msec router(config)# logging buffered 64000 ! ustaw zegar i strefę czasową router# clock set HH:MM:SS DD MIE ROK router(config)# clock timezone MST 1 router(config)# clock summer-time MET recurring last Sun Mar 2:00 last Sun Oct 3:00 ! usuń hasło enable szyfrowane słabym algorytmem: router(config)# no enable password ! ...i ustaw hasło enable kodowane jednostronną funkcją mieszającą router(config)# enable secret jakieś_trudne_hasło
W konfiguracji poszczególnych (pod)interfejsów:
router(config-if)# no ip redirects router(config-if)# no ip directed-broadcast router(config-if)# no ip mask-reply router(config-if)# no ip proxy-arp router(config-if)# ip verify unicast reverse-path
Na koniec zapisz konfigurację:
router# copy running-config startup-config
ACL, czyli Access Control List (lista kontroli dostępu) jest listą reguł, które kolejno sprawdzają pewne właściwości pakietu. ACL używane są głównie do filtrowania pakietów na interfejsach routerów i przełączników, ale służą też do wskazywania ruchu route-mapom, crypto-mapom itd. Pamiętaj, że każdą stworzoną ACLkę musisz przypisać do jakiegoś interfejsu, lub do konkretnej funkcjonalności - inaczej po prostu nie będzie działać!
Dla ruchu IP interesujące są dwa typy list ACL - standardowe i rozszerzone. Standardowa lista IP pozwala sprawdzić tylko adres źródłowy pakietu, np.:
ip access-list standard 10 permit host 192.168.0.10 ! Pozwalamy przejść pakietom z 192.168.0.10
Każda zdefiniowana ACLka zawiera domyślnie na końcu wpis odrzucający każdy ruch (default deny), jeśli więc skonstruujesz swoją ACLkę tak, by najpierw odrzucała jakiś konkretny ruch, a później chciałbyś żeby przepuszczała pozostały, musisz go wprost przepuścić, np. tak:
ip access-list standard 10 deny host 192.168.0.10 ! blokujemy wprost ruch z 192.168.0.10 deny host 192.168.0.11 ! blokujemy wprost ruch z 192.168.0.11 deny host 192.168.0.33 ! blokujemy wprost ruch z 192.168.0.33 deny host 192.168.0.91 ! blokujemy wprost ruch z 192.168.0.91 deny host 192.168.0.206 ! blokujemy wprost ruch z 192.168.0.206 permit any ! przepuszczamy pozostały ruch IP
Stworzenie standardowej listy ACL odbywa się przez nadanie jej identyfikatora od 1 do 99 (oraz od IOSu 12.0, z dodatkowego zakresu 1300-1999).
Rozszerzone ACL dostępne są w dwóch rodzajach - numerowane, w zakresie od 100 do 199 (od IOS 12.0 również 2000-2699), oraz nazwane. Termin rozszerzone oznacza, że pozwalają one sprawdzać ze szczegółami pewne standardowe pola pakietów (IP oraz w warstwie czwartej, czyli porty TCP/UDP oraz rodzaje i typy ICMP).
Załóżmy, że chcemy zablokować ruch do naszego routera o adresie 169.254.10.1 na port 80. Możemy napisać:
ip access-list extended 100 deny tcp any host 169.254.10.1 eq 80 ! ruch pakietów zawierających TCP z dowolnej lokalizacji ! (any) do hosta o adresie 169.254.10.1 na port docelowy 80 ! ma zostać zablokowany permit ip any any ! przepuszczamy pozostały ruch IP
Warto zwrócić na skrócony zapis - rozszerzone listy dostępu wymagają użycia adresu źródłowego i docelowego, jako pary adres i maska. Zamiast takiej konstrukcji można użyć słów any (odpowiada konstrukcji 0.0.0.0 0.0.0.0, czyli dowolny adres), oraz host A.B.C.D (co odpowiada konstrukcji A.B.C.D 255.255.255.255, czyli tylko ten konkretny jeden adres).
Rozszerzone ACL oferują pewne dodatkowe testy - podstawowe, dostępne w praktycznie wszystkich IOSach począwszy od 12.0 to między innymi:
Dla protokołów TCP i UDP dostępne są słowa kluczowe sprawdzające port:
Natomiast dla TCP możemy jeszcze dodatkowo wskazać flagi ustawione w pakiecie:
! ip access-list extended Internet2Serwer permit tcp any gt 1023 host 169.254.10.1 eq 25 syn !
Stworzoną ACL należy przypisać do interfejsu. Obowiązuje reguła, że do jednego interfejsu można przypisać dwie ACLki - jedną kontrolującą ruch wejściowy i jedną kontrolującą ruch wyjściowy (z routera, bądź przechodzący przez router i wychodzący tym akurat interfejsem).
interface serial 0.99 ip access-group 100 in ! ruch wchodzący interfejsem będzie sprawdzany wg ACLki 100 ip access-group 110 out ! ruch wychodzący interfejsem będzie sprawdzany wg ACLki 110
Sprawdź, czy router odnotował jakieś trafienia (hits) w poszczególne reguły ACLki poleceniem `show ip access-lists':
router# show ip access-lists Extended IP access list KillWinTraffic 10 deny udp any any range 135 netbios-ss (241919 matches) 20 deny tcp any any range 135 139 30 deny tcp any range 135 139 any 40 deny udp any range 135 netbios-ss any 50 deny tcp any any eq 445 (7614819 matches) 60 deny tcp any eq 445 any 70 permit ip any any (281099 matches)
Zwróć uwagę na liczby w nawiasach w regułach 10, 50 i 70. Jest to ilość pakietów, która pasowała do danej reguły i router albo je odrzucił (reguły 10 i 50), albo przepuścił dalej (reguła 70).
Nie jest to pytanie proste, ale spróbujmy na nie zgrubnie odpowiedzieć.
Na początek warto wiedzieć, że ACLki z dodanym słowem kluczowym log (czyli logujące trafienie), powodują przejście procesora routera w tryb process switching. Dla dużego ruchu, korzyści z wykorzystania innych optymalizacji, w tym optymalniejszych ścieżek komutacji, zostają w tym momencie zniweczone.
Po pierwsze, dla długich ACLek (od 6 wpisów i więcej), w niektórych IOSach (od 12.0(6) linii S, oraz od 12.3 dla niektórych routerów mniejszych) istnieje możliwość pre-kompilowania reguł w kod optymalniejszy do testowania na każdym pakiecie. Funkcjonalność ta nazywa się Turbo Access List (Cisco używa jej zamiennie z compiled Access List i jako takie pojawiają się w słowach kluczowych konfiguracji routera) i włącza się ją poleceniem `access-list compiled'. Router wykona w tym momencie proces optymalizacji ACLek dłuższych niż 5 reguł, a później przy każdej zmianie w ACLkach, powtórzy ten proces. Skuteczność działania tej funkcji, oraz listę ACLek które zostały skompilowane można sprawdzić poleceniem `show access-lists compiled':
router# show access-lists compiled Compiled ACL statistics: ACL State Entries Config Fragment Redundant 10 Operational 1 1 0 0 98 Operational 1 1 0 0 99 Operational 7 7 0 0 100 Operational 2 2 0 0 110 Operational 14 12 2 0 antispoof Operational 42 43 0 1 block_mswin Operational 14 14 0 0 nachi_worm Operational 3 2 1 0 8 ACLs, 8 active, 1 builds, 89 entries, 3 mem fill, 762 updates L0: 1805Kb 5/6 42/43 11/12 2/3 2/3 13/14 14/15 4/5 L1: 9Kb 67/250 11/36 13/42 15/75 L2: 55Kb 69/350 105/300 L3: 217Kb 337/500 Misc: 30Kb Totl: 2119Kb 710 equivs (617 dynamic)
Należy pamiętać, że wykorzystanie tej funkcjonalności pochłonie trochę pamięci (w zależności od ilości i wielkości istniejących i tworzonych list), jednak w zamian za to, każdy pakiet zostanie sprawdzony najwyżej pięć razy (dla list rozszerzonych) - adres źródłowy, adres docelowy, protokół, opcje protokołu - i wynik, powodujący przejście do przetwarzania następnego pakietu. Funkcjonalność tą opisano szerzej pod tym adresem: http://www.cisco.com/univercd/cc/td/doc/product/software/ios120/120newft/120limit/120s/120s6/turboacl.htm.
Po drugie, staraj się ograniczyć liczbę reguł, zawierając w poszczególnych warunkach jak najogólniejsze stwierdzenia (jeśli nie powoduje to oczywiście przepuszczania niechcianego ruchu). Innymi słowy, na przykład zamiast wpisać ACLkę z 254 wpisami typu permit ip 192.168.0.1, permit ip 192.168.0.2, permit ip 192.168.0.3 zastosuj jeden wpis w ramach listy rozszerzonej, który będzie brzmiał permit ip 192.168.0.0 0.0.0.255 any.
Po trzecie, przemyśl konstrukcję ACLki starając się ocenić, jaki ruch najczęściej będzie docierał do Twojego routera - i jak najwcześniej w liście reguł akceptuj go lub odrzucaj. Pomocne jest w tym momencie polecenie `show ip access-lists'. Przeanalizujmy taką ACLkę:
10 permit ip host 169.254.10.1 host 169.254.9.4 20 permit gre any host 169.254.20.6 30 permit udp host 150.254.183.15 eq ntp host 169.254.9.4 eq ntp (11460 matches) 40 deny ip 192.168.0.0 0.0.255.255 any (9865451 matches) 50 deny ip 173.0.0.0 0.255.255.255 any (124 matches) 60 deny ip 10.0.0.0 0.255.255.255 any 70 deny ip 172.16.0.0 0.15.255.255 any (42 matches) 80 deny ip 0.0.0.0 1.255.255.255 any 90 deny ip 2.0.0.0 0.255.255.255 any 100 deny ip 5.0.0.0 0.255.255.255 any 110 deny ip 7.0.0.0 0.255.255.255 any 120 deny ip 23.0.0.0 0.255.255.255 any (847618 matches) 130 deny ip 27.0.0.0 0.255.255.255 any 140 deny ip 31.0.0.0 0.255.255.255 any 150 deny ip 36.0.0.0 1.255.255.255 any 160 deny ip 39.0.0.0 0.255.255.255 any 170 deny ip 41.0.0.0 0.255.255.255 any 180 deny ip 42.0.0.0 0.255.255.255 any 190 deny ip 49.0.0.0 0.255.255.255 any 200 deny ip 50.0.0.0 0.255.255.255 any 210 deny ip 58.0.0.0 1.255.255.255 any (749 matches) 220 deny ip 70.0.0.0 1.255.255.255 any 230 deny ip 72.0.0.0 7.255.255.255 any (6 matches) 250 deny ip 88.0.0.0 7.255.255.255 any 260 deny ip 169.254.0.0 0.0.255.255 any 270 deny ip 174.0.0.0 1.255.255.255 any 280 deny ip 176.0.0.0 7.255.255.255 any 290 deny ip 184.0.0.0 3.255.255.255 any 300 deny ip 189.0.0.0 0.255.255.255 any 310 deny ip 190.0.0.0 0.255.255.255 any 320 deny ip 192.0.2.0 0.0.0.255 any 330 deny ip 197.0.0.0 0.255.255.255 any 340 deny ip 198.18.0.0 0.1.255.255 any 350 deny ip 223.0.0.0 0.255.255.255 any 360 deny tcp any any range 135 139 (138750 matches) 370 deny ip 96.0.0.0 31.255.255.255 any (6974 matches) 380 deny udp any any range 135 netbios-ss (79235152 matches) 390 deny tcp any range 135 139 any (8371 matches) 400 deny udp any range 135 netbios-ss any
Widać od razu, że reguła pasująca do zdecydowanie największej ilości pakietów (nr. 380, 79,235,152 trafienia) znajduje się na szarym końcu - jest sprawdzana dopiero 38. Powoduje to niewielkie, ale jednak opóźnienia i oczywiście przyczyna się do zwiększonego obciążenia na routerze (pamiętaj, że ACLka przeglądana jest za każdym razem, gdy do interfejsu dotrze, lub ma go opuścić pakiet!). Porządkując listę według trafień otrzymamy coś takiego:
10 deny udp any any range 135 netbios-ss (79235152 matches) 20 deny ip 192.168.0.0 0.0.255.255 any (9865451 matches) 30 deny ip 23.0.0.0 0.255.255.255 any (847618 matches) 40 deny tcp any any range 135 139 (138750 matches) 50 permit udp host 150.254.183.15 eq ntp host 169.254.9.4 eq ntp (11460 matches) 60 deny tcp any range 135 139 any (8371 matches) 70 deny ip 96.0.0.0 31.255.255.255 any (6974 matches) 80 permit ip host 169.254.10.1 host 169.254.9.4 90 deny ip 58.0.0.0 1.255.255.255 any (749 matches) 100 deny ip 173.0.0.0 0.255.255.255 any (124 matches) 110 deny ip 172.16.0.0 0.15.255.255 any (42 matches) 120 deny ip 72.0.0.0 7.255.255.255 any (6 matches) 130 permit gre any host 169.254.20.6 140 deny ip 10.0.0.0 0.255.255.255 any 150 deny ip 0.0.0.0 1.255.255.255 any 160 deny ip 2.0.0.0 0.255.255.255 any 170 deny ip 5.0.0.0 0.255.255.255 any 180 deny ip 7.0.0.0 0.255.255.255 any 190 deny ip 27.0.0.0 0.255.255.255 any 200 deny ip 31.0.0.0 0.255.255.255 any 210 deny ip 36.0.0.0 1.255.255.255 any 220 deny ip 39.0.0.0 0.255.255.255 any 230 deny ip 41.0.0.0 0.255.255.255 any 240 deny ip 42.0.0.0 0.255.255.255 any 250 deny ip 49.0.0.0 0.255.255.255 any 260 deny ip 50.0.0.0 0.255.255.255 any 270 deny ip 70.0.0.0 1.255.255.255 any 280 deny ip 88.0.0.0 7.255.255.255 any 290 deny ip 169.254.0.0 0.0.255.255 any 300 deny ip 174.0.0.0 1.255.255.255 any 310 deny ip 176.0.0.0 7.255.255.255 any 320 deny ip 184.0.0.0 3.255.255.255 any 330 deny ip 189.0.0.0 0.255.255.255 any 340 deny ip 190.0.0.0 0.255.255.255 any 350 deny ip 192.0.2.0 0.0.0.255 any 360 deny ip 197.0.0.0 0.255.255.255 any 370 deny ip 198.18.0.0 0.1.255.255 any 380 deny ip 223.0.0.0 0.255.255.255 any 390 deny udp any range 135 netbios-ss any
Warto taką "optymalizację" przeprowadzić raz na jakiś czas - charakterystyki ruchu zmieniają się okresowo i coś co polepszyło sytuację pół miesiąca temu, może teraz ją pogarszać.
Po czwarte, w większości topologii w jakich router może się znaleźć, warto unikać filtrowania na interfejsie ruchu w obu kierunkach. Jeśli router posiada dwa interfejsy, to zakładając, że filtrujemy ruch wchodzący na obu interfejsach, nie trzeba już specjalnie sprawdzać ruchu wychodzącego drugim interfejsem - wiadomo, że przefiltrowaliśmy go już, gdy wchodził interfejsem pierwszym. Jeśli jednak wykonujesz routing, a jakiś ruch może być generowany z routera, być może będziesz musiał jednak coś filtrować - wszystko zależy od Twojej polityki bezpieczeństwa.
Po piąte, warto zastępować reguły odrzucające ruch do konkretnych adresów IP czy podsieci, statycznymi wpisami routingu wskazującymi na odpowiednio skonfigurowany interfejs Null 0. Routery dużo lepiej radzą sobie z routowaniem ruchu (nawet jeśli chodzi o routowanie do interfejsu będącego "czarną dziurą") niż jego filtrowaniem, czy wykonywaniem skomplikowanych operacji. Innymi słowy, po skonfigurowaniu wirtualnego interfejsu Null 0 w ten sposób:
interface Null0 description Interfejs wyrzucający pakiety no ip unreachables
Wpisy w ACLce odrzucającej ruch w ten sposób:
[...] deny ip 10.0.0.0 0.255.255.255 any deny ip 0.0.0.0 1.255.255.255 any deny ip 2.0.0.0 0.255.255.255 any deny ip 5.0.0.0 0.255.255.255 any deny ip 7.0.0.0 0.255.255.255 any deny ip 27.0.0.0 0.255.255.255 any deny ip 31.0.0.0 0.255.255.255 any deny ip 36.0.0.0 1.255.255.255 any deny ip 39.0.0.0 0.255.255.255 any deny ip 41.0.0.0 0.255.255.255 any [...]
Można zastąpić następującymi wpisami statycznymi routingu (zwróć jednak uwagę, by nie dopisać takiego filtrowania dla adresów sieci, które w twojej konkretnej instalacji występują!):
router# ip route 10.0.0.0 255.0.0.0 null 0 router# ip route 0.0.0.0 254.0.0.0 null 0 router# ip route 2.0.0.0 255.0.0.0 null 0 router# ip route 5.0.0.0 255.0.0.0 null 0 router# ip route 7.0.0.0 255.0.0.0 null 0 router# ip route 27.0.0.0 255.0.0.0 null 0 router# ip route 31.0.0.0 255.0.0.0 null 0 router# ip route 36.0.0.0 254.0.0.0 null 0 router# ip route 39.0.0.0 254.0.0.0 null 0 router# ip route 41.0.0.0 255.0.0.0 null 0
Po szóste i ostatnie, jeśli filtrujesz ruch na interfejsach wewnętrznych pod kątem poprawności adresów (tzn. nie chcesz, by ktoś w Twojej sieci 192.168.0.0/24 mógł wysyłać pakiety z adresem źródłowym np. 172.16.0.0/16), a masz lub możesz włączyć mechanizm CEF, możesz ACLkę w tej postaci:
ip access-list extended RuchLAN deny tcp any any range 135 139 deny udp any any range 135 139 deny tcp any range 135 139 any deny udp any range 135 netbios-ss any permit ip 192.168.0.0 0.0.0.255 any deny ip any any
...zmodyfikować do postaci:
ip access-list extended RuchLAN deny tcp any any range 135 139 deny udp any any range 135 139 deny tcp any range 135 139 any deny udp any range 135 netbios-ss any permit ip any any
A w zamian za to, włączyć na interfejsie do którego przypisana była ta ACLka, mechanizm uRPF, czyli unicast Reverse-Path-Filtering, w ten sposób:
router# ip cef router# conf t router(config)# interface FastEthernet 0 router(config-if)# ip verify unicast reverse-path
Jak to działa? uRPF opiera swoje działanie o tablicę budowaną przez CEF - FIB (ang. Forwarding Information Base). Po otrzymaniu przez router pakietu, przechodzi on następującą drogę:
Sprawdzana jest wejściowa ACLka przypisana do interfejsu.
uRPF sprawdza, czy droga powrotna dla pakietu wskazuje na interfejs, którym dotarł on do routera - jeśli nie, pakiet jest odrzucany
CEF sprawdza FIB, by wyznaczyć dalszą drogę dla pakietu (jeśli nie został odrzucony)
Na interfejsie, którym pakiet ma opuścić router, sprawdzana jest ACLka wyjściowa
Pakiet jest wysyłany przez interfejs.
Innymi słowy, załóżmy, że masz router z dwoma interfejsami - Ethernetowym, o adresie 192.168.0.1/24 i szeregowy, z adresem 169.254.10.2/30. Po włączeniu mechanizmu CEF, budowany jest FIB. Znajdzie się w nim wpis dla sieci 192.168.0.0/24 jako "zaczepionej" na interfejsie Ethernet. Zarażona stacja w sieci LAN zaczyna generować pakiety, z losowo wybranymi adresami źródłowymi. Dla każdego pakietu otrzymanego interfejsem Ethernet, router sprawdza, czy jeśli przyszłaby na niego odpowiedź, miałby wysłać ją interfejsem, z którego właśnie ją odebrał. Załóżmy, że router otrzymał pakiet ze sfałszowanego adresu 10.7.65.2. Sprawdza tablicę FIB i nie znajduje wpisu, który mówiłby, że do sieci 10 należy wychodzić interfejsem Ethernetowym - pakiet jest w związku z tym odrzucany. Na tej samej zasadzie działa ochrona ruchu, otrzymywanego przez interfejs szeregowy - jeśli tylko włączono na nim mechanizm uRPF. Pakiet, który chciałby zostać "wstrzelony" do sieci LAN (załóżmy, że przyszedł z adresem należącym do Twojej sieci LAN), zostanie odrzucony, ponieważ przyszedł złym interfejsem.
Działanie funkcji uRPF na konkretnym interfejsie potwierdzić można wydając polecenie:
router# show ip interface fastethernet 0 FastEthernet0 is up, line protocol is up [...] IP verify source reachable-via RX, allow default ! włączona weryfikacja adresów źródłowych 642 verification drops ! ilość odrzuconych pakietów z uwagi na zły adres źródłowy
A ogólnie dla całego routera:
router# show ip traffic IP statistics: [...] Drop: 0 encapsulation failed, 0 unresolved, 0 no adjacency 0 no route, 2512 unicast RPF, 0 forced drop
VPN to Virtual Private Network, czyli wirtualna sieć prywatna. Termin "wirtualna" oznacza, że jest to sieć stworzona w oparciu o współdzieloną z innymi użytkownikami infrastrukturę sieciową (router, media dostępowe itp.), ale jednak odrębna.
Sieci VPN można zatem tworzyć zarówno w oparciu o protokoły takie jak ATM czy Frame Relay (osobne kanały PVC/SVC), MPLS (osobne instancje routingu) czy IPsec, L2TP oraz PPTP (tunele L3 lub połączenia punkt-punkt sąsiednich urządzeń)
Zakładamy, że łączymy dwie lokalizacje ("A" i "B") wyposażone w pojedyncze PVC do Internetu (w obu przypadkach DLCI 99).
Dane lokalizacji "A":
Połączenie dostępowe do routera brzegowego: 169.254.10.0/30, przy czym .1 to adres routera ISP a .2 to adres routera klienta
Sieć lokalna ma adresację 192.168.10.0/24, przy czym .1 to adres interfejsu routera.
Ruch nie chroniony tunelem IPsec wysyłany jest normalnie do Internetu, po zNATowaniu na publiczny adres interfejsu routera.
Dane lokalizacji "B":
Połączenie dostępowe do routera brzegowego: 169.254.20.0/30, przy czym .1 to adres routera ISP a .2 to adres routera klienta
Sieć lokalna ma adresację 192.168.20.0/24, przy czym .1 to adres interfejsu routera.
Ruch nie chroniony tunelem IPsec wysyłany jest normalnie do Internetu, po zNATowaniu na publiczny adres interfejsu routera.
Poniżej konfiguracja routera w lokalizacji "A":
no service pad service tcp-keepalives-in service tcp-keepalives-out service timestamps debug datetime msec localtime service timestamps log datetime msec localtime service password-encryption no service dhcp ! hostname rtr_a ! enable password jakies_trudne_haslo ! username user_1 password haslo_usera_1 ip subnet-zero no ip source-route no ip domain-lookup ip tcp path-mtu-discovery logging buffered 64000 ! crypto isakmp policy 1 ! konfigurujemy politykę dla ISAKMP, reguła #1 hash md5 ! wiadomości ISAKMP mają używać algortmu mieszającego MD5 ! (jest szybszy ale i mniej bezpieczny niż SHA1) authentication pre-share ! uwierzytelnienie węzłów ISAKMP odbędzie się w oparciu o ! współdzielony tajny klucz crypto isakmp key trudne_haslo_isakmp address 169.254.20.2 ! dla partnera o adresie 169.254.20.2 używać będziemy dla ! nawiązania sesji tajnego klucza "haslo_isakmp" ! oczywiście klucz po obu stronach musi się zgadzać ! ! crypto ipsec transform-set myset esp-des esp-md5-hmac ! Po nawiązaniu sesji ISAKMP, IPsec będzie używał ! protokołu ESP z algorytmem szyfrowania ESP i algorytmu ! mieszającego MD5-HMAC mode tunnel ! połączenie IPsec będzie połączeniem w trybie tunelu ! crypto map MapaISAKMP 1 ipsec-isakmp ! po otrzymaniu przez router pakietu ISAKMP na port 500/udp ! zaczyna on sekwencyjne sprawdzanie kolejnych reguł w crypto-mapach ! ta, jedyna, ma numer 1 i zostanie sprawdzona pierwsza set peer 169.254.20.2 ! reguła pasuje do partnera o adresie 169.254.20.2 set transform-set myset ! używamy dla niego przekształcenia o nazwie "myset" match address 110 ! ruchem szyfrowanym wg tej reguły jest ruch pasujący do ACL 110 ! interface FastEthernet 0/0 description Polaczenie dla sieci LAN ip address 192.168.10.1 255.255.255.0 ip nat inside ! interface Serial0 description Konfiguracja fizycznego interfejsu szeregowego no ip address encapsulation frame-relay frame-relay lmi-type ansi ! interface Serial0.1 point-to-point description Polaczenie do Internetu 2Mbit ip address 169.254.10.2 255.255.255.252 frame-relay interface-dlci 99 IETF ip nat outside crypto map MapaISAKMP ! ruch przechodzący przez ten interfejs, ma trafiać do ! crypto-mapy MapaISAKMP ! ip classless ip route 0.0.0.0 0.0.0.0 Serial0.1 no ip http server ! ip nat inside source list 100 interface Serial 0.1 overload ! access-list 100 permit ip 192.168.10.0 0.0.0.255 any access-list 110 permit ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255 ! ACLka używana w określeniu reguł szyfrowania - podlega mu ! ruch z podsieci 192.168.10.0/24 do podsieci 192.168.20.0/24 ! (z "naszego" LANu do zdalnego ! no cdp run ! line con 0 exec-timeout 5 0 login local line vty 0 4 exec-timeout 5 0 login local ! end
..a teraz konfiguracja routera w lokalizacji "B":
no service pad service tcp-keepalives-in service tcp-keepalives-out service timestamps debug datetime msec localtime service timestamps log datetime msec localtime service password-encryption no service dhcp ! hostname rtr_b ! enable password jakies_trudne_haslo ! username user_1 password haslo_usera_1 ip subnet-zero no ip source-route no ip domain-lookup ip tcp path-mtu-discovery logging buffered 64000 ! crypto isakmp policy 1 hash md5 authentication pre-share crypto isakmp key trudne_haslo_isakmp address 169.254.10.2 ! ! crypto ipsec transform-set myset esp-des esp-md5-hmac mode tunnel ! crypto map MapaISAKMP 1 ipsec-isakmp set peer 169.254.10.2 set transform-set myset match address 110 ! interface FastEthernet 0/0 description Polaczenie dla sieci LAN ip address 192.168.20.1 255.255.255.0 ip nat inside ! interface Serial0 description Konfiguracja fizycznego interfejsu szeregowego no ip address encapsulation frame-relay frame-relay lmi-type ansi ! interface Serial0.1 point-to-point description Polaczenie do Internetu 2Mbit ip address 169.254.20.2 255.255.255.252 frame-relay interface-dlci 99 IETF ip nat outside crypto map MapaISAKMP ! ip classless ip route 0.0.0.0 0.0.0.0 Serial0.1 no ip http server ! ip nat inside source list 100 interface Serial 0.1 overload ! access-list 100 permit ip 192.168.20.0 0.0.0.255 any access-list 110 permit ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 ! no cdp run ! line con 0 exec-timeout 5 0 login local line vty 0 4 exec-timeout 5 0 login local ! end
Zakładamy, że łączymy dwie lokalizacje ("A" i "B") wyposażone w pojedyncze PVC do Internetu (w obu przypadkach DLCI 99). Dodatkowo, chcemy chronić tunel GRE, ponieważ oprócz ruchu unicastowego, chcemy przenosić ruch broadcastowy lub np. inne protokoły (IPX itp.)
Dane lokalizacji "A":
Połączenie dostępowe do routera brzegowego: 169.254.10.0/30, przy czym .1 to adres routera ISP a .2 to adres routera klienta
Sieć lokalna ma adresację 192.168.10.0/24, przy czym .1 to adres interfejsu routera.
Tunel ma adres 192.168.254.1, drugi koniec (po stronie drugiej lokalizacji) ma adres 192.168.254.2, w obu przypadkach używamy maski /30.
Ruch nie chroniony tunelem IPsec wysyłany jest normalnie do Internetu, po zNATowaniu na publiczny adres interfejsu routera.
Dane lokalizacji "B":
Połączenie dostępowe do routera brzegowego: 169.254.20.0/30, przy czym .1 to adres routera ISP a .2 to adres routera klienta
Sieć lokalna ma adresację 192.168.20.0/24, przy czym .1 to adres interfejsu routera.
Tunel ma adres 192.168.254.2, drugi koniec (po stronie drugiej lokalizacji) ma adres 192.168.254.1, w obu przypadkach używamy maski /30.
Ruch nie chroniony tunelem IPsec wysyłany jest normalnie do Internetu, po zNATowaniu na publiczny adres interfejsu routera.
Poniżej konfiguracja routera w lokalizacji "A":
no service pad service tcp-keepalives-in service tcp-keepalives-out service timestamps debug datetime msec localtime service timestamps log datetime msec localtime service password-encryption no service dhcp ! hostname rtr_a ! enable password jakies_trudne_haslo ! username user_1 password haslo_usera_1 ip subnet-zero no ip source-route no ip domain-lookup ip tcp path-mtu-discovery logging buffered 64000 ! crypto isakmp policy 1 hash md5 authentication pre-share crypto isakmp key trudne_haslo_isakmp address 169.254.20.2 ! ! crypto ipsec transform-set myset esp-des esp-md5-hmac mode transport ! crypto map MapaISAKMP 1 ipsec-isakmp set peer 169.254.20.2 set transform-set myset match address SiecIPSEC ! ponieważ używamy tunelu GRE, szyfrowaniu podlegają już pakiety ! GRE wymieniane pomiędzy publicznymi adresami routerów - ta ACLka ! dokładnie to wskazuje ! interface Tunnel0 ! Dodajemy wirtualny interfejs Tunel 0 ip address 192.168.254.1 255.255.255.252 ! nadajemy mu adres IP - może to być dowolny adres prywatny, ! sensownie jest zarezerwować sobie np. całą klasę C na potrzeby ! tuneli i brać z nich kolejne /30 tunnel source Serial 0.1 ! źródłem tunelu jest interfejs publiczny routera tunnel destination 169.254.20.2 ! a miejscem docelowym publiczny adres naszego partnera crypto map MapaISAKMP ! ruch przechodzący przez ten interfejs ma być chroniony ! regułami zawartymi w crypto-mapie MapaISAKMP ! interface FastEthernet 0/0 description Polaczenie dla sieci LAN ip address 192.168.10.1 255.255.255.0 ip nat inside ! interface Serial0 description Konfiguracja fizycznego interfejsu szeregowego no ip address encapsulation frame-relay frame-relay lmi-type ansi ! interface Serial0.1 point-to-point description Polaczenie do Internetu 2Mbit ip address 169.254.10.2 255.255.255.252 frame-relay interface-dlci 99 IETF ip nat outside crypto map MapaISAKMP ! ip classless ip route 0.0.0.0 0.0.0.0 Serial0.1 ip route 192.168.20.0 255.255.255.0 Tunnel0 ! statycznie wskazujemy, że ruch do podsieci 192.168.20.0/24 ! (LAN naszego partnera) ma się odbywać przez Tunel 0 no ip http server ! ip nat inside source list 100 interface Serial 0.1 overload ! access-list 100 permit ip 192.168.10.0 0.0.0.255 any ! ip access-list extended SiecIPSEC permit gre host 169.254.10.2 host 169.254.20.2 ! szyfrujemy ruch protokołu GRE pomiędzy publicznymi adresami ! partnerów ! no cdp run ! line con 0 exec-timeout 5 0 login local line vty 0 4 exec-timeout 5 0 login local ! end
..a teraz konfiguracja routera w lokalizacji "B":
no service pad service tcp-keepalives-in service tcp-keepalives-out service timestamps debug datetime msec localtime service timestamps log datetime msec localtime service password-encryption no service dhcp ! hostname rtr_b ! enable password jakies_trudne_haslo ! username user_1 password haslo_usera_1 ip subnet-zero no ip source-route no ip domain-lookup ip tcp path-mtu-discovery logging buffered 64000 ! crypto isakmp policy 1 hash md5 authentication pre-share crypto isakmp key trudne_haslo_isakmp address 169.254.10.2 ! ! crypto ipsec transform-set myset esp-des esp-md5-hmac mode transport ! interface Tunnel0 ip address 192.168.254.2 255.255.255.252 tunnel source Serial 0.1 tunnel destination 169.254.10.2 crypto map MapaISAKMP ! crypto map MapaISAKMP 1 ipsec-isakmp set peer 169.254.10.2 set transform-set myset match address SiecIPSEC ! interface FastEthernet 0/0 description Polaczenie dla sieci LAN ip address 192.168.20.1 255.255.255.0 ip nat inside ! interface Serial0 description Konfiguracja fizycznego interfejsu szeregowego no ip address encapsulation frame-relay frame-relay lmi-type ansi ! interface Serial0.1 point-to-point description Polaczenie do Internetu 2Mbit ip address 169.254.20.2 255.255.255.252 frame-relay interface-dlci 99 IETF ip nat outside crypto map MapaISAKMP ! ip classless ip route 0.0.0.0 0.0.0.0 Serial0.1 ip route 192.168.10.0 255.255.255.0 Tunnel0 no ip http server ! ip nat inside source list 100 interface Serial 0.1 overload ! access-list 100 permit ip 192.168.20.0 0.0.0.255 any ! ip access-list extended SiecIPSEC permit gre host 169.254.20.2 host 169.254.10.2 ! no cdp run ! line con 0 exec-timeout 5 0 login local line vty 0 4 exec-timeout 5 0 login local ! end
ISDN dostarczany jest w dwóch rodzajach: ISDN BRI, czyli Basic Rate Interface, na który składają się 2 kanały B i jeden D, oraz ISDN PRI, czyli Primary Rate Interface, składający się w Europie z 30 kanałów B i jednego D. Kanały B mają standardową przepustowość 64kbit/s, natomiast kanał D dla łącz BRI ma przepustowość 16kbit/s, a dla łącza PRI 64kbit/s.
Uwaga: tylko kanały B przenoszą dane, kanały D używane są tylko do sygnalizacji.
Protokoły Q.921 i Q.931 działają w kanale D połączenia ISDN. Protokół Q.921 odpowiedzialny jest za warstwę drugą połączenia - sygnalizację między routerem a centralką ISDN. Protokół Q.931 odpowiada natomiast za konfigurację połączenia po tym, jak w ramach protokołu Q.921 strony strony uzgodnią warstwę transportową.
Protokoły PPP, HDLC, IP czy IPX przenoszone są w kanale B połączenia ISDN. Protokoły PPP i HDLC to protokoły warstwy drugiej, natomiast IP i IPX to protokoły warstwy trzeciej. Najczęściej przy połączeniach routerów przez ISDN, przenosi się pakiety IP w ramkach PPP (po uprzednim uwierzytelnieniu się).
Jeśli masz wolny slot WIC (routery 1600, 1700, 2600, 3600 i 3700), możesz zastosować kartę WIC-1B-S/T. Zawiera ona pojedyńczy port ISDN BRI.
Jeśli masz wolny slot NM (routery 2600, 3600 i 3700), możesz zastosować karty NM-4B-S/T lub NM-8B-S/T, zawierające odpowiednio 4 i 8 styków ISDN BRI.
Jeśli natomiast masz wolny slot PA (routery serii 7000) i zależy Ci na portach BRI, dostępna jest tylko jedna karta: PA-8B-S/T, zawierająca osiem portów BRI.
Jeśli masz wolny slot NM (routery 2600, 3600 i 3700), możesz zastosować kartę NM-1CE1T1-PRI lub NM-2CE1T1-PRI. Zawierają one odpowiednio jeden i dwa styki ISDN PRI.
Jest to często spotykana konfiguracja, w sytuacji, gdy Internet dostarczany jest np. przez połączenie z darmową linią 0202422 TP S.A. Uwaga to tylko częściowa konfiguracja, musisz dodać konfigurację interfejsu wewnętrznego oraz NATu (jako minimum).
! isdn switch-type basic-net3 ! określamy typ centrali ISDN jako basic-net3 (standard w Europie) ! interface BRI 0 no ip address ! fizyczny interfejs nie ma adresu IP dialer pool-member 1 ! jest członkiem pierwszej puli dialerów isdn spid1 Nasz numer telefonu no fair-queue no cdp enable ! interface Dialer1 ! interfejs wirtualny odpowiadający za przywiązanie ! warstwy trzeciej ip address negotiated ! adres IP otrzymujemy dynamicznie encapsulation ppp ! używamy protokołu PPP dialer pool 1 ! jest członkiem pierwszej puli dialerów dialer remote-name ppp ! zdalny host ma nazwę ppp (chodzi o przywiązanie loginu do hasła) dialer string 0202422 ! dzwonimy pod numer 0202422 dialer-group 1 ! jest członkiem pierwszej grupy dzwoniącej no cdp enable ppp authentication chap callin ! używamy uwierzytelniania CHAP w ramach PPP ppp multilink ! staramy się zestawić połączenie multilink PPP (oba kanały B) ppp chap hostname TwojLogin ! login, które otrzymałeś w ramach usługi dla ogólnego dostępu jest to ppp ppp chap password TwojeHasło ! hasło jak wyżej dla tego numeru jest to ppp ! ip route 0.0.0.0 0.0.0.0 Dialer1 ! ip dialer-list 1 protocol ip
Poleceniem `show isdn history':
router# show isdn history -------------------------------------------------------------------------------- ISDN CALL HISTORY -------------------------------------------------------------------------------- History table has a maximum of 100 entries. History table data is retained for a maximum of 15 Minutes. -------------------------------------------------------------------------------- Call Calling Called Remote Seconds Seconds Seconds Charges Type Number Number Name Used Left Idle Units/Currency -------------------------------------------------------------------------------- Out +0202124 ppp 360 0 Out +0202124 ppp 392 0 0 --------------------------------------------------------------------------------
Jeśli masz wolny slot WIC (routery 1600, 1700, 2600, 3600 i 3700), możesz zastosować kartę VWIC-1MFT-E1 lub VWIC-2MFT-E1. Zawierają one odpowiednio jeden i dwa porty E1.
Jeśli natomiast masz wolny slot PA (routery serii 7000) masz do wyboru kartę PA-4E1G/75 (75 ohmów) lub PA-4E1G/120 (120 ohmów). Każda z kart zawiera po cztery porty E1, które obsługują również pracę w trybie G.703.
Jeśli masz wolny slot NM (routery 2600, 3600 i 3700), możesz zastosować kartę NM-1T3/E3. Zawiera one pojedyńczy port E3 (przepływność do 34Mbit/s).
Jeśli masz wolny slot PA (routery serii 7000) masz do wyboru kartę PA-E3 (jeden port E3) lub kartę PA-2E3 (dwa porty E3).
Jeśli masz wolny slot WIC (routery 2600, 3600 i 3700), możesz użyć karty VWIC-1MFT-E1 lub VWIC-2MFT-E1 oraz karty-akceleratora AIM-ATM, by zaterminować ATM.
Jeśli masz wolny slot NM (routery 2600, 3600 i 3700), możesz zastosować kartę NM-1ATM. Zawiera one pojedynczy port RJ-48C i obsługuje przepływności do 25Mbit/s. Warto dokupić również kartę-akcelerator AIM-ATM, ponieważ wydajność bez niej może być bardzo mała.
Routery 2691, 3600 i 3725 obsługują również kartę NM-1A-OC3MM, która zawiera styk ATM OC3 - do przepływności 155Mbit/s.
Jeśli masz wolny slot PA (routery serii 7000) masz do wyboru kartę PA-A3-E3 (ATM w oparciu o łącze E3 34Mbit/s) lub PA-A3-OC3MM (ATM w oparciu o OC3 - 155Mbit/s).
Proces mapowania adresów warstwy 2 w 3 i przekazywania pakietów na docelowy interfejs, nosi nazwe switchingu (po polsku komutacja).
Process Switching
Metoda ta bylą pierwszą metodą zaimplementowaną w IOS i jest to metoda najprostsza. Pierwszy pakiet w strumieniu (ang. flow) jest kopiowany do bufora systemowego, a następnie procesor przeszukuję tablicę routingu w poszukiwaniu miejsca docelowego. Suma kontrolna (CRC) liczona jest przez procesor. Następnie informacje warstwy 2 są przepisywane i pakiet wysyłany jest na docelowy interfejs. Każde następne pakiety strumienia są komutowane podobnie.
Process switching ma najdłuższy czas komutacji pakietów, ponieważ używa buforów systemowych i procesora głównego, aby "obrobić" każdy pakiet otrzymany przez router. Niemniej jednak, ten rodzaj komutacji potrzebny jest przy niektórych zadaniach, nawet, jeśli na routerze działają inne, optymalniejsze mechabuzmy komutacji - np. logowanie pakietów trafiających w ACLki, debugging pakietów IP itp.
Minusy process switchingu: wymaga aby dla każdego pakietu zajrzeć do tablicy routingu - kosztuje to czas. Jeśli tablica routingu rozrośnie się, zwiększy się również czas przetwarzania każdego pakietu. Rekursywne zapytania także zwiekszają czas przetwarzania pakietu. Zwiększa się także obciążenie CPU routera, co przy małych sieciach może być do pominięcia, ale przy większych staje się problemem. Innym problemem rzutujacym na wydajność jest szybkość transferu danych z pamięci.
Fast Switching
Fast switching używa pamięci podęcznej by przechowywać informacje o przepływającym przez router strumieniu (ang. flow). W momencie włączenia fast switching, pierwszy pakiet w strumieniu jest zapisywany w pamięci packet (oddzielny obszar w buforach systemowych). Następnie procesor przelicza mapowanie warstwy 3 na 2, zapisuje trasę w pamięci route (ang. route cache) i każdy następny pakiet ze strumienia jest już komutowany z wykorzystaniem zapisanych w pamięciach podręcznych informacji.
Ponieważ adres pakietów w strumieniu jest już znany, route cache służy również do sprawdzenia interfejsu docelowego, przez który pakiet powinien opuścić router. Następnie pakiet ma przepisywany nagłówek warstwy 2 a procesor interfejsu oblicza sumę CRC. Kolejne pakiety z potoku nie przerywają działania procesora głównego, a ponieważ interfejs docelowy jest znany (przechowywany w route cache) również bufory systemowe nie są używane do przetrzymywania pakietu.
Fast switching jest domyślnym mechanizmem komutacji na routerach 1600, 1700, 2500 oraz 2600 na interfejsach Ethernet, FastEthernet oraz Serial. Jeśli fast stwitching zostało wyłączone, można przywrocić je używajac polecenia ip route-cache na interfejsie. Aby monitorować informacje o działaniu tego mechanizmu, należy wydać komende show ip cache.
Optimum oraz Distributed Switching
Metody te nie są dostępne w routerach serii 1600, 1700, 2500 oraz 2600. Przy optimum switching używana jest metoda podobna do fast switching, z tym, że po tym jak pierwszy pakiet strumienia został przetworzony, informacja o trasie dla dalszych pakietów jest wpisywana do osobnej pamięci podręcznej (optimum switching cache), która działa szybciej i optymalniej niż w metodzie fast. Optimum switching dostępne jest na routerach klasy 7200.
Aby włączyć optimum switching należy wydać komende: ip route-cache optimum na każdym interfejsie. Monitoring lub troubleshooting wymaga użycia komendy: show ip cache optimum.
Distributed switching wymaga z kolei użycia osobnych Versatile Interface Processor (VIP). Karta VIP przechowuje lokalną kopię route cache i przeprowadza cały proces komutacji lokalnie - interfejs nie musi czekać na pamięć.
NetFlow Switching
NetFlow switching pozwala na zbieranie informacji o ruchu IP do celów rozliczeniowych i/lub dokładniejszej analizy obciążenia sieci. NetFlow używa domyślnie fast switchingu lub optimum switchingu do przekazywania ruchu IP. Strumienie (ang. flows) śledzone są z dokładnością do protokołu, portu (TCP/UDP), typu serwisu. Informacje te mogą być eksportowane do stacji zarządzającej. Ponieważ dane zbierane przez NetFlow są przechowywane w routing cache, proces komutacji NetFlow jest przeźroczysty dla wszystkich urządzeń sieciowych. NetFlow zwiększa jednak obciążenie procesora oraz pamięci. Domyślnie NetFlow cache używa 64 bajty pamięci na każdy strumień.
Komutację NetFlow można włączyć wydając polecenie ip route-cache flow. Aby monitorować pracę NetFlow można użyć polecenia show ip cache flow. Eksport danych NetFlow następuje dopiero, gdy wskażesz adresata danych poleceniem ip flow-export adres_IP.
Cisco Express Forwarding - CEF
Tablica FIB (ang. Forwarding Information Base) używana jest do przechowywania wszystkich znanych tras z tablicy routingu, a do jej przeszukiwania używany jest zaawansowany algorytm. FIB zmienia się, jeśli zmieniają się wpisy w tablicy routingu routera. Tablica FIB (ewentualnie CEF table) implementowana jest jako "zmniejszona" tablica routingu, za pomocą 256-ścieżkowej tablicy mtrie. Aby wyświetlic tablicę użyj polecenia show ip cef summary. W tablicy każdy węzeł (ang. node) może posiadać do 256 "dzieci". Każde "dziecko" (link) używane jest do reprezentacji innego adresu dla każdego oktetu w adresie IPv4.
Tablica sąsiedztw (ang. adjacency) używana jest w mechaniźmie CEF do przechowywania informacji o sąsiadach. Sąsiadem może zostać tylko taki host, który jest w odległości jednego hopa. Tablica sąsiedztw przechowuje adresy warstwy 2 sąsiadów, dla każdego wpisu w FIB. Aby wyświetlić tablicę użyj polecenia show adjacency.
Ponieważ adresy docelowe mogą mieć więcej niż jedną scieżkę, CEF może zostać użyty do rozkładania obciążenia (ang. load balancing), poprzez różne ścieżki. Jeśli interfejs otrzymuje pakiet i włączony jest mechanizm CEF, router przeszukuje tablicę FIB. Po znalezieniu pasujących informacji, tworzony jest nagłówek warstwy 2 i pakiet jest komutowany.
CEF opisano dokładniej tutaj: http://www.cisco.com/warp/public/cc/pd/iosw/iore/tech/cef_wp.htm.
Jeśli masz ochotę poczytać dokładniej o metodach komutacji, warto zajrzeć do podręcznika do najnowszej wersji IOS poświęconego właśnie tym zagadnieniom: http://www.cisco.com/univercd/cc/td/doc/product/software/ios123/123cgcr/swit_vcg.htm.
Na platformach, które CEF wspierają i w których załadowano IOS z feature-setem obsługującym go, wystarczy wydać polecenie:
router(config)# ip cef
Spowoduje to włączenie na wszystkich interfejsach tego routera, chyba, że w konfiguracji konkretnego interfejsu(-ów) wskazano wprost inny rodzaj mechanizmu komutacji, lub w ogóle wyłączono na nim jakiekolwiek mechanizmy (np. poleceniem no ip route-cache).
Uwaga: Włączenie CEFu powoduje zajęcie pewnej ilości pamięci. Jeśli masz jej bardzo mało, postaraj się najpierw ją rozszerzyć lub wyłączyć nieużywane usługi, a dopiero później włączyć CEF.
W nowych IOSach (ścieżka 12.2 i 12.3) samo włączenie CEFu powoduje włączenie również zaawansowanych mechanizmów dla ruchu obsługiwanego route-mapami. Na pozostałych platformach należy dodatkowo w definicji konkretnego interfejsu (do którego już przypisano polecenie ip route-map nazwa_route_mapy). dodać:
router(config)# interface FastEthernet 0/0 router(config-if)# ip route-map moja-mapa router(config-if)# ip route-cache policy
Jeśli włączyłeś CEF i nie wiesz, czy obsługuje on również ruch obsługiwany przez route-mapy, sprawdź to na przykład tak:
router# show ip interface FastEthernet 0/0 | include route-cache IP route-cache flags are Fast, CEF
Jeśli natomiast mechanizm CEF jest wyłączony (ale włączony pozostaje fast-switching, domyślna konfiguracja wielu mniejszych routerów), stan interfejsu wygląda tak:
router# show ip interface FastEthernet 0/0 | include route-cache IP route-cache flags are none
Posługując się poleceniem `show ip interface X'.
router# show ip interface FastEthernet 0/0 FastEthernet0/0 is up, line protocol is up Internet address is 169.254.10.1/24 Broadcast address is 255.255.255.255 [...] IP fast switching is enabled IP fast switching on the same interface is disabled IP Flow switching is disabled IP CEF switching is enabled IP CEF Fast switching turbo vector IP multicast fast switching is enabled IP multicast distributed fast switching is disabled IP route-cache flags are Fast, CEF
Ogólne zestawienie, zawierające podział ruchu na obsługiwany przez procesor lub inne mechanizmy komutacji (zbiorczo), uzyskać można wydając polecenie `show interface stats':
router# show interface stats FastEthernet0 Switching path Pkts In Chars In Pkts Out Chars Out Processor 1061140 147825393 1527082 123126868 Route cache 15218207 2362951731 14344465 2136433785 Total 16279347 2510777124 15871547 2259560653 FastEthernet1 Switching path Pkts In Chars In Pkts Out Chars Out Processor 18912250 2891638844 18435628 47230091 Route cache 0 0 0 0 Total 18912250 2891638844 18435628 47230091
Natomiast posługując się poleceniem `show interface switching' możesz uzyskać dokładniejsze informacje, z rozbiciem na konkretne typy komutacji:
router# show interface switching FastEthernet0/0 Do sieci LAN Throttle count 0 Drops RP 4102 SP 0 SPD Flushes Fast 0 SSE 0 SPD Aggress Fast 0 SPD Priority Inputs 344036 Drops 0 Protocol Path Pkts In Chars In Pkts Out Chars Out Other Process 0 0 29273 1756380 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IP Process 27314376 623508416 7373999 764616258 Cache misses 0 Fast 50915903 2865863510 70504415 1275783563 Auton/SSE 0 0 0 0 ARP Process 350986 21059160 143215 8592900 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0
Jak widać, fast-switching obsłużył na interfejsie FastEthernet 0/0 50,915,903 pakiety przychodzące i 70,504,415 pakietów wychodzących. Tylko 27,314,376 pakietów przychodzących i 7,373,999 pakietów wychodzących obsługiwane było przez process-switching.
Poniżej to samo, ale dla interfejsu szeregowego:
Serial0/0 Throttle count 0 Drops RP 511 SP 0 SPD Flushes Fast 0 SSE 0 SPD Aggress Fast 0 SPD Priority Inputs 60384 Drops 0 Protocol Path Pkts In Chars In Pkts Out Chars Out Other Process 0 0 29282 409958 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IP Process 4418141 455923877 24316765 123842058 Cache misses 0 Fast 37269672 2769716975 17250459 2590666322 Auton/SSE 0 0 0 0
Najprawdopodobniej problemem jest wyczerpanie pamięci na wykonywanie translacji NAT. Jeśli masz stacje intensywnie korzystające z NAT, powinieneś skrócić czasy życia translacji - oszczędzając w ten sposób pamięć.
router(config)# ip nat ip nat translation timeout X
...gdzie X to limit czasu dla bezczynnej translacji w sekundach. Domyślnie równy jest 86400, czyli 24 godziny. Sensowną wartością na początek byłoby 3600, czyli 1 godzina.
Limit ten dotyczy jednak tylko translacji, które nie odbywają się w ramach translacji typu overload, czyli takiej, w której liczba stacji z adresami prywatnymi jest większa, niż liczba publicznych adresów IP (innymi słowy, jeśli masz 1 czy 2 adresy publiczne, a sieć LAN ma 200 stacji, takiej translacji właśnie używasz).
Aby w takiej sytuacji skrócić domyślne czasy translacji, należy użyć następujących poleceń (jeśli używasz dla swojej sieci zarówno translacji typu overload jak i 1:1, zastosuj oba wpisy):
router(config)# ip nat ip nat translation tcp-timeout A
..gdzie A to limit czasu w sekundach dla połączeń TCP (domyślnie również 86400, czyli 24 godziny). Jeśli masz opisane wyżej problemy - skróć czas translacji TCP na początek do 1 godziny (3600).
Jeśli to stacje z systemem operacyjnym Microsoft Windows, to problem mogą powodować połączenia z i do mechanizmów Microsoft Networking, pracujących standardowo w zakresie portów 135-139 zarówno w oparciu o TCP jak i UDP.
Jeśli Twoja konfiguracja NAT wygląda obecnie tak:
interface Ethernet0 ip nat inside ! interface Ethernet1 ip nat outside ! ip nat inside source list 100 interface Ethernet 1 overload ! access-list 100 permit ip 192.168.0.0 0.0.0.255 any access-list 100 deny ip any any
...wystarczy, że zmienisz ACL 100 tak, by odrzucała ruch należący do Microsoft Networking. Docelowo lista ta powinna wyglądać np. tak:
access-list 100 deny tcp any any range 135 139 access-list 100 deny udp any any range 135 139 access-list 100 deny tcp any range 135 139 any access-list 100 deny udp any range 135 139 any access-list 100 permit ip 192.168.0.0 0.0.0.255 any access-list 100 deny ip any any
Informacje podawane w zestawieniach dotyczą zwykle kpps lub Mpps - oznaczające odpowienio kilo pakietów na sekundę i mega pakietów na sekundę. Np. 100 kpps oznacza wydajność rzędu 100,000 pakietów na sekundę.
Teraz zderzamy się z rzeczywistością.
Po pierwsze, taka wydajność osiągana jest bez skonfigurowanych żadnych usług (NAT, ACL, QoS itp.) i jest sumą ruchu do i z routera.
Po drugie, wartości te podawane są niestety dla różnych wielkości pakietów. Z uwagi na konstrukcję i działanie, router gorzej znosi routing pakietów mniejszych (np. 64-bajtowych), ponieważ dla każdego musi wykonać pewien zestaw czynności, a lepiej większych (np. 1500-bajtowych). Co więcej, routing tej samej ilości pakietów ale o różnych rozmiarach, daje diametralnie różne wartości przepustowości - 100kpps dla pakietów o długości 64-bajtów to "zaledwie" 51Mbit/s, ale już dla pakietów 1500-bajtowych - 1,2Gbit/s! Przyjeło się, zgodnie z RFC dotyczącym pomiaru wydajności routerów, że pomiary powinny być wykonywane dla wielu rozmiarów pakietów - ale producenci podają zwykle pomiary wykonane dla pakietów o długości 384-512 bajtów.
Po trzecie w końcu, należy wziąć pod uwagę architekturę urządzenia - routery Cisco są w stanie wykonywać routing na wiele różnych sposobów, począwszy od routingu wykonywanego tylko przez procesor (ang. process switching) po wykorzystanie zaawansowanych mechanizmów opracowanych w tej firmie (np. ang. CEF, Cisco Express Forwarding).
W zależności od zbioru realnie używanych usług, czyli ACL, QoS, NATa czy protokołów routingu, dany router może być idealny do danego zastosowania, lub na przykład zupełnie się do niego nie nadawać.
W sytuacji gdy dysponujesz jednym łączem do Internetu, o przepustowości do 2Mbit/s (symetrycznie), dobrym wyborem będzie router klasy 1700. Przy sensownych kompromisach, router sprawdzi się również w konfiguracji z dwoma łączami 2Mbit/s.
Routery serii 2600XM (routery bez literek XM mają słabsze procesory i mniej pamięci, nie są już produkowane ani sprzedawane) produkowane są w trzech wersjach biorąc pod uwagę procesory, oraz w dwóch wersjach wyposażenia w interfejsy (jeden lub dwa interfejsy FastEthernet). Routery te sprawdzają się w instalacjach z dwoma-trzema łączami 2Mbit/s, lub wymagających koncentracji połączeń typu dial-up (moduły z 4 i 8 portami ISDN BRI, czy 16 i 32 portami asynchronicznymi). Wydajność tej serii wg Cisco wynosi od 20kpps (2610XM/2611XM), przez 30kpps (2620XM/2621XM) po 40kpps (2650XM/2651XM) czy 70kpps (2691).
Routery serii 3600 wyszły już z produkcji i sprzedaży (w grudniu 2003r.). Ich podstawowym mankamentem był brak zabudowanych interfejsów Ethernet (tylko 3661/3662 miały odpowiednio jeden i dwa). Doskonale sprawdzają się w scenariuszach, w których wymagana jest agregacja dużej ilości portów ISDN BRI, PRI, asynchronicznych czy też E1/G.703 (dostępne są również moduły ATM, ale o wydajności OC3 można niestety tylko pomarzyć na tej platformie). Przy rozbudowanej do maksimum pamięci RAM (dla 3620 do 64MB, dla 3640/3640A do 128MB, dla 3660 do 256MB), oraz sensownej konfiguracji, router 3660 całkiem dobrze sprawdzają się w konfiguracjach z "małym" BGP. Wydajność tej serii wg Cisco wynosi od 35kpps (3620), przez 50kpps (3640/3640A) do ~110kpps dla 3661/3662.
Routery serii 3700 - 3725 i 3745 to następcy serii 3600. Posiadają odpowiednio dwa i cztery sloty na moduły NM, po trzy sloty WIC i po dwa sloty AIM. Dodatkowo, na obu zainstalowano na stałe dwa porty FastEthernet. Biorąc pod uwagę fakt, że można na nich zainstalować maksymalnie 256MB RAM, mogą sprawdzić się w sytuacjach w których do tej pory sprawdzała się seria 3600 oraz z routingiem BGP. Wydajność 3725 Cisco ocenia na 100kpps, a 3745 - 225kpps.
Nie ma uniwersalnych metod "optymalizacji" routera - dam Ci tylko pewne wskazówki, które mogą, ale nie muszą(!), pomóc.
Włącz CEF ( ip cef ) - automatycznie spowoduje to włączenie mechanizmu zwiększanie wydajności na wszystkich interfejsach sieciowych, które CEF obsługują w danym IOSie. W stosunku do process switchingu, czyli obróbki każdego pakietu przez CPU, wzrost wydajności (lub chociaż spadek obciążenia CPU) powinien być dramatyczny.
Upewnij się, że router nie robi niepotrzebnych rzeczy - wyłącz nieużywane usługi, zoptymalizuj używane ACLki, a te, które kontrolują poprawność routowanego ruchu, zastąp mechanizmem uRPF ( ang. Unicast Reverse-Path Filtering, polecenie ip verify unicast reverse-path ).
Upewnij się, że jeśli wykonujesz NAT, translacji podlega tylko sensowny i pożądany ruch - pozostały blokuj.
Jeśli zamierzasz coś zablokować za pomocą ACLki, zastanów się, czy nie lepiej wykorzystać routingu do wirtualnego interejsu Null 0. Architektura routerów optymalizowana jest do routingu a nie filtrowania pakietów, w związku z czym zwykle routing "w nicość" działa szybciej i stanowi mniejsze obciążenie dla procesora niż filtrowanie tego samego ruchu z odrzucaniem go.
W ACLkach wyłącz logowanie w regułach - powoduje to powrót do obróbki pakietu przez CPU i może powodować wyzwalanie dodatkowych mechanizmów (logowanie na konsolę, do pamięci, do serwerów syslog itp.)
Wyłącz wszelkie włączone sesje odpluskwiania ( undebug all ), oraz logowanie informacji na konsolę ( no logging console )
Wyłącz eksport i zbieranie informacji w ramach mechanizmów NetFlow - w szczególności na mniejszych platformach (1700/2600/3600/3700) włączenie tego mechanizmu przy nawet umiarkowanym ruchu może dosłownie zabić router ( no ip route-cache flow na interfejsach, na których został włączony oraz no ip export w konfiguracji globalnej )
Stosuj rozkładanie ruchu w ramach routingu domyślnego, lub w ramach jednego z protokołów routingu dynamicznego, zamiast łącz Mulitlink PPP. Zawsze przy takich łączach upewnij się, że routing pakietów odbywa się za pomocą najoptymalniejszej ścieżki komutacji.
Wykorzystaj tłumienie zdarzeń związanych z IP (ang. IP event dampening) do ograniczenia kosztownych czasowo i obliczeniowo operacji na tablicach routingu.
Zastanów się nad optymalnym doborem protokołu routingu do zadania: w sieciach hierarchicznych OSPF będzie sprawował się lepiej niż EIGRP, a w sieciach z jednym wyjściem do Internetu utrzymywanie routingu BGP jest generalnie bez sensu. Wykorzystaj sumaryzację do oszczędzania procesorów i pamięci.
Dla sesji zestawianych do/z routera, np. peeringu BGP, włącz wykrywanie optymalnego MTU na łączu (ip tcp path-mtu-discovery). Domyślna wartość MSS (segmentu TCP) to 536 bajtów - na łączach typu Ethernet czy ATM jest mało optymalna. Zmiana ta powinna zmniejszyć ilość pakietów, a wydłużyć ich wielkość, dzięki czemu do przesłania informacji będzie potrzeba mniej pakietów. Dla Ethernetu wartość MSS wynosi generalnie 1460 bajtów, a np. dla łącz PoS/ATM - 4430 bajtów.
Staraj się korzystać z połączeń przez sieć (Telnet/SSH) a nie przez konsolę. Na wszystkich platformach, każdy znak otrzymany/wysyłany do konsoli obsługiwany jest przez procesor (ew. główny procesor), wywołujący w tym celu przerwanie. Na tej samej zasadzie, staraj się nie korzystać z portu AUX routera, jeśli nie jest to konieczne.
Informacje katalogowe znajdują się zwykle w kartach katalogowych. Dodatkowo, zebrano najczęściej używane informacje w grupach arkuszy podzielonych wg. kategorii sprzętu:
http://www.cisco.com/warp/public/765/tools/quickreference/
Dodatkowo wydajności poszczególnych platform pod kątem szyfrowania tuneli IPsec zebrano w dokumencie z serii SRND pod adresem:
http://www.cisco.com/warp/public/779/largeent/it/ese/SiteVPN.pdf
Poniżej krótka lista:
Korzystając z poniższego wzoru:
EIRP = P + G - L dBm t ant l
Gdzie EIRP(dBm) - efektywna moc wypromieniowywana, P(t) moc nadawcza nadajnika w dBm, G(ant) - wzmocnienie anteny i L(l) - strata na kablu łączącym antenę i nadajnik.
Nie, ale pamiętaj, że Cisco TAC nie wspiera konfiguracji, w których na sprzęcie Cisco zainstalowano nieoryginalne pamięci.
Bardzo dobre pamięci do routerów i przełączników Cisco sprzedaje Kingston - łącznie, z konfiguratorem dostępnym tutaj: http://www.kingston.com/products/default.asp.
Zbiór dostępnych kabli wraz z ich rysunkami znajduje się tutaj: http://www.cisco.com/univercd/cc/td/doc/pcat/#ch8.
Notki pojawiają się zwykle jako biuletyny na stronach poszczególnych produktów, można również posiadając konto CCO zapisać się do rozsyłanego e-mailem biuletynu informacyjnego.
Produkty obecnie zaklasyfikowane jako EoL, czyli End of Life zebrano tutaj: http://www.cisco.com/univercd/cc/td/doc/pcat/#ch27.
Możesz skorzystać z transferu pliku przez konsolę (rozwiązanie wolniejsze) i przez TFTP - rozwiązanie zdecydowanie szybsze.
Zakładam, że obraz Cisco IOS znajduje się w miejscu dla Ciebie dostępnym i masz możliwość transmisji XMODEM ze swojego terminala a nazwa pliku z IOSem to `c2600-i-mz.123-1a.bin'. Wydaj polecenie:
rommon 1> xmodem c2600-i-mz.123-1a.bin Do not start the sending program yet... device does not contain a valid magic number dir: cannot open device "flash:" WARNING: All existing data in bootflash will be lost! Invoke this application only for disaster recovery. Do you wish to continue? y/n [n]:
Należy potwierdzić transmisję klawiszem Y a następnie po pokazaniu się komunikatu:
Ready to receive c2600-i-mz.123-1a.bin...
Włączyć transmisję XMODEM ze swojego terminala, obrazu z Cisco IOS. Jeśli wszystko się powiedzie, router należy zresetować - można to zrobić sprzętowo, lub poleceniem:
rommon 2> reset Po starcie routera powinien załadować się IOS: program load complete, entry point: 0x80008000, size: 0x54ab60 Self decompressing the image : ################################################# ######################################################### [OK]
Zakładam, że obraz Cisco IOS znajduje się w miejscu dla Ciebie dostępnym (w tym przykładzie plik ma nazwę `c2600-i-mz.123-1a.bin'), masz do swojej dyspozycji serwer TFTP skonfigurowany na serwowanie tego pliku i albo połączyłeś się skrosowanym kablem Ethernet do pierwszego portu Ethernet routera ze stacji, albo podłączyłeś ten port do sieci, w której będzie można osiągnąć serwer TFTP.
Należy nadać routerowi tymczasowy adres IP, w podsieci w której znajduje się również Twoja stacja. W naszym przykładzie jest to jedna podsieć - Twoja stacja ma w niej adres 169.254.10.5/24 a routerowi nadamy adres 169.254.10.2/24:
rommon 1> IP_ADDRESS=169.254.10.2 rommon 2> IP_SUBNET_MASK=255.255.255.0 rommon 3> DEFAULT_GATEWAY=169.254.10.1
Teraz wskaż adres serwera TFP oraz nazwę pliku:
rommon 4> TFTP_SERVER=169.254.10.5 rommon 5> TFTP_FILE=c2600-i-mz.123-1a.bin
Na koniec, rozpoczynamy procedurę ściągania obrazu:
rommon 6> tftpdnld
Jeśli nie chcesz zapisywać obrazu na pamięć flash a po prostu chcesz załadować obraz do pamięci i uruchomić z niego router, wydaj polecenie `tftpdnld -r'.
Poniższy opis dotyczy większości routerów. Oryginalne procedury do całego sprzętu produkcji Cisco Systems znajdują się tutaj: http://www.cisco.com/en/US/products/hw/contnetw/ps789/products_tech_note09186a00801746e6.shtml.
Musisz uzyskać dostęp do konsoli i zresetować router. Zaraz po rozpoczęciu ładowania:
System Bootstrap, Version 12.2(7r) [cmong 7r], RELEASE SOFTWARE (fc1) Copyright (c) 2002 by cisco Systems, Inc. C2600 platform with 65536 Kbytes of main memory
...musisz ze swojego terminala wysłać sekwencję Ctrl+Break. Spowoduje to wejście do ROMMONa:
PC = 0xfff0ac3c, Vector = 0x500, SP = 0x680127c0 monitor: command "boot" aborted due to user interrupt rommon 1>
Pozostaje zmienić rejestr konfiguracyjny na wartość, która pominie wczytanie pliku konfiguracyjnego, a następnie zresetować router:
rommon 1> conf-reg 0x2142 rommon 2> reset
Po załadowaniu się Cisco IOS, wejdź do trybu uprzywilejowanego, skopiuj zawartość pliku startup-config do aktualnej konfiguracji running-config i ewentualnie dokonaj zmiany haseł. Na przykład:
router> enable router# copy startup-config running-config c1760# conf t c1760(config)# enable password moje_nowe_haslo
Jeśli hasło zostało zaszyfrowane zwykłym mechanizmem Cisco (w konfiguracji cyfry zaszyfrowanego hasła poprzedza liczba 7, np. username szopen password 7 00170909145E05), możesz posłużyć się różnymi narzędziami, które odszyfrowują ten zapis.
Dobry i zawsze dostępny, pod warunkiem że masz dostęp do Internetu, jest serwis http://www.securitystats.com/tools/ciscocrack.php.
Hasła szyfrowane poleceniem secret używają jednokierunkowej funkcji mieszającej i ich odszyfrowanie można wykonać jedynie przez żmudne sprawdzanie kolejnych kombinacji znaków.
Najprawdopodobniej źle ustawiłeś tryb pracy portu (half lub full dupleks). Starsze routery (seria 1600, 2500) posiadają interfejsy Ethernet będące w stanie pracować tylko w trybie half-dupleks. Teoretycznie, port routera i przełącznik powinny dostosować sobie tryb pracy, ale w praktyce ta "autonegocjacja" często zawodzi i mamy problemy z łącznością.
Najlepiej jest, po ustaleniu w jakich dokładnie trybach może pracować interfejs routera, skonfigurowanie na sztywno prędkości pracy portu i trybu dupleks. Jeśli na routerze nie możesz tego zrobić - ustaw na stałe parametry pracy przynajmniej portu na przełączniku.
Na przykład, na routerze z interfejsem Ethernet:
router(config)# interface ethernet 0 router(config-if)# speed 10 router(config-if)# duplex half ! Teraz to potwierdzimy: router# show interface ethernet 0 Ethernet0 is up, line protocol is up Hardware is AmdFE, address is 000e.1111.2222 (bia 000e.1111.2222) MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation ARPA, loopback not set Keepalive set (10 sec) Half-duplex, 10Mb/s, 10BaseT
Na przełączniku natomiast (tutaj 2950, port podłączony do routera to FE0/34) ustawiamy:
switch(config)# interface fastethernet 0/34 switch(config-if)# speed 10 switch(config-if)# duplex half ! Teraz to potwierdzimy: switch# show interface fastethernet 0/34 FastEthernet0/34 is up, line protocol is up (connected) Hardware is Fast Ethernet, address is 000d.1111.3333 (bia 000d.1111.3333) MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation ARPA, loopback not set Keepalive set (10 sec) Half-duplex, 10Mb/s, media type is unknown media type
Wyłącz CEF (no ip cef) - ale uważaj(!) na obciążenie procesora - może gwałtownie wzrosnąć - wszystko zależy od ilości obsługiwanego ruchu.
Zdefiniuj ACLkę, która będzie pasowała do ruchu przeznaczonego do sniffowania. Załóżmy, że interesuje nas tylko ruch na port 80 dowolnego hosta:
pix(config)# access-list 100 permit tcp any any eq 80
Teraz uruchamiamy sniffowanie, podając tą ACLkę, rozmiar bufora (w bajtach), długość pakietu która ma być "podsłuchana", a w końcu nazwę pliku, do którego zapisywany będzie wynik sniffowania:
pix(config)# capture in-www access-list 100 buffer 256000 interface inside packet-length 1518
W pamięci Flash zostaje utworzony plik o nazwie in-www, który zawiera zapis podsłuchanych sesji (pierwsze 256kB, później PIX przestanie nasłuchiwać) na interfejsie "inside". Możesz go skopiować np. na serwer TFTP lub FTP do dalszej analizy narzędziami takimi jak tcpdump czy Ethereal (plik jest w formacie pcap).
Najczęściej jest to problem związany z brakiem pamięci (sprawdź `show memory summary') lub błędem w oprogramowaniu.
O rozwiązywaniu tego typu problemu można poczytać np. tutaj: http://www.cisco.com/warp/public/63/spuraccess.html.
Włączyć kompresję konfiguracji:
router# service compress-config
Domyślnie port przełącznika postara się wynegocjować parametry pracy z podłączoną stacją, oraz sprawdzić, czy nie uczestniczy ona w pracy mechanizmu Spanning Tree. Ponieważ zwykła karta sieciowa nie wynegocjuje trunku 802.1Q czy ISL, ani innych dodatkowych usług, warto ustawić porty podłączone do zwykłych stacji w tryb pomijający te testy.
Dla przełączników z systemem Cisco IOS:
switch(config)# interface fastethernet 0/6 switch(config-if)# spanning-tree portfast
Dla przełączników z systemem CatOS:
switch > (enable) set port host 4/9
Porty 3, 4, 7, 8, 11, 12, 15, 16, 19, 20, 23, 24 mogą się tak zachowywać, ale oficjalny komunikat firmy Cisco wskazuje na Intela jako winowajce. Intel przygotował odpowiednie łatki. Masz trzy alternatywy:
Zmienić port z SGMII na RGMII czyli 1, 2, 5, 6, 9, 10, 13, 14, 17, 18, 21 lub 22
Wydać na tym konkretnym interfejsie polecenie `speed 1000' by wymusić tryb pracy 1Gbit/s
Wymienić karty sieciowe jeśli instalacja łat i uaktualnień przygotowanych przez firmę Intel jest niemożliwa
Prawdopodobnie masz po prostu pętlę w sieci. Upewnij się, że na wszystkich przełącznikach włączony jest protokół Spanning Tree lub Rapid Spanning Tree.
Starsze IOSy (12.1.8-12.1.11) bardzo nie lubią takich okresowych sztormów pakietów w ramach pętli i zwykle kładą interfejs do następnego restartu (nie pomaga `no shut'). Nowsze IOSy (od 12.1.12) lepiej radzą sobie z wysyceniem pamięci i potrafią mimo "klapnięcia" interfejsu podnieść go po chwili, ale nie jest to stan, który powinieneś w sieci pozostawić.
Typowym objawem tego problemu, są np. takie informacje w logach:
%SYS-2-MALLOCFAIL: Memory allocation of 1680 bytes failed from 0x156550, alignment 0 Pool: I/O Free: 2172 Cause: Memory fragmentation Alternate Pool: None Free: 0 Cause: No Alternate pool
Jak można przeczytać, przełącznik wysycił całą pamięć I/O przeznaczoną do tymczasowego kolejkowania ramek i zgłasza błąd sfragmentowania pamięci. Posługując się poleceniem `show memory summary' można to potwierdzić:
switch# show memory summary Head Total(b) Used(b) Free(b) Lowest(b) Largest(b) Processor BDDF8C 54655092 4842004 49813088 47010552 47973440 I/O 80000000 8388608 1128084 7260524 2172 7187568
Chcielibyśmy wymienić tu wszystkich, którzy przyczynili się do rozwoju tego FAQ. Jak zauważyliście, poszczególne wpisy w FAQ nie są opisywane konkretną osobą - uznaliśmy, że tak będzie bardziej przejrzyście, a pytania co do zawartości FAQ powinny i tak trafiać na listę.
W kolejności jak najbardziej alfabetycznej:
Szymon Kosmala, szymon at netfusion.pl
Marek Moskal, moskit at irc.pl
Szczepan Pacut, spacut at ccie.pl
Marcin Strzyżewski, marcins at ccie.pl
Mariusz Trojanowski, mariusz421 at wp.pl
Adam Obszyński, awo at freebsd.pl
Poniżej lista zmian w kolejnych wersjach dokumentu, wraz z osobami, które do tych zmian się przyczyniły.
v0.99(4) 27/01/2006 17:29:53
v0.99(3) 27/01/2006 17:29:53