# Jak założyć maskowanie IP czyli IP-Masquerade.

## Autor: Ambrose Au, ambrose@writeme.com
v1.20, 10 Listopada 1997
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.0, 23 Września 1998

Dokument ten opisuje jak włączyć maskowanie IP na hoście linux-owym, pozwalając tym samym na dostęp do Internetu komputerom podłączonym do tego Linux-a i nie posiadającym własnego adresu IP.

## 1. Wprowadzenie.

Dokument ten opisuje jak włączyć maskowanie IP na hoście linux-owym, pozwalając tym samym na dostęp do Internetu komputerom podłączonym do tego Linux-a i nie posiadającym własnego adresu IP. Możliwe jest podłączenie tych komputerów do Linux-a poprzez Ethernet czy inne medium jak linie dzwonione ppp. Dokument ten skupi się na połączeniach Ethernet, ponieważ jest to najbardziej rozpowszechniony przypadek.

> Dokument ten jest przeznaczony dla użytkowników jąder 2.0.x. Jądra w wersji rozwojowej NIE są opisane.

## 1.1 Słowo wstępne, komentarze & prawa.

Założenie maskowania na nowszych jądrach (tj. 2.x) będąc nowym użytkownikiem, jest trochę trudne moim zdaniem. Chociaż jest FAQ i lista dyskusyjna, nie ma żadnego specjalnie dla tego tematu przeznaczonego dokumentu; a pojawiają się na liście dyskusyjnej żądania o takowy. Tak więc zdecydowałem się napisać taki dokument jako punkt oparcia dla nowych użytkowników, i pewnie także coś dla doświadczonych użytkowników, którzy mogą go dalej rozbudowywać. Jeśli sądzisz, że nie robię tego źle, to nie bój się mi tego powiedzieć, jak mogę to zrobić lepiej.

Dokument ten jest w dużej mierze oparty o oryginalne FAQ napisane przez Kena Evesa i dużą liczbę pomocnych wiadomości z listy dyskusyjnej o maskowaniu IP. Specjalne podziękowania należą się Panu Matthew Driverowi, którego to list zainspirował mnie do zainstalowania maskowania IP i napisania tego.

Nie krępuj się napisać mi jakiekolwiek komentarze na adres ambrose@writeme.com, jeśli podaje jakieś błędne informacje lub jakiejś informacji brakuje. Wasze nieocenione komentarze na pewno wpłyną na przyszłość tego HOWTO!

To HOWTO ma być podręcznikiem pomocnym do jak najszybszego ustawienia maskowania IP. Ponieważ nie mam praktyki w pisaniu technicznych dokumentów, możesz stwierdzić, że informacje zawarte tutaj nie są takie ogólne i obiektywne jak powinny być. Najnowsze informacje można znaleźć na stronie Zasoby IP-Masquerade, którą prowadzę. Jeśli masz jakieś techniczne pytania na temat maskowania, dopisz się do listy dyskusyjnej zamiast wysyłać listy do mnie, ponieważ mój czas jest ograniczony oraz ci którzy rozwijają kod maskowania są bardziej kompetentni do odpowiedzi na te pytania.

Najnowsza wersja oryginału tego dokumentu znajduje się na stronie Zasoby IP Masquerade, gdzie są także wersje HTML i PostScript:

- http://ipmasq.home.ml.org/
- pod adresem http://ipmasq.home.ml.org/index.html#mirror znajduje się lista kopii tej strony
- [Od tłumacza] Oczywiście najnowsze wersje tłumaczenia znajdziesz po adresem www.jtz.org.pl.

## 1.2 Prawa autorskie i zastrzeżenia.

Prawa autorskie należą do `Ambrose Au (C) 1996` i jest to dokument wolnodostępny. Można go rozprowadzać na zasadach licencji GNU GPL.

Informacje i cała zawartość tego dokumentu są najlepsze o których wiem. Jednak maskowanie IP jest eksperymentalne i możliwe, że zrobię jakiś błąd. Tak więc powinieneś się zastanowić czy chesz stosować informacje z tego dokumentu.

Nikt nie jest odpowiedzialny za jakiekolwiek szkody czy zniszczenia wynikłe z używania informacji tutaj zawartych, tj:

> AUTOR NIE JEST ODPOWIEDZIALNY ZA JAKIEKOLWIEK ZNISZCZENIA POWSTAŁE NA SKUTEK DZIAŁAŃ PODJĘTYCH NA PODSTAWIE INFORMACJI Z TEGO DOKUMENTU.

## 1.3 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu `/JTZ/`.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@jtz.org.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści `subscribe jtz Imię Nazwisko` na adres `majordomo@ippt.gov.pl`

Zmiany wprowadzone przez tłumacza:

- odwołania do polskich serwerów FTP
- dodane odwołanie do Diald mini HOWTO
- odwołania do JTZ

## 2. Podstawowa wiedza.

## 2.1 Co to jest maskowanie IP.

Jest to funkcja sieciowa w fazie rozwoju w Linuksie. Jeśli na podłączonym do Internetu Linux-ie jest włączone maskowanie, to komputery łączące się z nim (czy to w tej samej sieci czy też przez modem) mogą także połączyć się z Internetem, pomimo iż nie mają swojego oficjalnego numeru IP.

Pozwala to grupom maszyn ukrytych za gateway-em, który wydaje się być jedynym komputerem łączącym się z Internetem, na niewidzialny dostęp do Internetu. Złamanie zabezpieczeń dobrze skonfigurowanego systemu maskowania powinno być trudniejsze od złamania dobrego firewall-a opartego na filtrowaniu pakietów (zakładając, że w obu nie ma błędów software'owych).

## 2.2 Obecny stan.

Maskowanie IP jest nadal w fazie eksperymentalnej. Jednak, jądra od wersji 1.3.x mają już wbudowaną obsługę. Wiele osób prywatnych jak i instytucji używa go z zadowalającym rezultatem.

Przeglądanie sici WWW oraz usługa telnet działają według zgłoszeń dobrze. FTP, IRC i słuchanie Real Audio działają po załadowaniu pewnych modułów. Inne systemy przekazu audio jak True Speech czy Internet Wave także działają. Niektórzy z listy dyskusyjnej próbowali nawet konferencji wideo. Po zaaplikowaniu najnowszej łaty ICMP działa także `ping`.

Dokładniejszą listę działającego oprogramowania znajdziesz w sekcji 4.3.

Maskowanie IP działa dobrze z klientami na kilku różnych systemach operacyjnych i platformach. Pozytywne przypadki odnotowano z Unix-em, Windows 95, Windows NT, Windows for Workgroups (z pakietem TCP/IP), OS/2, Macintosh System's OS z Mac TCP, Mac Open Transport, DOS z pakietem NCSA Telnet, VAX, Alpha z Linux-em i nawet Amiga z AmiTCP czy ze stosem AS225.

## 2.3 Kto może mieć korzyści z maskowania IP?

- Jeśli masz Linux-a podłączonego do Internetu i
- jeśli masz kilka komputerów z TCP/IP podłączonych do tego Linux-a w lokalnej podsieci i/lub
- jeśli twój Linux posiada więcej niż jeden modem i odgrywa rolę serwera PPP czy SLIP dla innych, którzy to
- inni nie mają oficjalnego numeru IP (te maszyny są reprezentowane tutaj jako INNE)
- i oczywiście chcesz, żeby te INNE maszyny także miały dostęp do Internetu bez dodatkowych kosztów :)

## 2.4 Kto nie potrzebuje maskowania IP?

- Jeśli twoja maszyna jest samotnym Linux-em podłączonym do Internetu, wtedy maskowanie IP jest bezcelowe.
- Jeśli masz już adresy IP dla swoich INNYCH maszyn, wtedy nie potrzebujesz maskowania.
- I oczywiście, jeśli nie podoba ci się pomysł 'darmowej przejażdżki'.

## 2.5 Jak działa maskowanie IP?

