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.
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:
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.
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:
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:
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).
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.
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.
** Najnowsze informacje znajdziesz na stronie zasobów dla maskowania. Trudno jest często uaktualniać HOWTO.**
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.
** Najnowsze informacje znajdziesz na stronie zasobów dla maskowanieu. Trudno jest często uaktualniać HOWTO.**
/usr/src/
poleceniem
tar xvzf linux-2.0.x.tar.gz -C /usr/src
, gdzie x jest numerem
łaty (od 0 do najnowszej wersji).linux
).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.
make modules; make modules_install
/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ć!
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.
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.
/etc/resolv.conf
). Opcjonalnie
możesz dodać jakąś domenę do przeszukiwania.ping
-nij Linux-a, aby sprawdzić połączenie sieciowe:
Start/Uruchom, wpisz ping 192.168.1.1
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
.
ping 192.168.1.1
[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.ping 192.168.1.1
/etc/sysconfig/network-scripts/ifcfg-eth0
w dystrybucji
Red Hat, albo po prostu zrób to w Control Panel-u./etc/resolv.conf
./etc/networks
.ping
: ping 192.168.1.1
, aby
sprawdzić połączenie do gateway-a.
nwpd 0x60 10 0x300
, jeśli karta jest ustawiona na IRQ=10 i
adres I/O=0x300.pkunzip
tel2308b.zip
.config.tel
.myip=192.168.1.x
(1 < x < 255) i
netmask=255.255.255.0.hardware=packet,
interrupt=10, ioaddr=60
name=default
host=twój.linux
hostip=192.168.1.1
gateway=1
name=dns.domena.pl ; hostip=123.123.123.123; nameserver=1
Uwaga: zamień powyższe informacje na poprawne dla ciebie.config.tel
telnet 192.168.1.1
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.)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.
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.)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
.
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:
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
c:\bin\resolv.cfg
.
SEARCH DNS HOSTS SEQUENTIAL NAMESERVER 207.103.0.2 NAMESERVER 207.103.11.9
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.
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.
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.
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.
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.
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.
** 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.
Ogólne:
wszystkie obsługiwane platformy, surfowanie po sieci
wszystkie obsługiwane platformy, klienci e-mail
wszystkie obsługiwane platformy, zdalne logowanie
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)
wszystkie obsługiwane platformy, szukanie plików (nie wszytkie wersje oprogramowania są obsługiwane)
wszystkie obsługiwane platformy, klient USENET NEWS
Windows (przypuszczalnie wszystkie obsługiwane platformy), surfowanie po wirtualnej rzeczywistości.
głównie platformy na UNIX-ie, niektóre wersje mogą nie działać
wszystkie platformy, z łatą ICMP
wszystkie obsługiwane platformy, z modułami ip_masq_irc.o
wszystkie obsługiwane platformy
wszystkie obsługiwane platformy
Klienci Multimedialni:
Windows, network streaming audio z załadowanym modułem ip_masq_raudio
Windows, network streaming audio
Windows, network streaming audio
Windows, program Client-Server 3D do pogawędek
Windows, program Client-Server 3D do pogawędek
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
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ć
, wszystkie obsługiwane platformy, z załadowanymi modułami cuseeme; szczegóły znajdziesz na stronie z zasobami dla maskowania IP.
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:
DOS, pakiet zawierający telnet, ftp, ping, itp.
MS-Windows, zdalna kontrola PC poprzez TCP/IP, działa tylko jeśli jest klientem a nie hostem.
używa ntp - protokół czasu w sieci
Linux, pakiet do zarządzania i monitorowania sieci.
Łączy się, ale głos wędruje tylko w jedną stronę (na zewnątrz)
Nie może połączyć się z serwerem
Nie może połączyć się z drugą stroną
nie będą działać - wymagają napisania proxy dla jądra
W tej chwili nie może działać (robi złe założenia na temat adresów)
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.
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.
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.
** 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ź.
ipfwadm
.
-V
w poleceniu ipfwadm
dla
zwiększenia bezpieczeństwaipfwadm -deny
, które nie pozwalają na
powstanie dziury w bezpieczeństwie, i wyjaśnienie statusu pinga
przez maskowanie IP
- 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ć)