modified on 1 lip 2010 at 11:21 ••• 20 931 views

Przepływ Pakietów

Z MikroTik Wiki

Spis treści

Informacje Ogólne

Wstęp

Ten manual opisuje kolejność, w której pakiet IP przemierza różne wewnętrzne narzędzia routera, oraz kilka ogólnych informacji o obsłudze pakietów, protokołach IP i opcjach.

Specyfikacja

Wymagane pakiety: system

Wymagane licencje: level3'

Poziom podmenu: /ip firewall

Standardy i Technologie: IP

Wykorzystanie sprzętowe: Rośnie wraz z liczbą zasad NAT, markera i filtru

Przepływ Pakietów

Opis

MikroTik RouterOS jest zaprojektowany aby być łatwym do obsługi w różnych aspektach, wliczając w to firewall IP. Dlatego zwykłe algorytmy firewalla mogą być tworzone i rozmieszczane bez wiedzy o obsłudze pakietów w routerze. Na przykład, jeśli potrzebna jest tylko transformacja wewnętrznego klienta na publiczny adres, można użyć następującego polecenia (zakładając, że interfejs do internetu jest typu Public):

/ip firewall nat add action=masquerade out-interface=Public chain=srcnat

Zwykłe filtrowanie pakietów, kontrola pasma lub markowanie pakietów może być łatwo skonfigurowana w podobny sposób. Jednakże bardziej skomplikowana konfiguracja może zostać dokonana tylko z dobrym rozumieniem procesów zachodzących w routerze.

Przepływ pakietu przez router jest pokazany na następującym diagramie:

Grafika:packet flow.jpg

Jak widać na diagramie, jest pięć łańcuchów w działającej ścieżce. To są przedroutująca', wejściowa, przepuszczająca, wyjściowa i poroutująca. Działania dokonywane na pakiecie w każdym łańcuchu będą omówione później w tym rozdziale.

Dodatkowe strzałki z bloków IPsec pokazują co się dzieje z szyfrowanymi pakietami (one muszą najpierw być szyfrowane/deszyfrowane, a potem obsługiwane jak zwykle, tj. z punktu przez który wchodzi porządkowy pakiet do routera).

Pakiet może wejść do działającego transportera w routerze na dwa sposoby. Pierwszy: pakiet może nadejść od strony jednego z obecnych interfejsów w routerze (wtedy interfejs jest określany jako input interface). Drugi: może pochodzić z lokalnego procesu, jak proxy sieciowe, VPN, czy inne. Tak samo są dwa sposoby aby pakiet opuścił działającą ścieżkę. Pakiet może wyjść przez jeden z interfejsów routera (w tym przypadku interfejs jest określany jako output interface) lub skończyć w lokalnym procesie. Ogólnie rzecz biorąc ruch może być kierowany do jednego z adresów routera, może pochodzić z routera lub po prostu przez niego przechodzić. Aby bardziej skomplikowac sprawy, ruch może być mostkowany lub routowany, co jest określane podczas etapu Bridge Decision.

Ruch Mostkowany

W przypadku gdy nadchodzący ruch musi być zmostkowany (nie pomyl tego z ruchem przychodzącym do interfejsu mostka z adresem MAC własnego routera, i w ten sposób sklasyfikowanym jako ruch routowany) najpierw jest określany czy jest to ruch IP, czy nie. Potem ruch IP przechodzi przez łańcuchy przedroutujący, przechodzący i poroutujący, podczas gdy ruch nie-IP omija wszystkie zasady firewalla IP i idzie prosto do kolejki interfejsu. Oba typy ruchu jednakże przechodzą przez pełny zestaw łańcuchów firewalli, niezależnie od protokołu.

Śledzenie Połączenia

Poziom podmenu: /ip firewall connection

Opis

Śledzenie połączenia określa zdolność do utrzymania informacji o połączeniu, takie jak adresy IP źródłowy i docelowy i pary portów, stany połączeń, typy protokołów i timeouty. Firewalle z obsługą śledzenia połączenia są znane jako "stateczne" i są z natury bardziej bezpieczne niż te, które robią zwykłą obsługę pakietu.