Wzięte z IP-Maquerade FAQ autorstwa Kena Evesa:

       Oto rysunek przedstawiający najprostszy przypadek:

         SLIP/PPP         +------------+                         +-------------+
         do prowajdera    |  Linux     |       SLIP/PPP          |  Cokolwiek  |
        <---------- modem1|            |modem2 ----------- modem |             |
          111.222.333.444 |            |           192.168.1.100 |             |
                          +------------+                         +-------------+

       Na powyższym rysunku Linux z zainstalowanym i działającym
       maskowaniem jest połączony z Internetem poprzez SLIP lub PPP
       przez modem1. Ma on przypisany adres IP 111.222.333.444. Istnieje
       też możliwość połączenia się z nim poprzez łącze dzwonione
       SLIP/PPP przez modem2.

       Drugi system (który nie musi być Linux-em) wdzwania się do Linux-a
       i otwiera połączenie SLIP/PPP. NIE ma on przypisanego adresu IP w
       Internecie więc używa 192.168.1.100 (zobacz poniżej).

       Z poprawnie skonfigurowanymi maskowaniem IP i routing-iem
       Cokolwiek może połączyć się z Internetem jak gdyby rzeczywiście
       było podłączone (z kilkoma wyjątkami).

    Cytat Pauline Middelink:
       Nie zapomnij wspomnieć, że Cokolwiek powinno mieć jako gateway
       Linux-a (czy to będzie domyślny routing czy tylko podsieć nie ma
       znaczenia). Jeśli Cokolwiek nie może tego zrobić, Linux powinien
       działać jako proxy arp dla wszystkich routowanych adresów, ale
       ustawianie proxy arp jest poza obszarem tego dokumentu.

       Następujące jest wyjątkiem z postu na grupie
       comp.os.linux.networking, który został poddany edycji, aby nazwy
       użyte w przykładzie powyżej pasowały:

       o Informuję Cokolwiek, że mój Linux ze SLIP-em jest jego gatewayem.
       o Kiedy nadejdzie do Linux-a pakiet z Cokolwiek, zostanie mu nadany
         nowy numer portu źródłowego oraz dodany adres Linux-a w nagłówku
         pakietu z zachowaniem oryginału. Potem Linux wyśle ten pakiet w
         świat przez SLIP/PPP.
       o Kiedy nadejdze do Linux-a pakiet ze świata, jeśli numer portu
         jest jednym z nadanych powyżej, zostanie nadany mu oryginalny port
         i adres IP i pakiet ten zostanie przesłany do Cokolwiek.
       o Host, który wysłał pakiet nigdy nie będzie widział różnicy.

Przykład Maskowania IP.

Oto typowy przykład:

        +----------+
        |          |  Ethernet
        | komp1    |::::::
        |          |2    :192.168.1.x
        +----------+     :
                         :   +----------+   łącze
        +----------+     :  1|  Linux   |    PPP
        |          |     ::::| masq-gate|:::::::::// Internet
        | komp2    |::::::   |          |
        |          |3    :   +----------+
        +----------+     :
                         :
        +----------+     :
        |          |     :
        | komp3    |::::::
        |          |4
        +----------+

        <-Sieć wewnętrzna->

W tym przykładzie są 4 komputrery, na których się skupiliśmy (najpewniej jest jeszcze coś daleko na prawo, przez co przechodzi twoje połączenie z Internetem, i jest coś (daleko poza stroną) w Internecie, z czym byś chciał się komunikować). Linux `masq-gate` jest gateway-em z maskowaniem dla wewnętrznej sieci złożonej z `komp1`, `komp2` i `komp3`, które chcą się dostać do Internetu. Sieć wewnętrzna używa jednego z adresów do prywatnego użytku, w tym przypadku sieci klasy C 192.168.1.0, z Linux-em posiadającym adres 192.168.1.1 i innymi systemami posiadającymi adresy w tej sieci.

Trzy maszyny `komp1`, `komp2` i `komp3` (które, przy okazji, mogą być jakimkolwiek innym systemem rozumiejącym IP - jak np.: Windows 95, Macintosh MacTCP czy nawet kolejny Linux) mogą połączyć się z innymi maszynami w Internecie, jednak system maskowania `masq-gate` zamienia wszystkie ich połączenia, tak żeby wyglądały jakby pochodziły z `masq-gate` i zajmuje się tym, aby dane przychodzące spowrotem do połączenia maskowanego zostały przekazane do odpowiedniego systemu - tak więc systemy w wewnętrznej sieci widzą bezpośrednie połączenie z Internetem i są nieświadome, że ich dane są zmieniane.

## 2.6 Wymagania dla maskowania IP na Linuksie 2.x.

> ** Najnowsze informacje znajdziesz na stronie zasobów dla maskowania. Trudno jest często uaktualniać HOWTO.**

- Źródła jądra w wersji 2.0.x z ftp.icm.edu.pl
  (Tak, będziesz musiał sobie skompilować jądro z pewnymi dodatkami. Zalecana jest najnowsza stabilna wersja.)
- Moduły jądra, najlepiej 2.0.0 lub nowsze dostępne z ftp.icm.edu.pl
  (modules-1.3.57 jest najstarszą możliwą wersją)
- Dobrze skonfigurowana sieć TCP/IP.
  Jest to omówione w NET-3-HOWTO (dostępnym w j. polskim) oraz w Network Administrator's Guide.
- Połączenie z Internetem dla twojego Linux-a.
  Omówione w ISP-Hookup-HOWTO (dostępne w j. polskim), PPP-HOWTO (dostępne w j. polskim) oraz PPP-over-ISDN mini-HOWTO.
- ipfwadm 2.3 lub nowszy dostępny z ftp.icm.edu.pl
  Więcej informacji na temat wymaganej wersji znajduje się na stronie o ipfwadm.
- Możesz opcjonalnie nałożyć kilka łat do maskowania, aby włączyć dodatkowe możliwości. Więcej informacji znajdziesz na stronie zasobów dla maskowania (łaty te można nakładać na wszystkie wersje jądra 2.0).

## 3. Ustawianie maskowania IP.

> Jeśli twoja prywatna sieć zawiera jakieś ważne informacje, pomyśl trochę zanim zaczniesz korzystać z maskowania. Może to być twoja brama do Internetu, ale także brama do twojej sieci dla kogoś z zewnątrz.

## 3.1 Kompilacja jądra dla obsługi maskowania.

> ** Najnowsze informacje znajdziesz na stronie zasobów dla maskowanieu. Trudno jest często uaktualniać HOWTO.**

- Po pierwsze potrzebujesz źródeł jądra (najlepiej w wersji 2.0.0 lub nowszej).
- Jeśli jest to twoja pierwsza kompilacja jądra, nie bój się. Właściwie jest to raczej proste i opisane w Kernel-HOWTO (dostępne w j. polskim).
- Rozpakuj źródła do katalogu `/usr/src/` poleceniem `tar xvzf linux-2.0.x.tar.gz -C /usr/src`, gdzie x jest numerem łaty (od 0 do najnowszej wersji).
  (upewnij się, że istnieje katalog lub symboliczne dołączenie o nazwie `linux`).
- Nałóż odpowiednie łaty. Ponieważ pojawiają się nowe łaty, szczegółów nie zamieszczę tutaj. Zajrzyj na stronę zasobów dla maskowania, aby poznać najnowsze informacje.
- Dalsze informacje na temat kompilacji znajdziesz w Kernel-HOWTO i pliku README znajdującym się w katalogu ze źródłami.
- Oto opcje, które musisz wkompilować:

  Odpowiedz YES na następujące pytania:

  > `

  >       * Prompt for development and/or incomplete code/drivers
  >         CONFIG_EXPERIMENTAL
  >         - pozwoli ci to na wybór eksperymentalnego kodu maskowania

  >       * Enable loadable module support
  >         CONFIG_MODULES
  >         - pozwoli na ładowanie modułów

  >       * Networking support
  >         CONFIG_NET

  >       * Network firewalls
  >         CONFIG_FIREWALL

  >       * TCP/IP networking
  >         CONFIG_INET

  >       * IP: forwarding/gatewaying
  >         CONFIG_IP_FORWARD

  >       * IP: firewalling
  >         CONFIG_IP_FIREWALL

  >       * IP: maskowanie (EXPERIMENTAL)
  >         CONFIG_IP_MASQUERADE
  >         - pomimo, że jest to eksperymentalne jest to *KONIECZNE*

  >       * IP: ipautofw masquerade support (EXPERIMENTAL)
  >         CONFIG_IP_MASQUERADE_IPAUTOFW
  >         - zalecane

  >       * IP: ICMP maskowanie
  >         CONFIG_IP_MASQUERADE_ICMP
  >         - obsługa maskowania pakietów ICMP, opcjonalne

  >       * IP: always defragment
  >         CONFIG_IP_ALWAYS_DEFRAG
  >         - szczególnie zalecane

  >       * Dummy net driver support
  >         CONFIG_DUMMY
  >         - zalecane

  > `

  UWAGA: To są opcje tylko do maskowania. Włącz to co potrzebujesz dla swojej konfiguracji.

