Provided by: manpages-pl_20060617-3_all bug

NAZWA

       ipfw - zapora ogniowa (firewall) IP i zliczanie ruchu

SK/LADNIA

       #include <sys/types.h>
       #include <sys/socket.h>
       #include <netinet/in.h>
       #include <linux/ip.h>
       #include <linux/tcp.h>
       #include <linux/udp.h>
       #include <linux/icmp.h>
       #include <linux/if.h>
       #include <linux/ip_fw.h>

       int  setsockopt  (int  socket, IPPROTO_IP, int command, void *data, int
       length)

OPIS

       Uslugi  firewalla  IP  i  zliczania  ruchu  wbudowane  w  jdro  Linuksa
       udostpniaj  mechanizm zliczania pakietow IP i budowania zapor ogniowych
       (firewall) opartych o filtry pakietow.  Administrowanie tymi  funkcjami
       opiera  si  o cztery przechowywane przez jdro listy, z ktorych kada moe
       zawiera zero lub wicej regul.  Regula zawiera szczegolowe informacje  o
       adresach  rodlowych  i docelowych, protokolach, numerach portow i kilku
       innych cechach.  Pakiet dopasowany bdzie do reguly, jeli jego parametry
       bd zgadza si z jej definicj. Istniej cztery kategorie regul:

       Zliczajce

              Reguly  te  stosowane  s  do  wszystkich  pakietow  IP,  ktore s
              wysylane  bd  odbierane  przez  jeden  z  lokalnych  interfejsow
              sieciowych.   Cechy  kadego  pakietu  bd porownane ze wszystkimi
              regulami na tej licie, a kade dopasowanie  spowoduje  zwikszenie
              zwizanych z dan regul licznikow pakietow i bajtow.

       Zapora wejciowa

              Reguly  te  decyduj  o  udzielaniu  dostpu nadchodzcym z zewntrz
              pakietom IP.  Wszystkie pakiety wchodzce przez jeden z lokalnych
              interfejsow  sieciowych  sprawdzane s pod ktem dopasowania regul
              zapory wejciowej.  Pierwsza regula, do  ktorej  pasuj  parametry
              pakietu,  zadecyduje  o  udzieleniu  dostpu oraz zmieni liczniki
              bajtow i pakietow zwizane z t regul. Jeli  pakiet  nie  zostanie
              dopasowany  do adnej reguly, zastosowana zostanie domylna regula
              dostpowa.

       Zapora wyjciowa

              Reguly  te  definiuj  uprawnienia   wychodzcych   pakietow   IP.
              Wszystkie  pakiety  gotowe  do  wyslania przez jeden z lokalnych
              interfejsow sieciowych  sprawdzane  s  pod  wzgldem  zgodnoci  z
              regulami  zapory  wyjciowej.   Pierwsza  dopasowana  do  pakietu
              regula zadecyduje  o  prawach  dostpu  i  spowoduje  aktualizacj
              licznikow  bajtow  i  pakietow  z  ni zwizanych. Jeli pakiet nie
              zostanie  dopasowany  do  adnej  reguly,  zastosowana   zostanie
              domylna regula dostpowa.

       Zapora pakietow przekazywanych

              Reguly  te  definiuj  uprawnienia  przekazywanych  pakietow  IP.
              Wszystkie pakiety wyslane przez zewntrzny  komputer,  posiadajce
              inny  komputer  jako  stacj  docelow,  sprawdzane  s pod wzgldem
              dopasowania do regul zapory  pakietow  przekazywanych.  Pierwsza
              dopasowana  do  pakietu  regula  zadecyduje  o  prawach dostpu i
              spowoduje  aktualizacj  licznikow  bajtow  i   pakietow   z   ni
              zwizanych.  Jeli pakiet nie zostanie dopasowany do adnej reguly,
              zastosowana zostanie domylna regula dostpowa.

       Kada regula zaporowa  (nie  regula  zliczajca),  posiada  zasad,  ktora
       okrela, jakie czynnoci maj by wykonane jeli parametry pakietu pasowa bd
       do definicji reguly. Istniej 4 rone zasady:  accept  (pozwala  pakietom
       swobodnie   przechodzi   przez  zapor),  masquerade  (pozwala  pakietom
       przechodzi przez zapor przy wykorzystaniu maskowania (masquerading); ta
       zasada ma zastosowanie jedynie do regul przekazujcych), reject (odrzuca
       pakiet i w charakterze powiadomienia odsyla nadawcy komunikat ICMP host
       unreachable  (komputer  niedostpny)),  and  deny  (ignoruje  pakiet bez
       odsylanie jakiegokolwiek powiadomienia).  Przy wszystkich trzech typach
       zapor  istnieje zasada domylna, ktora stosowana jest wzgldem wszystkich
       pakietow, ktore nie dopasuj si do adnej z regul.

       Reguly przekazujce definiuj rownie, czy pakiety bd maskowane w  trakcie
       przekazywania. W tym przypadku przed przekazaniem pakietu adres nadawcy
       w pakiecie IP jest  zastpowany  adresem  lokalnego  komputera,  a  port
       rodlowy  w naglowku TCP lub UDP jest zastpowany przez numer stworzonego
       tymczasowo portu lokalnego.  Poniewa te ustawienia  przechowywane  s  w
       jdrze,  pakiety zwrotne (przysylane do tymczasowego portu na komputerze
       lokalnym) rozpoznawane s automatycznie. Adres docelowy  i  numer  portu
       tych  pakietow zostanie zastpiony przez oryginalny adres i numer portu,
       ktore zostaly  zapamitane  przy  przekazywaniu  pierwszego  maskowanego
       pakietu.

       Ten  paragraf  opisuje  sposob,  w  jaki pakiet przechodzi przez reguly
       zapory  i  zliczania.  Pakiety  odebrane  przez   jeden   z   lokalnych
       interfejsow sieciowych przechodz przez nastpujce zestawy regul:
              zliczajce (urzdzenie wejciowe)
              zapora wejciowa (urzdzenie wejciowe)
       W  tym  przypadku, urzdzenie (adres interfejsu), ktore jest uywane przy
       sprawdzaniu  dopasowania  pakietu  IP  do  reguly,  jest  wywietlone  w
       nawiasach. Jeli pakiet ma by przekazany do zewntrznej stacji, przejdzie
       rownie przez:
              zepor pakiet'ow przekazywanych (urzdzenie wejciowe)
       W nastpnym kroku opcjonalnie pakiet zostanie  zamaskowany.   Odpowiedzi
       na   pakiety   zamaskowane  nie  bd  przechodzi  przez  zapor  pakietow
       przekazywanych (przejd jednak zarowno  przez  wejciow,  jak  i  wyjciow
       zapor).   Wszystkie  pakiety wysylane z jednego z lokalnych interfejsow
       sieciowych, tworzone lokalnie, bd przekazywane, bd przechodzi przez:
              zapor wyjciow (urzdzenie wyjciowe)
              zliczanie (urzdzenie wyjciowe)
       Naley zauway, e pakiety maskowane bd przechodzi przez zapor  wyjciow  i
       reguly  zliczajce z nowymi naglowkami pakietow (po przejciu przez zapor
       wejciow  i  przekazujc  z  oryginalnymi  naglowkami).   Odpowiedzi   na
       maskowane   pakiety   bd   rownie   posiada  rone  naglowki  w  trakcie
       przechodzenia przez reguly wejciowe i wyjciowe.

       Sterowanie zapor i zliczaniem moe  si  odbywa  za  porednictwem  wywola
       funkcji  setsockopt(2).   Istniejce  reguly  mona  sprawdzi zagldajc do
       trzech plikow w katalogu /proc/net : ip_acct, ip_input, ip_output, oraz
       ip_forward.   Biece ustawienia zwizane z sesjami maskowanymi mona znale
       w pliku ip_masquerade w tym samym katalogu (zauwamy, e reguly okrelajce
       sesje, ktore powinny by maskowane znajduj si w pliku ip_forward).