Stan konkretnego połączenia mógł być ustanowiony, znaczy to że pakiet jest częścią znanego już połączenia, nowy znaczy że pakiet zaczyna nowe połączenie lub należy do połączenia, które nie widziało jeszcze pakietu w obu kierunkach, powiązany znaczy że pakiet zaczyna nowe połączenie, ale jest powiązane z istniejącym połączeniem, np. transfer danych przez FTP lub wiadomość o błędzie ICMP, i wreszcie nieważny znaczy że pakiet nie należy do żadnego znanego połączenia i w tym samym czasie nie rozpoczyna żadnego nowego połączenia.

Śledzenie połączenia dokonuje się w łańcuchu przedroutującym lub w wyjściowym dla pakietów wygenerowanych lokalnie.

Inną funkcją śledzenia połączenia, która nie może być niedoceniona, jest to że jest potrzebna dla NAT. Powinieneś być świadomy, że NAT nie może działać bez włączonego śledzenia połączenia, tak samo jest w przypadku protokołów rozpoznawczych p2p. Śledzenie połączenia zbiera także pakiety IP z fragmentów przed dalszym działaniem.

Maksymalna liczba połączeń jaką tablica /ip firewall connection może zawierać jest określona przez ilość fizycznej pamięci routera.

Upewnij się, że twój router jest wyposażony w odpowiednią ilość fizycznej pamięci, aby prawidłowo obsłużyć wszystkie połączenia.

Opis Własności

assured (tylko-do-odczytu: true | false) - pokazuje czy była widziana odpowiedź na ostatni pakiet pasujący do tego wpisu

connection-mark (tylko-do-odczytu: text) - znacznik połączenia określony w narzędziu mangle

dst-address (tylko-do-odczytu: IP address:port) - adres docelowy i port przez który ustanowione jest połączenie

icmp-id (tylko-do-odczytu: integer) - zawiera identyfikator ICMP. Każdy pakiet ICMP ma ustalany identyfikator gdy jest wysyłany, i gdy odbiorca otrzymuje pakiet ICMP, ustala taki sam identyfikator wewnątrz nowej wiadomości ICMP, tak że odbiorca rozpozna odpowiedź i będzie w stanie to połączyć z odpowiednim zapytaniem ICMP

icmp-option (tylko-do-odczytu: integer) - typ ICMP i pól kodowych

p2p (tylko-do-odczytu: text) - protokół p2p

protocol (tylko-do-odczytu: text) - nazwa protokołu IP lub numer

reply-dst-address (tylko-do-odczytu: IP address:port) - adres docelowy i port przez który ustanowione jest połączenie zwrotne

reply-icmp-id (tylko-do-odczytu: integer) - zawiera identyfikator ICMP odebranego pakietu

reply-icmp-option (tylko-do-odczytu: integer) - typ ICMP i pola kodowe odebranych pakietó

reply-src-option (tylko-do-odczytu: integer) - adres źródłowy i port przez który ustanowione jest połączenie zwrotne

src-address (tylko-do-odczytu: IP address:port) - adres źródłowy i port przez który ustanowione jest połączenie

tcp-state (tylko-do-odczytu: text) - stan połączenia TCP

timeout (tylko-do-odczytu: time) - czas po jakim połączenie zostanie zerwane

unreplied (tylko-do-odczytu: true | false) - pokazuje czy zapytanie uzyskało odpowiedź

Zerwania połączeń

Poziom podmenu: /ip firewall connection tracking

Opis

Śledzenie połączenia powoduje kilka timeoutów. Gdy dojdzie do konkretnego timeoutu odpowiednie wpisy zostaną usunięte z tablicy stanów połączeń. Poniższy diagram pokazuje typowe ustanawianie połączenia TCP, zerwanie oraz timeout tcp, który następuje podczas tych procesów:

Grafika:tcp.jpg

Opis Własności

enable (yes | no; domyślnie: yes) - czy ma być włączone śledzenie połączenia

generic-timeout (time; domyślnie: 10m) - maksymalny czas przez który tablica stanów połączeń, która śledzi pakiety które nie są ani TCP ani UDP (na przykład GRE), będzie istniała po przejściu ostatniego pakietu pasującego do tego wpisu. Podczas nawiązywania połączenia PPTP ta wartość wzrośnie automatycznie

