obrazekSieci Lokalne

Trochę teorii, nieco praktyki

Copyright © 2000, 2001 Bartosz Kiziukiewicz

W tym rozdziale

Konfiguracja SyGate’a
Uruchomienie maskarady na maszynie linuksowej

Udostępnianie połączenia internetowego w sieci lokalnej

Gdy już mamy zapewnione połączenie z Internetem na jednej maszynie, należy zastanowić się, jak udostępnić to połączenie innym komputerom. Do udostępniania połączenia internetowego w sieci lokalnej można wykorzystać komputer podpięty do sieci lokalnej z jednej strony, oraz posiadający kartę Dial-Up (czyli modem) lub drugą kartę sieciową połączoną z Internetem. Aby Internet był widziany z sieci lokalnej należy zastosować oprogramowanie wykorzystujące technologię NAT lub tzw. proxy serwer.

Komputer udostępniający połączenie może być zwykłą stacją roboczą przeznaczoną dodatkowo do tego celu. Do bardziej znanych proxy serwerów pod Windows 95/98 należą: WinGate, WinProxy, NetProxy, CProxy. Technologię NAT wykorzystuje zaś m.in. program SyGate i WinRoute (który dodatkowo wbudowane ma pewnego typu proxy i filtr pakietów).

Można również wykorzystać mechanizm dzielenia połączenia modemowego wbudowany w drugą edycję systemu MS Windows 98 (tzw. SESecond Edition).

Dużo lepszym jednak rozwiązaniem (dającym dużo większe możliwości zwłaszcza, jeśli dysponujemy stałym łączem do Internetu) jest uruchomienie osobnej maszyny zajmującej się tylko umożliwieniem dostępu do Sieci (ew. udostępniającymi również inne usługi sieciowe) pracującej pod którymś z systemów uniksowych np. pod systemem Linux. Jej uruchomienie będzie na pewno dużo trudniejsze, niż uruchomienie udostępniania połączenia pod Windows, lecz w wielu wypadkach będzie się to bardziej opłacać, gdyż będziemy mieć większą (praktycznie prawie całkowitą) kontrolę nad tym, jakiego rodzaju aplikacjom klienckim umożliwiamy dostęp do Internetu. Rozwiązanie to jest również o wiele wydajniejsze, dużo bardziej niezawodne i bezpieczniejsze z punktu widzenia bezpieczeństwa samej sieci wewnętrznej przed atakami z zewnątrz. Pamiętać jednak należy, że skonfigurowanie zapory sieciowej w sposób zapewniający maksymalne bezpieczeństwo przy równie wysokiej funkcjonalności wymaga już doświadczenia i wykracza daleko poza ramy tego opracowania.

Konfiguracja SyGate’a


Po zainstalowaniu programu SyGate w systemie Windows (jego konfiguracja jest w zasadzie prosta i ogranicza się do wyboru odpowiednich opcji podczas instalacji) na komputerze pełniącym funkcję bramy do Internetu (załóżmy, że ma on adres IP 192.168.0.1), należy ustawić adres bramy oraz adres serwera DNS na wszystkich innych komputerach, tak aby wskazywały na komputer pełniący funkcję bramy. W tym celu na wszystkich innych komputerach wybieramy właściwości TCP/IP, klikamy zakładkę „Brama”, a następnie w okienku „Nowa brama” wpisujemy adres IP bramy (w naszym przypadku 192.168.0.1) i klikamy przycisk Dodaj. Następnie klikamy na zakładkę „Konfiguracja DNS”, wybieramy „Włącz DNS”, wpisujemy jakąś nazwę (nie jest ważne jaką, ale komputer wymaga, aby coś było wpisane) w pole „Host”, wpisujemy adres bramy w pole „Kolejność przeszukiwania serwerów DNS” (w naszym przypadku 192.168.0.1), klikamy Dodaj, a następnie OK:

obrazek

obrazek

Uruchomienie maskarady na maszynie linuksowej


Rozdział ten zawiera krótki przewodnik, jak postawić szybko maskaradę w oparciu o system Linux (na przykładzie dystrybucji Debian), przygotowany przez Rafała Woźniaka