POLECENIA

       Polecenia  zmiany  list  regul  lub zasad domylnych musz by podane jako
       parametry funkcji  systemowej  setsockopt(2)  ,  pracujcej  na  surowym
       gniazdku  IP.   Wikszo  polece  wymaga  przekazania pewnych dodatkowych
       danych.  Wskanik do tych danych i  dlugo  danych  s  przekazywane  jako
       parametry  wartoci  i  dlugoci  opcji  setsockopt.  Dostpne s nastpujce
       polecenia:

       IP_ACCT_APPEND
       IP_FW_APPEND_IN
       IP_FW_APPEND_OUT
       IP_FW_APPEND_FWD
              Dodanie  reguly  do  jednej  z  list   regul   zliczajcych   lub
              zaporowych.    Zalenie   od   polecenia,  regula  jest  dodawana
              odpowiednio do listy regul zliczajcych, wejciowych,  wyjciowych,
              przekazujcych.   Nowa  regula  dodawana jest na kocu listy. Dane
              przekazywane z tymi poleceniami maj struktur ip_fw  ,  definiujc
              tre nowej reguly.

       IP_ACCT_INSERT
       IP_FW_INSERT_IN
       IP_FW_INSERT_OUT
       IP_FW_INSERT_FWD
              Polecenia te s rownowane poleceniom dodawania, z tym wyjtkiem, e
              nowa regula wstawiana jest na pocztku listy.

       IP_ACCT_DELETE
       IP_FW_DELETE_IN
       IP_FW_DELETE_OUT
       IP_FW_DELETE_FWD
              Usunicie  reguly  z  jednej  z  list   regul   zliczajcych   lub
              zaporowych.   Zalenie  od  polecenia,  regula  zostanie  usunita
              odpowiednio z listy regul  zliczajcych,  wejciowych,  wyjciowych
              lub  przekazujcych.   Przekazywane  z  tym  poleceniem  dane maj
              struktur  ip_fw  ,  definiujc  tre  pakietu  przeznaczonego   do
              usunicia.   Pierwsza  regula spelniajca podane kryteria zostanie
              usunita z listy.

       IP_ACCT_ZERO
       IP_FW_ZERO_IN
       IP_FW_ZERO_OUT
       IP_FW_ZERO_FWD
              Wyzerowyje liczniki pakietow i bajtow odpowiednio we  wszystkich
              regulach    list    zliczajcych,    wejciowych,   wyjciowych   i
              przekazujcych.   Z  nieznanych  powodow,  z  tym  poleceniem   w
              charakterze   danych   musi   by   przekazana  (dowolna)  liczba
              calkowita.  Aby dowiedzie si, jak pojedynczo wywietla  i  zerowa
              zawarto poszczegolnych licznikow, zobacz opis plikow /proc/net

       IP_ACCT_FLUSH
       IP_FW_FLUSH_IN
       IP_FW_FLUSH_OUT
       IP_FW_FLUSH_FWD
              Usunicie wszystkich regul odpowiednio z listy regul zliczajcych,
              wejciowych, wyjciowych i przekazujcych.  Z nieznanych powodow, z
              tym poleceniem w charakterze danych musi by przekazana (dowolna)
              liczba calkowita.

       IP_FW_POLICY_IN
       IP_FW_POLICY_OUT
       IP_FW_POLICY_FWD
              Zmiana  domylnej  zasady  odpowiednio  dla   zapory   wejciowej,
              wyjciowej  lub przekazujcej.  Nowa zasada przekazywana jest jako
              liczba   calkowita   o   nastpujcej    dopuszczalnej    wartoci:
              IP_FW_F_ACCEPT    (zaakceptuj    pakiet),    IP_FW_F_ACCEPT    |
              IP_FW_F_MASQ (zaakceptuj pakiet  i  dodatkowo  uyj  maskowania),
              IP_FW_F_ICMRPL (odrzu pakiet przez wyslanie komunikatu ICMP host
              unreachable  do  nadawcy)  lub  0  (odrzu  pakiet   bez   adnego
              powiadomienia).   Zasada  jest  uywana  w  przypadku  gdy adna z
              istniejcych regul zaporowych na odpowiadajcej licie  nie  pasuje
              do analizowanego pakietu.

       IP_FW_CHECK_IN
       IP_FW_CHECK_OUT
       IP_FW_CHECK_FWD
              Sprawdzenie,  czy  pakiet bylby zaakceptowany (z maskowaniem lub
              bez), odrzucony z potwierdzeniem bd odrzucony bez  potwierdzenia
              przez    zapor    wejciow    (IP_FW_CHECK_IN),   zapor   wyjciow
              (IP_FW_CHECK_OUT),  lub  zapor   przekazujc   (IP_FW_CHECK_FWD).
              Przekazywane z poleceniem dane maj struktur ip_fwpkt , definiujc
              naglowki pakietow i adres interfejsu.