- Po kompilacji jądra powinieneś skompilować i zainstalować moduły:

  > `

  >     make modules; make modules_install

  > `

- Potem powinieneś dodać kilka linii do swojego pliku `/etc/rc.d/rc.local` (czy jakiegoś, który uważasz za stosowny), aby automatycznie podczas każdego startu systemu załadować moduły znajdujące się w `/lib/modules/2.0.x/ipv4/`:

  > `

  >             .
  >             .
  >             .
  >     /sbin/depmod -a
  >     /sbin/modprobe ip_masq_ftp
  >     /sbin/modprobe ip_masq_raudio
  >     /sbin/modprobe ip_masq_irc
  >     (i inne moduły jak ip_masq_cuseeme, ip_masq_vdolive
  >      jeśli założyłeś łaty)
  >             .
  >             .
  >             .

  > `

Uwaga: Możesz także załadować te moduły ręcznie przed użyciem ip_masq, ale NIE używaj do tego celu kerneld - to NIE będzi działać!

## 3.2 Przypisywanie adresów IP w prywatnej sieci.

Ponieważ wszystkie INNE maszyny nie mają przypisanych adresów, musi być jakiś poprawny sposób, aby nadać im takie adresy.

Z IP Masquerade FAQ:

Jest RFC (#1597) informujące które adresy IP mogą być używane w niepołączonych sieciach. Są 3 bloki przeznaczone do tego celu. Ten, którego używam to podsieci klasy C o adresach 192.168.1.n do 192.168.255.n.

> `

>     Z RFC 1597:

>     Rozdział 3: Prywatna przestrzeń adresowa

>     IANA (Internet Assigned Numbers Authority) zarezerwowało następujące
>     trzy bloki przestrzeni adresów IP dla prywatnych sieci:

>                   10.0.0.0        -   10.255.255.255
>                   172.16.0.0      -   172.31.255.255
>                   192.168.0.0     -   192.168.255.255

>     Do pierwszego będziemy się odnosić jako "24-bitowy blok", do drugiego
>     jako "20-bitowy blok" i do trzeciego jako "16-bitowy blok". Zauważ, że
>     pierwszy blok to nic innego jak pojedynczy numer sieci klasy A,
>     podczas gdy drugi blok to ciągły blok 16. sieci klasy B i trzeci blok
>     to ciągły blok 255. sieci klasy C.

> `

Tak więc, jeśli używasz sieci klasy C, powinieneś nadać swoim maszynom adresy 192.168.1.1, 1.92.168.1.2, 1.92.168.1.3, ..., 192.168.1.x.

192.168.1.1 to zwykle gateway, który jest Linux-em łączącym cię z Internetem. Zauważ, że 192.168.1.0 i 192.168.1.255, to odpowiednio adresy sieci i broadcast, które są zarezerwowane. Unikaj użycia tych adresów na twoich maszynach.

## 3.3 Konfiguracja INNYCH maszyn.

Oprócz ustawienia na każdej maszynie adresu IP, powinieneś także ustawić odpowiedni gateway. Ogólnie, jest to raczej proste. Po prostu wpisujesz adres swojego Linux-a (zwykle 192.168.1.1) jako adres gateway-a.

Jako DNS możesz wpisać jakikolwiek dostępny adres serwera DNS-u. Najlepiej ten sam, którego używa twój Linux. Możesz także dodać jakąkolwiek domenę do przeszukiwania.

Po tym jak skonfigurowałeś te adresy IP, nie zapomnij zrestartować odpowiednich serwisów lub systemów.

Następujące wskazówki konfiguracyjne zakładają, że używasz sieci klasy C, twój Linux ma adres 192.168.1.1. Pamiętaj, że 192.168.1.0 i 192.168.1.255 są zarezerwowane.

### Konfiguracja windows 95.

1. Jeśli jeszcze nie zainstalowałeś karty sieciowej, zrób to teraz.
2. Przejdź do Panel Sterowania/Sieć.
3. Dodaj protokół TCP/IP jeśli jeszcze go nie masz.
4. We właściwościach TCP/IP przejdź do Adres IP i ustaw na 192.168.1.x (1 < x < 255) i wtedy ustaw Maskę podsieci na 255.255.255.0
5. Dodaj 192.168.1.1 jako twój gateway w polu Gateway.
6. W Konfiguracji DNS dodaj serwer DNS, którego używa twój Linux (zwykle jest w pliku `/etc/resolv.conf`). Opcjonalnie możesz dodać jakąś domenę do przeszukiwania.
7. Pozostaw resztę ustawień w takim stanie w jakim są, chyba że wiesz co robisz.
8. Kliknij OK we wszystkich okienkach i zrestartuj system.
9. `ping`-nij Linux-a, aby sprawdzić połączenie sieciowe: Start/Uruchom, wpisz `ping 192.168.1.1`
   (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.)
10. Możesz opcjonalnie stworzyć w katalogu windows plik `HOSTS`, żebys mógł używać nazw hostów (bez domeny) ze swojej sieci. W katalogu windows znajduje się przykład o nazwie `HOSTS.SAM`.

### Konfiguracja Windows for Workgroups 3.11.

1. Jeśli jeszcze nie zainstalowałeś karty sieciowej, zrób to teraz.
2. Zainstaluj pakiet TCP/IP 32b jeśli jeszcze go nie masz.
3. W Grupa główna/Ustawienia/Sieć kliknij Sterowniki.
4. Podświetl Microsoft TCP/IP-32 3.11b w Sterownikach sieciowych, kliknij Ustawienia.
5. Ustaw adres IP na 192.168.1.x (1 < x < 255), ustaw Maskę podsieci na 255.255.255.0 i domyślny gateway na 192.168.1.1
6. Nie włączaj Automatycznej konfiguracji DHCP i nie wpisuj nic w wiersze WINS Server o ile jesteś w domenie Windows NT i wiesz co robisz.
7. Kliknij DNS, wypełnij odpowiednie pola wymienione w kroku 6. w sekcji 3.3.1, potem kliknij OK.
8. Kliknij Zaawansowane, zaznacz Włącz DNS dla Windows Name Resolution i Włącz sprawdzanie LMHOSTS jeśli używasz pliku z hostami, podobnie do kroku 10. w sekcji 3.3.1.
9. Kliknij OK we wszystkich okienkach i zrestartuj system.
10. tt/ping/-nij Linux-a, aby sprawdzić połączenie sieciowe: Start/Uruchomm wpisz `ping 192.168.1.1`
    (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.)

### Konfiguracja Windows NT.

1. Jeśli jeszcze nie zainstalowałeś karty sieciowej, zrób to teraz.
2. Przejdź do Grupa główna/Panel sterowania/Sieć
3. Dodaj protokół TCP/IP i powiązane składniki z menu Dodaj oprogramowanie jeśli nie masz jeszcze zainstalowanego serwisu TCP/IP.
4. W sekcji Oprogramowanie sieciowe i karty sieciowe podświetl protokół TCP/IP w Zainstalowane oprogramowanie sieciowe.
5. W Konfiguracji TCP/IP zaznacz odpowiednią kartę sieciową, np. `[1]Novell NE2000 Adapter`. Potem ustaw Adres IP na 192.168.1.x (1 < x < 255), ustaw Maskę podsieci na 255.255.255.0 i Domyślny gateway na 192.168.1.1.
6. Nie włączaj Automatycznej konfiguracji DHCP i nie wpisuj nic w wiersze WINS Server o ile jesteś w domenie Windows NT i wiesz co robisz.
7. Kliknij DNS, wypełnij odpowiednie pola wymienione w kroku 6. w sekcji 3.3.1, potem kliknij OK.
8. Kliknij Zaawansowane, zaznacz Włącz DNS dla Windows Name Resolution i Włącz sprawdzanie LMHOSTS jeśli używasz pliku z hostami, podobnie do kroku 10. w sekcji 3.3.1.
9. Kliknij OK we wszystkich okienkach i zrestartuj system.
10. tt/ping/-nij Linux-a, aby sprawdzić połączenie sieciowe: Start/Uruchomm wpisz `ping 192.168.1.1`

### Konfiguracja systemów unix-owych.

1. Jeśli nie masz zainstalowanej swojej karty ani skompilowanego odpowiedniego sterownika, zrób to teraz.
2. Zainstaluj TCP/IP, jak np. pakiet nettols, jeśli jeszcze tego nie zrobiłeś.
3. Ustaw IPADDR na 192.168.1.x (1 < x < 255), ustaw NETMASK na 255.255.255.0, GATEWAY na 192.168.1.1 i BROADCAST na 192.168.1.255.
   Np. możesz zmodyfikować plik `/etc/sysconfig/network-scripts/ifcfg-eth0` w dystrybucji Red Hat, albo po prostu zrób to w Control Panel-u.
   (inaczej postępuje się w SunOS, BSDi, Slckware Linux, itd.)
4. Dodaj serwer DNS i domenę do przeszukiwania w `/etc/resolv.conf`.
5. W zależności od twoich ustawień możesz też uaktualnić `/etc/networks`.
6. Zrestartuj odpowiednie serwisy albo po prostu zrestartuj system.
7. Wydaj polecenie `ping`: `ping 192.168.1.1`, aby sprawdzić połączenie do gateway-a.
   (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.)

### Konfiguracja DOS-a z pakietem NCSA Telnet.

1. Jeśli jeszcze nie zainstalowałeś karty sieciowej, zrób to teraz.
2. Załaduj odpowiedni sterownik. Dla karty NE2000 wydaj polecenie `nwpd 0x60 10 0x300`, jeśli karta jest ustawiona na IRQ=10 i adres I/O=0x300.
3. Stwórz nowy katalog i rozpakuj pakiet NCSA Telnet,; `pkunzip tel2308b.zip`.
4. Zmodyfikuj plik `config.tel`.
5. Ustaw `myip=192.168.1.x` (1 < x < 255) i netmask=255.255.255.0.
6. W tym przykładzie powinieneś ustawić `hardware=packet, interrupt=10, ioaddr=60`
7. Powinieneś mieć przynajmniej jedną maszynę ustawioną jako gateway, tj. Linux-a:

   > `

   >     name=default
   >     host=twój.linux
   >     hostip=192.168.1.1
   >     gateway=1

   > `

8. Kolejna pozycja to DNS:

   > `

   >     name=dns.domena.pl ; hostip=123.123.123.123; nameserver=1

   > `

   Uwaga: zamień powyższe informacje na poprawne dla ciebie.
9. Zapisz plik `config.tel`
10. Połącz się poprzez telnet z Linux-em, aby sprawdzić połączenie `telnet 192.168.1.1`

### Konfiguracja MacOS z MacTCP.

1. Jeśli nie zainstalowałeś odpowiedniego sterownika dla twojej karty Ethernetowej, teraz byłby bardzo dobry moment, aby to zrobić.
2. Otwórz MacTCP control panel. Wybierz odpowiedni sterownik sieci (Ethernet, NIE EtherTalk) i kliknij przycisk More....
3. W Obtain Address kliknij Manually.
4. W IP Address wybierz Class C z listy. Zignoruj resztę ustawień w tym okienku.
5. Wypełnij odpowiednie informacje w Domain name Service information.
6. W Gateway Address wpisz 192.168.1.1.
7. Kliknij OK, aby zachować ustawienia. W głównym okienku MacTCP control panel wpisz adres IP swojego Mac-a (192.168.1.x, 1 < x < 255) w wierszu IP Address.
8. Zamknij MacTCP control panel. Jeśli pojawi się okienko sugerujące restart systemu - zrób tak.
9. Możesz opcjonalnie `ping`-nąć Linux-a, aby sprawdzić połączenie. Jeśli masz program freeware'owy MacTCP Watcher, kliknij na przycisk Ping i wpisz adres swojego Linux-a (192.168.1.1) w okienku, które się pojawi. (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.)
10. Opcjonalnie możesz także stworzyć plik `Hosts` w System Folders, żeby używać tylko nazw hostów bez domeny w swojej sieci lokalnej. Plik powinien się już znajdować w System Folders i powinien zawierać kilka (zakomentowanych) przykładowych pozycji, które możesz zmodyfikować na swoje potrzeby.

### Konfiguracja systemów MacOS z Open Transport.

1. Jeśli nie zainstalowałeś odpowiedniego sterownika dla twojej karty Ethernetowej, teraz byłby bardzo dobry moment, aby to zrobić.
2. Otwórz TCP/IP Control Panel i wybierz User Mode ... z menu Edit. Sprawdź czy user mode jest ustawiony conajmniej na Advanced i kliknij OK.
3. Wybierz Configuration ... z menu File. Zaznacz konfigurację Default i kliknij Duplicate .... Wpisz "Ip masq" (lub coś co zaznaczy, że jest to specjalna konfiguracja) w okienku Duplicate Configuration, prawdopodobnie będzie tam coś jak Default Copy. Potem kliknij OK i Make Active.
4. Zaznacz Ethernet z okienka Connect via.
5. Zaznacz odpowiednią pozycję na liście Configure. Jeśli nie wiesz którą opcję wybrać, prawdopodobnie powinieneś wybrać ponownie konfigurację Default i wyjść. Ja używam Manually.
6. Wpisz adres IP swojego Mac-a (192.168.1.x, 1 < x < 255) w okienku IP Address.
7. Wpisz 255.255.255.0 w okienku Subnet mask.
8. Wpisz 192.168.1.1 w okienku Router address.
9. Wpisz adresy IP swoich serwerów DNS w okienku Name server addr.
10. Wpisz swoją domenę Internetową (np. microsoft.com) w okienku Starting domain name w wierszu Implicit Search Path:.
11. Następujące procedury są opcjonalne. Niepoprawne wartości mogą powodować złe zachowanie. Jeśli nie jesteś pewien, to lepiej je zostawić puste, niezaznaczone i/lub niewybrane. Usuń wszelkie informacje z tych pól, jesli jest to konieczne. O ile wiem, to nie ma sposobu, żeby zabronić poprzez okienka TCP/IP systemowi używania poprzednio wybranego alternatywnego pliku "Hosts". Jeśli wiesz coś na ten temat, to jestem zainteresowany.
    Zaznacz 802.3 jeśli twoja sieć wymaga ramek 802.3.
12. Kliknij Options..., aby upewnić się, że TCP/IP jest aktywne. Ja używam opcji Load only when needed. Jeśli uruchomisz i wyłączysz aplikację TCP/IP wiele razy bez restartowania maszyny, może się okazać, że odznaczenie opcji Load only when needed zredukuje zapotrzebowanie na pamięć w twojej maszynie. Z niezaznaczoną tą opcją stosy TCP/IP są zawsze ładowane i dostępne do użytku. Jeśli jest zaznaczona, stosy TCP/IP są ładowane automatycznie kiedy są potrzebne i usuwane z pamięci kiedy już nie są potrzebne. To właśnie ten proces ładowania/usuwania może sfragmentować twoją pamięć.
13. Możesz `ping`-nąć Linux-a, aby sprawdzić połączenie sieciowe. Jeśli masz program freeware'owy MacTCP Watcher, kliknij na przycisk Ping i wpisz adres swojego Linux-a (192.168.1.1) w okienku, które się pojawi. (To jest tylko test dla sieci lokalnej. Nie możesz jeszcze testować połączenia na świat.)
14. Opcjonalnie możesz także stworzyć plik `Hosts` w System Folders, żeby używać tylko nazw hostów bez domeny w swojej sieci lokalnej. Plik może, ale nie musi, już się znajdować w System Folders. Jeśli jest, to powinien zawierać kilka (zakomentowanych) przykładowych pozycji, które możesz zmodyfikować na swoje potrzeby. Jeśli go nie ma, możesz pobrać kopię z systemu z MacTCP, albo po prostu stworzyć swój własny (składnia jest taka jak w unix-owym `/etc/hosts`. Opisane to jest na stronie 33. w RFC 1035). Jeśli już stworzyłeś taki plik, otwórz TCP/IP control panel, kliknij Select Hosts File ... i otwórz plik `Hosts`.
15. Kliknij Close lub Quit z menu File i potem kliknij Save, aby zachować zmiany, które zrobiłeś.
16. Zmiany będa uwzględnione natychmiast, ale restart systemu nie zaszkodzi.

### Konfiguracja sieci Novell z DNS-em.

1. Jeśli nie zainstalowałeś odpowiedniego sterownika dla twojej karty Ethernetowej, teraz byłby bardzo dobry moment, aby to zrobić.
2. Zciągnij plik tcpip16.exe z adresu ftp.novell.com.
3. Zmodyfikuj `c:\nwclient\startnet.bat`. Oto kopia mojego:

       SET NWLANGUAGE=ENGLISH
       LH LSL.COM
       LH KTC2000.COM
       LH IPXODI.COM
       LH tcpip
       LH VLM.EXE
       F:

4. Zmodyfikuj `c:\nwclient\net.cfg` (zmień Link Driver na swój):

       Link Driver KTC2000
               Protocol IPX 0 ETHERNET_802.3
               Frame ETHERNET_802.3
               Frame Ethernet_II
               FRAME Ethernet_802.2

       NetWare DOS Requester
                  FIRST NETWORK DRIVE = F
                  USE DEFAULTS = OFF
                  VLM = CONN.VLM
                  VLM = IPXNCP.VLM
                  VLM = TRAN.VLM
                  VLM = SECURITY.VLM
                  VLM = NDS.VLM
                  VLM = BIND.VLM
                  VLM = NWP.VLM
                  VLM = FIO.VLM
                  VLM = GENERAL.VLM
                  VLM = REDIR.VLM
                  VLM = PRINT.VLM
                  VLM = NETX.VLM

       Link Support
               Buffers 8 1500
               MemPool 4096

       Protocol TCPIP
               PATH SCRIPT     C:\NET\SCRIPT
               PATH PROFILE    C:\NET\PROFILE
               PATH LWP_CFG    C:\NET\HSTACC
               PATH TCP_CFG    C:\NET\TCP
               ip_address      xxx.xxx.xxx.xxx
               ip_router       xxx.xxx.xxx.xxx

5. i na końcu stwórz `c:\bin\resolv.cfg`.

       SEARCH DNS HOSTS SEQUENTIAL
       NAMESERVER 207.103.0.2
       NAMESERVER 207.103.11.9

6. Mam nadzieję, że to pomoże niektórym podłączyć ich sieci Novell. Konfiguracja jest poprawna dla NetWare 3.1x i 4.x

### Konfiguracja OS/2 Warp.

1. Jeśli nie zainstalowałeś odpowiedniego sterownika dla twojej karty Ethernetowej, teraz byłby bardzo dobry moment, aby to zrobić.
2. Zainstaluj protokół TCP/IP jeśli jeszcze go nie masz.
3. Przejdź do Programms/TCP/IP (LAN) / TCP/IP.
4. W Network dodaj swój adres TCP/IP i ustaw maskę sieci (255.2555.255.0).
5. W Routing wciśnij Add. Ustaw Type na default i wpisz w polu Router Address adres swojego Linux-a. (192.168.1.1).
6. Ustaw w polu Hosts ten sam adres DNS, którego używa twój Linux.
7. Zamknij TCP/IP control panel. Odpowiedz yes na pojawiające się pytania.
8. Zrestartuj system.
9. Możesz `ping`-nąć Linux-a, aby sprawdzić konfigurację sieci. W oknie OS/2 Command prompt wpisz `ping 192.168.1.1`. Jeśli pakiety ping-a przychodzą wszystko jest w porządku.

### Konfigurowanie innych systemów.

Powinno się to robić podobnie. Sprawdź poprzednie punkty. Jeśli jesteś zainteresowany opisaniem konfiguracji w jakimkolwiek systemie, to wyślij szczegółowe instrukcje na adres ambrose@writeme.com.

## 3.4 Konfiguracja zasad forwardingu IP.

W tym momencie, powinieneś mieć zainstalowane jądro wraz ze wszystkimi potrzebnymi pakietami, jak również załadowane moduły. Także adresy IP, gateway-a i DNS-u na INNYCH maszynach powinny być ustawione.

Teraz jedyne co pozostało, to użycie ipfwadm, aby przekazywać odpowiednie pakiety odpowiednim maszynom.

> ** Można to zrobić na wiele róznych sposbów. Poniższe sugestie i przykłady działały u mnie, ale ty możesz mieć inne pomysły. Więcej szczegółów znajdziesz w rozdziale 4.4 i na stronie podręcznika systemowego o ipfwadm. **

> `

>     ipfwadm -F -p deny
>     ipfwadm -F -a m -S yyy.yyy.yyy.yyy/x -D 0.0.0.0/0

> `

gdzie x jest jednym z poniższych adresów w zależności od klasy twojej sieci, a yyy.yyy.yyy.yyy jest adresem twojej sieci:

> `

>     Maska           | x  | Podsieć
>     ~~~~~~~~~~~~~~~~|~~~~|~~~~~~~~~~~~~~~
>     255.0.0.0       | 8  | Klasa A
>     255.255.0.0     | 16 | Klasa B
>     255.255.255.0   | 24 | Klasa C
>     255.255.255.255 | 32 | Point-to-point

> `

Na przykład jeśli jestem w posieci klasy C, wpisałbym:

> `

>     ipfwadm -F -p deny
>     ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0

> `

Ponieważ pakiety bootp przychodzą z poprawnym IP kiedy klient jeszcze nic na temat adresu IP nie wie, dla tych którzy używają serwera bootp w maszynach z maskowaniem czy firewall-ingiem konieczne jest użycie poniższego polecenia przed poleceniem z deny:

> `

>     ipfwadm -I -a accept -S 0/0 68 -D 0/0 67 -W bootp_clients_net_if_name -P udp

> `

Możesz to także zrobić dla każdej maszyny osobno. Na przykład jeśli chcę, żeby maszyny 192.168.1.2 i 192.168.1.8 miały dostęp do Internetu, a inne nie, to wpisałbym:

> `

>     ipfwadm -F -p deny
>     ipfwadm -F -a m -S 192.168.1.2/32 -D 0.0.0.0/0
>     ipfwadm -F -a m -S 192.168.1.8/32 -D 0.0.0.0/0

> `

Opcjonalnie możesz wpisać maskę podsieci zamiast wartości: 192.168.1.0/255.255.255.0.

Popularnym błędem jest umieszczanie jako pierwszego polecenia:

    ipfwadm -F -p masquerade

Nie czyń maskowania domyślną zasadą - jeśli tak zrobisz, ktoś kto może manipulować swoim routingiem, będzie w stanie stworzyć tunel bezpośrednio poprzez twój gateway, aby ukryć swoją tożsamość!

Możesz dodać te linie do plików `/etc/rc.local`, do jakiegoś innego pliku `rc.*`, lub robić to ręcznie za każdym razem kiedy potrzebujesz maskowania.

Szczegóły na temat ipfwadm znajdziesz w rozdziale 4.4.

## 3.5 Testowanie maskowania.

Nadszedł czas, żeby wypróbować to wszystko po ciężkiej pracy. Upewnij się, że Linux jest podłączony do Internetu.

Możesz spróbować posurfować po INTERNECIE!!! na swoich INNYCH maszynach i sprawdzić czy się uda. Za pierwszym razem radzę, użyć adresu IP zamiast nazwy kanonicznej, ponieważ twoje ustawienia DNS mogą być niepoprawne.

Na przykład możesz sprawdzić stronę projektu JTZ (http://www.jtz.org.pl/) podając jako adres http://156.17.40.40/.

Jeśli ujrzysz ją, to gratulacje! Działa! Możesz teraz spróbować podać nazwę kanoniczną, potem telnet, ftp, Real Audio, True Speech i co tam jeszcze jest obsługiwane przez maskowanie ... .

Jak dotąd nie mam problemów z powyższymi ustawieniami i jest to w pełni zasługa ludzi, którzy poświęcają swój czas, aby ta wspaniała właściwość działała.

## 4. Inne sprawy związane z maskowaniem IP i obsługa oprogramowania.

## 4.1 Problemy z maskowaniem IP.

Niektóre protokoły nie będą obecnie działały z maskowaniem, ponieważ albo zakładają pewne fakty na temat numerów portów, albo kodują dane na temat adresów i portów w swoich strumieniach - te drugie potrzebują specyficznych proxies wbudowanych w kod maskowania, aby działały.

## 4.2 Wchodzące serwisy.

Maskowanie nie potrafi w ogóle obsługiwać takich serwisów. Jest kilka sposobów, aby takowe działały, ale są one zupełnie nie związane z maskowaniem i są częścią standardowego działania firewall-i.

Jeśli nie wymagasz wysokiego poziomu bezpieczeństwa, to możesz po prostu przekierować porty. Są różne sposoby, aby to zrobić - ja używam zmodyfikowanego kodu programu redir (który mam nadzieję będzie dostępny wkrótce z sunsite i jego kopii). Jeśli chcesz mieć jakiś poziom autoryzacji połączeń wchodzących, to możesz użyć albo TCP wrappers albo Xinetd "powyżej" redir w wersji 0.7 lub nowszej, aby wpuszczać tylko konkretne adresy IP, albo użyj jakichś innych narzędzi. TIS Firewall Toolkit jest dobrym miejscem, w którym możesz poszukać narzędzi i informacji.

Więcej informacji znajdziesz na stronie z zasobami dla maskowania IP.

## 4.3 Obsługiwane oprogramowanie klienckie i uwagi o innych ustawieniach.

> ** Nastepującą listą nikt się już nie zajmuje. Zajrzyj na tę stronę, aby dowiedzieć się które aplikacje działają poprzez maskowanie na Linux-ie. Więcej informacji także na stronie z zasobami dla maskowania IP. **

Ogólnie aplikacja, która używa TCP/UDP powinna działać. Jeśli masz jakieś sugestie, wskazówki lub pytania, na temat aplikacji z maskowaniem IP, odwiedź tę stronę prowadzoną przez Lee Nevo.

### Oprogramowanie, które działa.

Ogólne:

HTTP

  wszystkie obsługiwane platformy, surfowanie po sieci

POP & SMTP

  wszystkie obsługiwane platformy, klienci e-mail

Telnet

  wszystkie obsługiwane platformy, zdalne logowanie

FTP

  wszystkie obsługiwane platformy, z modułem ip_masq_ftp.o (nie wszystkie adresy działają z pewnymi klientami; np. do niektórych nie można się dostać przy pomocy ws_ftp32, ale działa z Netscape)

Archie

  wszystkie obsługiwane platformy, szukanie plików (nie wszytkie wersje oprogramowania są obsługiwane)

NNTP (USENET)

  wszystkie obsługiwane platformy, klient USENET NEWS

VRML

  Windows (przypuszczalnie wszystkie obsługiwane platformy), surfowanie po wirtualnej rzeczywistości.

traceroute

  głównie platformy na UNIX-ie, niektóre wersje mogą nie działać

ping

  wszystkie platformy, z łatą ICMP

wszystko oparte o IRC

  wszystkie obsługiwane platformy, z modułami ip_masq_irc.o

klient Gopher

  wszystkie obsługiwane platformy

klient WAIS

  wszystkie obsługiwane platformy

Klienci Multimedialni:

Real Audio Player

  Windows, network streaming audio z załadowanym modułem ip_masq_raudio

True Speech PLayer 1.1b

  Windows, network streaming audio

Internet Wave Player

  Windows, network streaming audio

Worlds Chat 0.9a

  Windows, program Client-Server 3D do pogawędek

Alpha Worlds

  Windows, program Client-Server 3D do pogawędek

Internet Phone 3.2

  Windows, komunikacja audio Peer-to-peer, można się z tobą porozumieć tylko jeśli zainicjowałeś połączenie, ale nie można zadzwonić do ciebie

Powwow

  Windows, komunikacja na bazie tablic (ogłoszeniowych), można się z tobą porozumieć jeśli zainicjowałeś połączenie; nie można się do ciebie dodzwonić

CU-SeeMe

  , wszystkie obsługiwane platformy, z załadowanymi modułami cuseeme; szczegóły znajdziesz na stronie z zasobami dla maskowania IP.

VDOLive

  Windows, z łatą vdolive

Uwaga: Niektóre programy, jak IPhone i Powwow mogą działać nawet jeśli to nie ty zaincjowałeś połączenie poprzez użycie pakietu ipautofw. Zobacz w rozdziale 4.6.

Inni klienci:

NCSA Telnet 2.3 08

  DOS, pakiet zawierający telnet, ftp, ping, itp.

PC-anywhere for Windows 2.0

  MS-Windows, zdalna kontrola PC poprzez TCP/IP, działa tylko jeśli jest klientem a nie hostem.

Socket Watch

  używa ntp - protokół czasu w sieci

pakiet net-acct w Linux-ie

  Linux, pakiet do zarządzania i monitorowania sieci.

### Oprogramowanie nie działające.

Intel Internet Phone Beta 2

  Łączy się, ale głos wędruje tylko w jedną stronę (na zewnątrz)

Intel Streaming media Viewer beta 1

  Nie może połączyć się z serwerem

Netscape CoolTalk

  Nie może połączyć się z drugą stroną

talk, ntalk

  nie będą działać - wymagają napisania proxy dla jądra

WebPhone

  W tej chwili nie może działać (robi złe założenia na temat adresów)

X

  Nietestowane, ale sądze, że nie może działać o ile ktoś stworzy proxy dla X, który jest prawdopodobnie osobnym programem dla kodu maskowania. Jednym ze sposobów, aby to działało jest użycie ssh jako połączenia i użycie wewnętrznego proxy X.

### Przetestowane platformy/systemy operacyjne jako INNE maszyny.

- Linux
- Solaris
- Windows 95
- Windows NT (workstation i serwer)
- Windows For Workgroup 3.11 (z pakietem TCP/IP)
- Windows 3.1 (z pakietem Chameleon)
- Novel 4.01 Server
- OS/2 (włącznie z Warp v3)
- Macintosh OS (z MacTCP lub Open Transport)
- DOS (z pakietem NCSA Telnet, DOS Trumpet działa częściowo)
- Amiga (ze stosem AmiTCP lub AS225)
- VAX Stations 3520 and 3100 z UCX (stos TCP/IP dla VMS)
- Alpha/AXP z Linux-em Redhat-em
- SCO Openserver (v3.2.4.2 i 5)
- IBM RS/6000 z uruchomionym na nim AIX-em
- (Ktoś sprawdzał inne platformy?)

## 4.4 Administracja Firewall-em IP (ipfwadm)

Rozdział ten pogłębia wiedzę na temat stosowania polecenia ipfwadm.

Poniżej jest ustawienie dla system z maskowaniem/firewalling-iem, z łączem PPP i statycznymi adresami PPP. Zaufanym interfejsem jest 192.168.255.1, interfejs PPP został zmieniony, aby chronić winnych :). Każdy wchodzący i wychodzący interfejs jest podany osobno, aby wychwycić spoofing IP jak i zatkany (stuffed) routing i/lub maskowanie. Wszystko co nie jest wyraźnie dozwolone jest zabronione!

    #!/bin/sh
    #
    # /etc/rc.d/rc.firewall, define the firewall configuration, invoked from
    # rc.local.
    #

    PATH=/sbin:/bin:/usr/sbin:/usr/bin

    # testowanie, poczekaj trochę, potem wyczyść wszystkie regułki.
    # odkomentuj poniższe linie jeśli chcesz wyłączyć firewall
    # automatycznie po 10. minutach.
    # (sleep 600; \
    # ipfwadm -I -f; \
    # ipfwadm -I -p accept; \
    # ipfwadm -O -f; \
    # ipfwadm -O -p accept; \
    # ipfwadm -F -f; \
    # ipfwadm -F -p accept; \
    # ) &

    # Wchodzące, wyczyść i ustaw domyślną regułkę na zabronione. Właściwie
    # domyślna regułka jest nieodpowiednia, ponieważ zrobiliśmy inną: nie
    # wpuszczaj nikogo i loguj wszystko.
    ipfwadm -I -f
    ipfwadm -I -p deny
    # interfejs i maszyny lokalne mogą się dostać wszędzie
    ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0
    # interfejs odległy, twierdzący, że jest od nas, spoofing IP, nie
    # wpuszczaj
    ipfwadm -I -a deny -V twój.stały.adres.PPP -S 192.168.0.0/16 -D 0.0.0.0/0 -o
    # interfejs odległy, jakiekolwiek źródło, jeśli celem jest stały adres
    # PPP, to wpuść
    ipfwadm -I -a accept -V twój.stały.adres.PPP -S 0.0.0.0/0 -D twój.stały.adres.PPP/32
    # interfejs loopback (lo) jest w porządku
    ipfwadm -I -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0
    # wychwyć wszystko, każdy inny ruch wchodzący jest zabroniony i
    # logowany, szkoda, że nie ma opcji logowania, ale to robi to samo.
    ipfwadm -I -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o

    # Wychodzące, wyczyść i ustaw domyślną regułkę na zabronione. Właściwie
    # domyślna regułka jest nieodpowiednia, ponieważ zrobiliśmy inną: nie
    # wpuszczaj nikogo i loguj wszystko.
    ipfwadm -O -f
    ipfwadm -O -p deny
    # interfejs lokalny, wszystko z zewnątrz do nas jest w porządku
    ipfwadm -O -a accept -V 192.168.255.1 -S 0.0.0.0/0 -D 192.168.0.0/16
    # wychodzące do lokalnej sieci na zdalnym interfejsie, stuffed
    # routing, odrzuć
    ipfwadm -O -a deny -V twój.statyczny.adres.PPP -S 0.0.0.0/0 -D 192.168.0.0/16 -o
    # wychodzące z lokalnej sieci na zdalnym interfejsie, stuffed
    # masquerading, odrzuć
    ipfwadm -O -a deny -V twój.statyczny.adres.PPP -S 192.168.0.0/16 -D 0.0.0.0/0 -o
    # wychodzące z lokalnej sieci na zdalnym interfejsie, stuffed
    # masquerading, odrzuć
    ipfwadm -O -a deny -V twój.statyczny.adres.PPP -S 0.0.0.0/0 -D 192.168.0.0/16 -o
    # wszystko inne wychodzące na zdalnym interfejsie jest w porządku
    ipfwadm -O -a accept -V twój.statyczny.adres.PPP -S twój.statyczny.adres.PPP/32 -D 0.0.0.0/0
    # interfejs lokalny (lo) jest w porządku
    ipfwadm -O -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0
    # wychwyć wszystko, każdy inny ruch wychodzący jest zabroniony i
    # logowany, szkoda, że nie ma opcji logowania, ale to robi to samo.
    ipfwadm -O -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o

    # Przekazywanie, wyczyść i ustaw domyślną regułkę na zabronione. Właściwie
    # domyślna regułka jest nieodpowiednia, ponieważ zrobiliśmy inną: nie
    # wpuszczaj nikogo i loguj wszystko.
    ipfwadm -F -f
    ipfwadm -F -p deny
    # maskuj z lokalnej sieci na lokalnym interfejsie dokądkolwiek
    ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0
    # wychwyć wszystko, każdy inny ruch jest zabroniony i
    # logowany, szkoda, że nie ma opcji logowania, ale to robi to samo.
    ipfwadm -F -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o

Możesz blokować ruch do poszczególnego adresu przy pomocy opcji -I, -O i -F. Pamiętaj, że regułki są skanowane od góry w dół i -a oznacza "dodaj" do już istniejących regułek, tak więc wszelkie szczegółowe regułki muszą pojawić się przed zasadami ogólnymi. Na przykład (nietestowane):

Użycie opcji -I. Przypuszczalnie najszybsze rozwiązanie, ale zatrzymuje tylko lokalne maszyny, firewall jako taki, ma nadal dostęp do zabronionych adresów. Oczywiście możesz dopuścić taką kombinację.

    ... początek regułek -I ...
    # odrzuć i loguj lokalny interfejs i lokalne maszyny próbujące dostać
    # się do 204.50.10.13
    ipfwadm -I -a reject -V 192.168.255.1 -S 192.168.0.0/16 -D 204.50.10.13/32 -o
    # lokalny interfejs i maszyny dokądkowiek jest w porządku
    ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0
    ... koniec regułek -I ...

Użycie opcji -O. Najwolniejsze ponieważ pakiety najpierw przechodzą przez maskowanie, ale ta regułka zatrzymuje nawet firewall przed dostępem do zabronionych adresów.

    ... początek regułek -O ...
    # odrzuć i zaloguj wychodzące do 204.50.10.13
    ipfwadm -O -a reject -V twój.statyczny.adres.PPP -S twój.statyczny.adres.PPP/32 -D 204.50.10.13/32 -o
    # wszystko inne wychodzące na odległym interfejsie jest w porządku.
    ipfwadm -O -a accept -V twój.statyczny.adres.PPP -S twój.statyczny.adres.PPP/32 -D 0.0.0.0/0
    ... koniec regułek -O ...

Użycie opcji -F. Prawdopodobnie wolniejsze niż -I i wciąż zatrzymuje tylko maszyny zamaskowane (tj. wewnętrzne), firewall ma nadal dostęp do zabronionych adresów.

    ... początek regułek -F ...
    # odrzuć i zaloguj  z lokalnej sieci na interfejsie PPP do
    # 204.50.10.13
    ipfwadm -F -a reject -W ppp0 -S 192.168.0.0/16 -D 204.50.10.13/32 -o
    # maskuj z lokalnej sieci na lokalnym interfejsie dokądkolwiek
    ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0
    ... koniec regułek -F ...

Nie ma potrzeby na specjalną regułkę, aby pozwolić na ruch z 192.168.0.0/16 do 204.50.11.0; jest to zapewnione przez regułki ogólne.

Jest więcej niż jeden sposób ujęcia interfejsów w powyższych regułkach. Na przykład zamiast -V 192.168.255.1 możesz wpisać -W eth0; zamiast -V twój.statyczny.adres.PPP możesz użyć -W ppp0. Prywatny wybór i dokumentacja, to więcej niż cokolwiek innego.

## 4.5 Maskowanie IP i dzwonienie na żądanie.

1. Jeśli chciałbyś tak ustawić swoją sieć, aby połączyć się z Internetem automatycznie, to narzędzie diald - dzwonienie na żądanie - będzie swietnym pakietem.
2. Aby ustawić diald, zajrzyj na stronę Ustawianie Diald dla linux-a.
3. [Od tłumacza] Możesz tez zajrzeć do Diald mini HOWTO (dostępne w j. polskim).
4. Jak już ustawisz diald i maskowanie IP, możesz podejść do którejkolwiek z maszyn klienckich i zainicjować połączenie WWW, telnet lub FTP.
5. Diald wychwyci nadchodzące żądanie, zadzwoni do prowajdera i ustawi połączenie.
6. Przy pierwszym połączeniu pojawi się przerwa. Jest to nieuniknione jeśli używasz analogowych modemów. Czas, który jest potrzebny do ustawienia połączenia modemów i PPP, spowoduje, że twój program kliencki stwierdzi rozłączenie. Można tego uniknąć jeśli używasz modemów ISDN. Wszystko co musisz zrobić, to przerwać bieżący proces na kliencie i ponowić go.

## 4.6 Pakiet do przekazywania IPautofw.

IPautofw jest programem do ogólnie pojętego przekazywania pakietów TCP i UDP w Linux-ie. Żeby użyć pakietu, który wymaga transmisji UDP trzeba załadować specyficzny moduł ip_masq - ip_masq_raudio, ip_masq_cuseeme, itd. Ipautofw odgrywa bardziej ogólną rolę; będzie on przekazywał każdy rodzaj ruchu włącznie z tym, którego nie przepuszczą moduły specyficzne dla danej aplikacji. Jeśli zarządza się tym programem niepoprawnie można stworzyć dziurę w bezpieczeństwie.

## 5. Różności.

## 5.1 Zdobywanie pomocy.

> ** Proszę SPRÓBUJ NIE wysyłać do mnie listów na temat problemów z maskowaniem IP. Z powodu ilości własnych zajęć nie mogę obiecać, że odpowiem na wszystkie listy nie związane ze stroną WWW. Zamiast tego ślij proszę takie listy na listę dyskusyjną o maskowaniu IP (sądzę, że jest to najlepsze źródło pomocy). Przepraszam za to, ale nie chcę abyś czekał tygodniami na odpowiedź.

- Na stronie z zasobami dla maskowania IP powinieneś znaleźć najwięcej informacji o konfiguracji.
- Zapisanie się na listę dyskusyjną o maskowaniu IP (zalecane).
  Aby zapisać się, wyślij list o tytule "subscribe" (bez cudzysłowów) na adres masq-request@indyramp.com
  Aby się wypisać, wyślij list o tytule "unsubscribe": (bez cudzysłowów) na adres powyżej
  Aby otrzymać pomoc na temat korzystania z listy dyskusyjnej, wyślij list o tytule "archive help" lub "archive dir" (bez cudzysłowów) na powyższy adres
- W archiwum listy dyskusyjnej o maskowaniu IP znajdziesz wszystkie listy dotychczas wysłane na tę listę.
- To mini HOWTO o maskowaniu IP jest dla jąder 2.x (jeśli używasz 1.3.x lub 2.x)
- Zajrzyj do tego mini HOWTO jeśli masz starsze jądro.
- W FAQ na temat maskowania IP znajdziesz ogólne informacje
- Na stronie X/OS Ipfwadm zmajdziesz źródła, binaria, dokumentację i inne informacje na temat pakietu `ipfwadm`.
- Na stronie aplikacji, które są kompatybilne z maskowaniem IP (stworzonej przez Lee Nevo) znajdziesz sztuczki i kruczki na temat przystosowywania aplikacji do działania z maskowaniem IP.
- Jeśli jesteś początkującym i konfigurujesz sieć, to Network Adminitration Guide z LDP jest dla ciebie konieczną lekturą.
- W NET-3-HOWTO (dostępne w j. polskim) także znajdziesz dużo pożytecznych informacji na temat sieci i Linuxa.
- W ISP-Hookup-HOWTO i PPP-HOWTO (oba w j. polskim) znajdziesz informacje jak połączyć się ze swoim prowajderem.
- Ethernet HOWTO jest dobrym źródłem informacji o instalacji sieci lokalnej opartej na Ethernecie.
- Możesz także zajrzeć do Firewall HOWTO (w j. polskim)
- Kernel-HOWTO poprowadzi cię przez proces kompilacji jądra.
- Inne HOWTO.
- Wysłanie listów na grupy dyskusyjne USENET np. pl.comp.os.linux.
  [Od tłumacza: Uwaga: wkrótce pojawi się grupa pl.comp.os.linux.sieci; jeśli taka już jest, to proszę tam kierować pytania o maskowaniu IP.]

## 5.2 Podziękowania.

- Gabrielowi Beitlerowi, gbeitler@aciscorp.com
  za rozdział 3.3.8 (konfiguracja Novela)
- Edowi Doolittle'owi, dolittle@math.toronto.edu
  za sugestję odnośnie opcji `-V` w poleceniu `ipfwadm` dla zwiększenia bezpieczeństwa
- Matthew Driverowi, mdriver@cfmeu.asn.au
  za obszerną pomoc w pracach przy tym HOWTO i dostarczenie rozdziału 3.3.1 (konfiguracja Windows 95)
- Kenowi Evesowi, ken@eves.com
  za FAQ, które dotarcza nieocenionych informacji dla tego HOWTO
- Edowi Lottowi, edlott@neosoft.com
  za długą listę sprawdzonych systemów i oprogramowania
- Nigelowi Metheringhamowi, Nigel.Metheringham@theplanet.net
  za dostarczenie swojej wersji HOWTO na temat filtrowania pakietów IP i maskowania pakietów IP, które czynią to HOWTO lepszym i bardziej technicznym dokumentem;
  rozdziały 4.1, 4.2 i inne
- Keith Owens, kaos@ocs.com.au
  za dostarczenie wspaniałego podręcznika na temat ipfwadm w rozdziale 4.2
  za poprawki do opcji `ipfwadm -deny`, które nie pozwalają na powstanie dziury w bezpieczeństwie, i wyjaśnienie statusu `pinga` przez maskowanie IP
- Robowi Pelkey, rpelkey@abacus.bates.edu
  za dostarczenie rozdziału 3.3.6 i 3.3.7 (konfiguracja MacTCP i Open Transport)
- Harish Pillay, h.pillay@ieee.org
  za dostarczenie rozdziału 4.5 (dzwonienie na żadanie przy pomocy diald)
- Markowi Purcellowi, purcell@rmcs.cranfield.ac.uk
  za dostarczenie rozdziału 4.6 (IPautofw)
- Ueli Rutishauser, rutish@ibm.net
  za dostarczenie rozdziału 3.3.9 (konfiguracja OS/2 Warp)
- Johnowi B. (Brent) Williamsowi, forerunner@mercury.net
  za dostarczenie rozdziału 3.3.7 (konfiguracja Open Transport)
- Enrique Pessoa Xaveir, enrique@labma.ufrj.br
  za sugestję konfiguracji startu przez bootp
- programistom zajmującym się maskowaniem IP za tę wspaniałą własność

  > - Delian Delchev, delian@wfpa.acad.bg
  > - Nigel Metheringham, Nigel.Metheringham@theplanet.net
  > - Keith Owens, kaos@ocs.com.au
  > - Jeanette Pauline Middelink, middelin@polyware.iaf.nl
  > - David A. Ranch, trinity@value.net
  > - Miquel van Smoorenburg, miquels@q.cistron.nl
  > - Jos Vos, jos@xos.nl
  > - I wielu innym, o których mogłem tutaj zapomnieć (daj znać)

- wszystkim użytkownikom przysyłającym komentarze i sugestie na listę dyskusyjną. Szczególnie, tym którzy zgłaszali błędy w dokumentacji i obsługiwanych i nieobsługiwanych klientów.
- Przepraszam, że nie dołączyłem informacji, które podesłał mi jakiś użytkownik. Otrzymuję wiele sugestii i pomysłów, ale po prostu nie mam wystarczająco dużo czasu, aby je zweryfikować, albo po prostu tracę je. Robię co tylko mogę, aby dołączyć wszystkie przysyłane mi informacje. Dziękuję za wysiłek i mam nadzieję, że zrozumiesz moją sytuację.

## 5.3 Odwołania.

- FAQ na temat maskowania IP autorstwa Kena Evesa
- Lista dyskusyjna o maskowaniu IP zrobiona przez Indyramp Consulting
- Strona o ipfwadm autorstwa X/OS
- Różne dokumenty HOWTO związane z siecią