Aby postawić maszynę linuksową pełniącą rolę maskarady, należy w pierwszej kolejności zaopatrzyć się w komputer, który rolę tę będzie pełnił. Zalecane jest przynajmniej Pentium 60 z dyskiem 512 MB i 16 MB pamięci RAM. Oczywiście bardzo pomocny będzie również napęd CD-ROM przy instalacji. Później staje się zbędnym gadżetem.

Niestety, ponieważ Linux jako system operacyjny różni się w dość dużym stopniu od systemu Windows, więc aby w ogóle go uruchomić, a następnie nim administrować, należy posiąść pewną wiedzę. Najlepszym jej źródłem są, moim zdaniem, dokumenty HOW-TO oraz pozycje książkowe. Dużą pomocą będą również podane na końcu tego opracowania linki jak również lektura archiwów grup pl.comp.os.linux oraz pl.comp.os.linux.sieci.

Po pierwsze, aby działało współdzielenie łącza na maszynie linuksowej, kernel (jądro systemu) musi być skompilowany z odpowiednimi opcjami. Dla kernela 2.2.17 (opis kompilacji kernela, znajdziesz np. pod adresem http://www.linuxfan.com.pl/artykuly/kompilacja.html) wchodzimy do menu „Networking options” i zaznaczamy opcję (o ile jeszcze nie jest) „TCP/IP networking”. Wówczas pokażą nam się opcje typu „IP: [coś]”. Aby działało współdzielenie łącza musimy wybierać „IP: masquerading”. Ogólnie warto zaznaczyć większość opcji „IP: [coś]”.

Jeśli nie czujesz się na siłach, aby na początek kompilować kernel, to można zostawić domyślny kernel wgrywany przez program instalacyjny. Powinien zawierać wszystkie składniki potrzebne do współdzielenia łącza.

Zanim zaczniemy tworzyć skrypty musimy przyjąć pewne założenia oraz wyjaśnić jak zapisuje się skrótowo maskę podsieci. Załóżmy iż w swojej sieci będziesz korzystać z adresów 10.1.1.0-10.1.1.255 (tzw. pula adresów prywatnych, które w zasadzie obejmują adresy od 10.0.0.0 do 10.255.255.255, gdzie maska podsieci jest 255.0.0.0 lub skrótowo 8). Teraz zajmijmy się skrótowym zapisem maski podsieci. Otóż np. zapis 10.1.1.0/24 oznacza adresy od 10.1.1.0 do 10.1.1.255. Dla tych adresów maska jest 255.255.255.0, czyli:

24 oznacza maskę 255.255.255.0
16 oznacza maskę 255.255.0.0
8 oznacza maskę 255.0.0.0

Powróćmy do tworzenia skryptu. Nazwijmy ten skrypt maskarada.

Każdy skrypt musi zaczynać się od takiej linijki tekstu:

#!/bin/sh

Aby w ogóle działała maskarada, musimy dopisać:

echo 1 > /proc/sys/net/ipv4/ip_forward

Kolejnym krokiem jest wykasowanie wszystkich regułek:

/sbin/ipchains -F

Kolejna linijka skryptu oznacza aby nasz serwer nie używał maskarady gdy bezpośrednio odwołujemy się do adresów prywatnych, tzn. gdy ktoś z komputera z adresem prywatnym łączy się z komputerem w naszej sieci, który również ma adres prywatny.

/sbin/ipchains -A forward -j ACCEPT -s 10.0.0.0/8 -d 10.0.0.0/8

Teraz zajmiemy się uruchomieniem maskarada dla wybranego komputera. Powtarzamy to dla każdego użytkownika jeśli mamy takich, którzy płacą i nie płacą za Internet. Na przykład dla komputera z prywatnym adresem IP 10.1.1.1:

/sbin/ipchains -A forward -j MASQ -s 10.1.1.1 -d 0.0.0.0/0

Jeśli wszyscy płacą za Internet to prościej to zrobić w następujący sposób (tutaj dla klasy 256 IP od 10.1.1.0 do 10.1.1.255):

/sbin/ipchains -A forward -j MASQ -s 10.1.1.0/24 -d 0.0.0.0/0

Teraz podam parę innych przykładów, które warto zastosować.

Zacznijmy od zablokowania wysyłania poczty poprzez inne serwery niż nasz. Zapobiega to spamowaniu przez użytkownika sieci w taki sposób, aby nie został wykryty. Zasada jest prosta. Nie może wysyłać przez inny serwer poczty niż nasz. W takim razie musi korzystać z naszego, a gdy z niego skorzysta to zostanie na nim informacja kto wysyłał, skąd, kiedy, etc. Aby ta metoda była skuteczniejsza polecam zainteresowaniem się staticarp, czyli przypisaniem adresu MAC karty sieciowej do adresu IP. To znowu w celu zapobieżeniu podszywania się pod czyjeś IP (o tym jak to się robi napiszę w dalszej części). Wówczas to co w logach zostaje oznacza, ze nikt nie mógł się pod kogoś innego podszyć i wiemy, ze to z tego konkretnego komputera wysłano niechcianą pocztę, czyli spam.

/sbin/ipchains -A forward -j REJECT -s 10.0.0.0/8 -d 0.0.0.0/0 25 -p TCP

Kolejny praktyczny przykład pokazuje jak stworzyć transparent proxy, czyli przekierowanie bezpośrednie wywołanie strony www na proxy. Wówczas w przeglądarkach Internet Explorer czy Netscape Navigator nie trzeba ustawiać proxy. Aby to działało w konfiguracji kernela musi być zaznaczona opcja „IP: transparent proxy support”, a dodatkowo w konfiguracji SQUIDa (zakładam iż z takiego serwera proxy skorzystasz) w pliku /etc/squid.conf trzeba dopisać:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Zakładam, że SQUID działa na porcie 8080.

ipchains -A input -p tcp -s 10.0.0.0/8 -d 0/0 80 -j REDIRECT 8080

Powróćmy na chwilę do zapobiegania spamowaniu przez użytkowników. Otóż powinniśmy teraz przypisać adres MAC do konkretnego adresu IP. Otóż tworzymy plik /etc/ethers. Jego zawartość jest następująca:

#MAC adres
#MAC adres serwera
MAC adres użytkownika nr 1
MAC adres użytkownika nr 2
.........
MAC adres użytkownika nr 253
adres IP
10.1.1.1
10.1.1.2
10.1.1.3

10.1.1.254

Proszę zwrócić uwagę na dwie rzeczy. Pierwsza to taka, iż adres serwera (przyjęty jako 10.1.1.1) jest zahaszowany. Po prostu przy wpisywaniu tego adresu do tablicy wystąpi błąd. Nic groźnego. Druga uwaga iż trzeba dla wszystkich 254 adresów IP zrobić przypisanie (adresy 10.1.1.0 oraz 10.1.1.255 to odpowiednio adres sieci i broadcast – do tych adresów nie można przypisać MAC adresów, jak również nie można ich wykorzystać). Jeśli dany adres IP nie jest używany w sieci, to po prostu przypisujemy mu jakiś wymyślony (fikcyjny) adres MAC. Gdybyśmy tego nie zrobili to ktoś może ustawić sobie ten adres IP u siebie i wówczas nie będziemy mogli określić kto to zrobił.

Teraz mając tak przygotowany plik staticarp uruchamiamy polecenie:

arp –f

Spowoduje to już w Linuksie przypisanie adresu MAC z adresem IP.

Obydwa skrypty: maskarada oraz arp –f trzeba dopisać do skryptów startowych. W Debianie w najprostszy i najszybszy sposób to dopisać do pliku /etc/init.d/rmlogin wywołania obydwu skryptów.


Strona główna | WstępŁącze z Internetem | Źródła |

Opracowanie umieszczone w serwisie edukacyjnym I LO za zgodą autora, Bartosza Kiziukiewicza.
Konwersji na format HTML dokonał mgr Jerzy Wałaszek.