STRUKTURY

       Struktura ip_fw zawiera nastpujce pola, ktore naley wypelni  adekwatnie
       do procedury dodawania lub usuwania reguly:

       struct in_addr fw_src, fw_dst
              rodlowe i docelowe adresy IP.

       struct in_addr fw_smsk, fw_dmsk
              Maski  dla  rodlowych  i docelowych adresow IP. Zauwamy, e maska
              0.0.0.0 oznacza bdzie dopasowanie wszystkich adresow.

       struct in_addr fw_via
              Adres IP interfejsu, przez ktory  pakiet  jest  odbierany  przez
              system,  lub  ktory ma by przeslany przez system.  Adres 0.0.0.0
              ma   specjalne   znaczenie:   dopasowanie   adresow   wszystkich
              interfejsow.

       char fw_vianame[IFNAMSIZ]
              Nazwa interfejsu, przez ktory pakiet jest odbierany przez system
              lub przez ktory ma by wyslany. Pusty  cig  znakow  ma  specjalne
              znaczenie: dopasowanie wszystkich nazw urzdze.

       unsigned short fw_flg
              Flagi dla reguly.  Flagi dla ronych opcji mog by podane jako ich
              ronica logiczna.

              Protokol (obowizkowy).  Moliwe  wartoci  to  IP_FW_F_TCP  (TCP),
              IP_FW_F_UDP   (UDP),   IP_FW_F_ICMP   (ICMP),   lub  IP_FW_F_ALL
              (wszystkie   protokoly,   co    definiuje    uniwersaln    regul
              zliczania/zaporow).

              Zasada,  ktor  naley uy w przypadku dopasowania pakietu.  Moe ni
              by  IP_FW_F_ACCEPT   (zaakceptuj   pakiet),   IP_FW_F_ACCEPT   |
              IP_FW_F_MASQ   (zaakceptuj   pakiet   i   opcjonalnie   zastosuj
              maskowanie), lub IP_FW_F_ICMRPL (odrzu pakiet odsylajc  odbiorcy
              komunikat  ICMP  host unreachable).  Jeli nie podana jest adna z
              tych flag, pakiet  jest  odrzucany  bez  powiadomienia  nadawcy.
              Zauwamy, e zasada ta jest ignorowana w regulach zliczajcych.

              Mona  ustawi  kilka  dodatkowych  opcji:  IP_FW_F_BIDIR  (regula
              dwukierunkowa, dzialajca w obie strony), IP_FW_F_TCPACK  (regula
              pasuje  tylko wtedy, gdy w naglowku TCP ustawiony jest bit ACK),
              IP_FW_F_TCPSYN (regula pasuje tylko wtedy, gdy  w  naglowku  TCP
              bit SYN jest ustawiony, a bit ACK jest wyzerowany), IP_FW_F_SRNG
              oraz IP_FW_F_DRNG (opis tych flag  poniej).   Opcji  IP_FW_F_PRN
              mona  uy do wywietlenia pewnych informacji o pasujcych pakietach
              za pomoc funkcji  printk().   Opcja  ta  bdzie  skuteczna  tylko
              wowczas,  gdy jdro jest skompilowane ze zdefiniowanym parametrem
              CONFIG_IP_FIREWALL_VERBOSE.

       unsigned short fw_nsp, fw_ndp, fw_pts[IP_FW_MAX_PORTS]
              Te pola okrelaj liczb portow rodlowych, docelowych i  tablic,  w
              ktorej  przechowywane s odpowiednie numery tych portow.  Tablica
              zaczyna si od portow rodlowych, po ktorych  bezporednio  nastpuj
              porty  docelowe.   Calkowita  liczba  portow jest ograniczona do
              wartoci IP_FW_MAX_PORTS  (obecnie  10).   Zarowno  lista  portow
              rodlowych, jak i docelowych zawiera moe co najwyej jeden zakres.
              W tym przypadku, pierwsze dwa numery portow z listy traktowane s
              jako  minimalna  i  maksymalna warto zakresu. Dla pakietow ICMP,
              porty rodlowe traktowane s jako typy ICMP, a  porty  docelowe  s
              pomijane.  Poniewa drugi i nastpne fragmenty pakietu TCP lub UDP
              nie zawieraj numerow portow, traktowane s tak, jakby  mialy  oba
              porty  rowne  zero.   Flagi  IP_FW_F_SRNG  i IP_FW_F_DRNG w polu
              fw_flg okrelaj czy podany jest zakres rodlowy i/lub docelowy.

       unsigned char fw_tosand, fw_tosxor
              Owe 8-bitowe maski okrelaj, w jaki sposob pole TOS w naglowku IP
              powinno  by  zmieniane,  gdy pakiet jest akceptowany przez regul
              zaporow (z maskowaniem lub bez).  Pole TOS jest najpierw  bitowo
              sumowane  z  fw_tosand  , a wynik jest poddawany operacji ronicy
              symetrycznej (xor) z fw_tosxor.  Pola te s pomijane  w  regulach
              zliczania  i  w  regulach  zaporowych,  ktore  odrzucaj pakiet z
              powiadomieniem lub bez.

       Struktura ip_fwpkt , wykorzystywania przy sprawdzaniu pakietu,  zawiera
       nastpujce pola:

       struct iphdr fwp_iph
              Naglowek   IP.  Zajrzyj  do  <linux/ip.h>  po  szczegolowy  opis
              struktury iphdr.

       struct tcphdr fwp_protoh.fwp_tcph
       struct udphdr fwp_protoh.fwp_udph
       struct icmphdr fwp_protoh.fwp_icmph
              Naglowek  TCP,  UDP,  lub  ICMP,  polczone  w  unii   o   nazwie
              fwp_protoh.    Zajrzyj   do  <linux/tcp.h>,  <linux/udp.h>,  lub
              <linux/icmp.h> po szczegolowy opis odpowiednich struktur.

       struct in_addr fwp_via
              Adres interfejsu, przez ktory udaje si, e pakiet  jest  wysylany
              lub odbierany.