icmp-timeout (time; domyślnie: 10s) - maksymalny czas przez który wpis śledzenia połączeń będzie istniał po ostatnim requeście ICMP

max-entries (tylko-do-odczytu: integer) - maksymalna liczba połączeń, jaką tablica stanów połączeń może zawierać, zależy to od ilości pamięci

ecp-close-timeout (time; domyślnie: 10s) - maksymalny czas przez który wpis śledzenia połączenia będzie istniał, po przyjęciu prośby o reset połączenia (RST) lub ACK prośby o zerwanie połączenia z inicjatora połączenia

tcp-close-wait-timeout (time; domyślnie: 10s) - maksymalny czas przez który wpis śledzenia pakietów będzie istniał po przyjęciu prośby o zerwanie połączenia (FIN) od respondera

tcp-established-timeout (time; domyślnie: 1dzień) - maksymalny czas przez który wpis śledzenia pakietów będzie istniał po przyjęciu ACK od inicjatora połączenia

tcp-fin-wait-timeout (time; domyślnie: 10s) - maksymalny czas przez który wpis śledzenia pakietów będzie istniał po przyjęciu prośby o zakończenie połączenia (FIN) od inicjatora zerwania połączenia

tcp-syn-receinved-timeout (time; domyślnie: 1m) - maksymalny czas przez który wpis śledzenia pakietów będzie istniał po przyjęciu prośby o dopasowanie połączenia (SYN)

tcp-syn-sent-timeout (time; domyślnie: 1m) - maksymalny czas przez który wpis śledzenia pakietów będzie istniał po przyjęciu prośby o nawiązanie połączenia (SYN) od inicjatora połączenia

tcp-syncookie (yes | no; domyślnie: no) - uruchamia ciasteczka TCP SYN dla połączeń skierowanych do routera (użyteczne dla HotSpot i tuneli)

tcp-time-wait-timeout (time; domyślnie: 10s) - maksymalny czas połączenia przez który wpis śledzenia połączenia będzie istniał po otrzymaniu prośby o zerwanie połączenia (FIN) tuż po prośbie o jego nawiązanie (SYN) lub po otrzymaniu innej prośby o zerwanie połączenia (FIN) od inicjatora zerwania połączenia

total-entries (tylko-do-odczytu: integer) - liczba połączeń obecnie odnotowanych w tablicy stanu połączeń

udp-stream-timeout (time; domyślnie: 3m) - maksymalny czas przez który wpis śledzenia połączenia będzie istniał po tym jak otrzyma odpowiedź za ostatni dopasowany do tego wpisu pakiet (wpis śledzenia połączenia jest zabezpieczony). Używa się tego aby zwiększyć timeout dla takich połączeń jak H323, VoIP, etc.

udp-timeout (time; domyślnie: 10s) - maksymalny czas przez który wpis śledzenia połączenia będzie istniał po otrzymaniu ostatniego pasującego pakietu do tego wpisu

Uwagi

Maksymalna wartość timeoutu zależy od liczby wpisów w tablicy stanu połączeń. Jeśli liczba wpisów w tablicy jest większa niż:

  • 1/16 maksymalnej liczby wpisów, to maksymalna wartość timeoutu wyniesie 1 dzień
  • 3/16 maksymalnej liczby wpisów, to maksymalna wartość timeoutu wyniesie 1 godzinę
  • 1/2 maksymalnej liczby wpisów, to maksymalna wartość timeoutu wyniesie 10 minut
  • 13/16 maksymalnej liczby wpisów, to maksymalna wartość timeoutu wyniesie 1 minutę

Najkrótszy timeout zawsze będzie wybierany między skonfigurowanym timeoutem a wartością określoną powyżej.

Jeśli wartość timeoutu śledzenia połączenia jest mniejsza niż normalny czas między współczynnikiem pakietów (timeout wygasa zanim nadejdzie następny pakiet), NAT i firewall przestaną pracować.

Porty Serwisowe

Poziom podmenu: /ip firewall service-port

Opis