WARTO ZWRACANA

       Zero,  jeli operacja jest skuteczna.  -1, jeli wystpil bld. Odpowiednio
       ustawiana jest warto errno.  Lista moliwych komunikatow  bldu  znajduje
       si  na  stronie  setsockopt(2).   Jeli  uyte  jest jedno z dwoch polece
       sprawdzania pakietu, zwracane jest zero jeli pakiet bylby zaakceptowany
       (bez  maskowania).  W  przeciwnym  wypadku,  zwracana  jest -1, a errno
       uzyskuje warto ECONNRESET (pakiet bylby przyjty z  uyciem  maskowania),
       ETIMEDOUT  (pakiet  bylby odrzucony z powiadomieniem), lub ECONNREFUSED
       (pakiet bylby odrzucony bez powiadomienia).

WYWIETLANIE REGU/L

       W katalogu  /proc/net  znajduj  si  4  wpisy,  umoliwiajce  wywietlenie
       aktywnych  regul  w  kadej  z  nastpujcych  kategorii:  ip_acct (reguly
       zliczania ruchu IP), ip_input (reguly zapory wejciowej  IP),  ip_output
       (reguly   wyjciowej   zapory   IP),   oraz  ip_forward  (reguly  zapory
       przekazujcej IP).  Odczyt tych plikow zwroci wiersz naglowkowy i  jeden
       wiersz  dla  kadej  zdefiniowanej  reguly.  Dla wszystkich trzech typow
       zapory,  linia  naglowkowa  zawiera  na  kocu   dziesitn   reprezentacj
       odpowiedniej   zasady   (jedna   z   IP_FW_F_ACCEPT,  IP_FW_F_ACCEPT  |
       IP_FW_F_MASQ, IP_FW_F_ICMPRPL, lub 0).

       Kada nastpna linia pokazuje  zawarto  reguly  w  nastpujcej  kolejnoci:
       adres rodlowy i maska, adres docelowy i maska, adres interfejsu, flagi,
       numer portu rodlowego i docelowego, liczniki pakietow  i  bajtow,  list
       portow, mask sumy logicznej dla TOS i mask ronicy symetrycznej dla TOS.
       Adresy IP i maski s wywietlone jako 8 cyfr heksadecymalnych, maski  TOS
       jako  2  cyfry  heksadecymalne poprzedzone odpowiednio A i X. Pozostale
       wartoci  wywietlone  s  w  formacie  dziesitnym.    Poszczegolne   pola
       rozdzielone  s  spacjami,  znakiem '/' (adres i odpowiadajca mu maska),
       lub znakiem '->' (pary adresow/masek rodlowych i docelowych).

       Pliki mona rownie otwiera w trybie  odczyt/zapis  (tylko  root  moe  to
       zrobi).   W  tym  przypadku,  liczniki  pakietow i bajtow we wszystkich
       regulach danej  kategorii  bd  wyzerowane  po  wywietleniu  ich  biecej
       wartoci.

       Plik  /proc/net/ip_masquerade zawiera wszystkie ustawienia jdra zwizane
       z maskowaniem.  Po  wierszu  naglowkowym,  kada  maskowana  sesja  jest
       opisana   w  osobnej  linii  za  pomoc  nastpujcych  po  sobie  wpisow,
       rozdzielonych spacj lub znakiem ':'  (pary  adres/numer  portu):  nazwa
       protokolu  ("TCP"  lub "UDP"), rodlowy adres IP i numer portu, docelowy
       adres IP i numer portu, nowy adres portu, pocztkowy  numer  sekwencyjny
       do  dodawania  wartoci  ronicowej,  warto  ronicowa,  poprzednia  warto
       ronicowa, oraz  czas  wyganicia  w  jednostce  jiffie  (1/HZ  sekundy).
       Wszystkie   adresy   i   wartoci   numeryczne   podane   s  w  formacie
       heksadecymalnym, z wyjtkiem ostatnich trzech wpisow, ktore s w formacie
       dziesitnym.

PLIKI

       /proc/net/ip_acct
       /proc/net/ip_input
       /proc/net/ip_output
       /proc/net/ip_forward
       /proc/net/ip_masquerade

ZOBACZ TAKE

       setsockopt(2), socket(2), ipfwadm(8)

INFORMACJE O T/LUMACZENIU

       Powysze  tlumaczenie  pochodzi z nieistniejcego ju Projektu Tlumaczenia
       Manuali i moe nie by aktualne. W razie zauwaenia ronic  midzy  powyszym
       opisem  a  rzeczywistym  zachowaniem  opisywanego programu lub funkcji,
       prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.

                                16 lutego 1996                         IPFW(4)