Niektóre protokoły sieciowe nie są kompatybilne z tłumaczeniem adresów sieciowych, na przykład z powodu dodatkowych informacji o aktualnych adresach i portach zawartych w pakiecie, co nie jest wiadome dla procedur NAT-a, gdyż one wyglądają jak nagłówki IP, UDP i TCP, nie wewnątrz pakietów. Aby te protokoły działały poprawnie, potrzebne jest śledzenie połączenia aby pracowało wokół tego typu spraw. Możesz to włączyć lub wyłączyć tutaj (możesz chcieć coś wyłączyć, aby zwiększyć wydajność, lub spodziewasz się problemów z niektórymi protokołami). Zauważ, że nie możesz dodać ani usunąć pomocy, lecz tylko włączyć lub wyłączyć istniejące.

Opis Własności

name - nazwa protokołu

ports (integer) - zasięg portu, który jest używany przez protokół (tylko niektóre pomoce tego wymagają)

Ogólna Informacja o Firewallu

Opis

wartości ICMP TYPE:CODE

Aby chronić twój router i podłączone do niego prywatne sieci, musisz skonfigurować firewall aby odrzucać większość ruchu ICMP. Jednakże niektóre pakiety ICMP są istotne, aby utrzymać niezawodność sieci lub dostarczyć usługę usuwania problemów.

Poniżej znajduje się lista wartośći ICMP TYPE:CODE znajdujących się w dobrych pakietach. Generalnie zaleca się przepuszczanie tego typu pakietów.

Ping
  • 8:0 - echo request
  • 0:0 - echo reply
Trace
  • 11:0 - rozszerzenie TTL
  • 3:3 - port niedostępny
Wykrywacz ścieżki MTU
  • 3:4 - Fragmentation-DF-Set

Ogólnie sugeruje się zatwierdzenie filtrowania ICMP

  • przepuszczaj wychodzące wiadomości ping—ICMP Echo-Request i przychodzące Echo-Reply messages
  • przepuszczaj przychodzące wiadomości traceroute—TTL-Exceeded i Port-Unreachable messages
  • przepuszczaj przychodzące wiadomości path MTU—ICMP Fragmentation-DF-Set
  • blokuj wszystko inne

filtrowanie protokołu p2p

Protokół peer-to-peer znany także jako P2P zapewnia możliwość bezpośredniego transferu danych pomiędzy dwoma hostami sieciowymi. Podczas gdy technologia tworzy wiele genialnych aplikacji (jak Skype), tępiona jest dystrybucja nielicencjonowanego oprogramowania. Nawet jeśli jest używany w legalnych celach, p2p może źle oddziaływać na inny ruch w sieci, np. na http i e-mail. RouerOS jest w stanie rozpoznać połączenia większości popularnych protokołów p2p i filtrować lub narzucić QoS.

Protokoły, które mogą zostać wykryte, to:

  • Fasttrack (Kazaa, KazaaLite, Diet Kazaa, Grokster, iMesh, giFT, Poisoned, mlMac)
  • Gnutella (Shareaza, XoLoX, , Gnucleus, BearShare, LimeWire (java), Morpheus, Phex, Swapper, Gtk-Gnutella (linux), *Mutella (linux), Qtella (linux), MLDonkey, Acquisition (Mac OS), Poisoned, Swapper, Shareaza, XoloX, mlMac)
  • Gnutella2 (Shareaza, MLDonkey, Gnucleus, Morpheus, Adagio, mlMac)
  • DirectConnect (DirectConnect (AKA DC++), MLDonkey, NeoModus Direct Connect, BCDC++, CZDC++ )
  • eDonkey (eDonkey2000, eMule, xMule (linux), Shareaza, MLDonkey, mlMac, Overnet)
  • Soulseek (Soulseek, MLDonkey)
  • BitTorrent (BitTorrent, BitTorrent++, uTorrent, Shareaza, MLDonkey, ABC, Azureus, BitAnarch, SimpleBT, BitTorrent.Net, mlMac)
  • Blubster (Blubster, Piolet)
  • WPNP (WinMX)
  • Warez (Warez, Ares; starting from 2.8.18) - ten protokół może być tylko odrzucany, ograniczenie transferu nie jest możliwe