Właściwie to od tego tekstu z 2001 roku się zaczęło. Uruchomienie SDI i nata na linuksie - czyli coś co każdy wtedy potrzebował. Jak grzyby po deszczu wyrastały dookoła sieci osiedlowe na zawrotnej prędkości modemach SDI (115kbps). Łezka się w oku kręci, dlatego ten tekst jest tu ze względów sentymentalnych na pewno.
Co to jest maskarada? Maskowanie adresów IP polega na ukryciu (zamaskowaniu) adresów IP komputerów w sieci przez router podłączony do internetu. Pozwala to na dostęp do internetu komputerom nie posiadającym publicznego adresu IP (192.168.*.* czy też 10.*.*.*), lub też na ochronę tychże komputerów nawet jeżeli mają publiczne adresy IP – maskarada jest jedną z odmian firewalla.
Tekst ten napisałem pod kątem głównie sieci amatroskich które posiadają łącze do internetu z jednym adresem IP, a wbrew pozorom udostępnienie takiego internetu nie jest wcale trudne. Zakładam także że masz już skonfigurowane połączenie z internetem (o SDI pisałem wyżej) i główny nacisk położę na tym jak zbudować maskaradę z komputerami z windows.
Zakładam że już udało Ci się postawić linuksa. Przede wszystkim musisz wiedzieć którą wersję kernela posiadasz – od tego jest uzależnione czy maskaradę należy wykonać przy użyciu komendy ipchains czy iptables. Wersję kernela możesz sprawdzić poprzez komendę ‘uname -a’. Przydała by się skonfigurowana także sieć lokalna (komputery mam nadzieje połączone są już w sieć) – jeżeli tego jeszcze nie zrobiłeś – niestety ja Ci tutaj nie pomogę. Poszukaj dokumentacji do swojej dystrybucji.
Teraz trzeba napisać skrypt który będzie włączał tą maskaradę:
cd /etc/rc.d && touch rc.masq && chmod +x rc.masq
Wyedytuj ten plik (możesz do tego użyć ulubionego edytora tekstowego, jeżeli nie masz takowego, użyj programu mc który wygląda i działa podobnie do Midnight Commandera), wpisz do niego odpowiednią treść zależnie od wersji kernela:
dla kerneli w wersjach 2.2.x:
#!/bin/sh # włączenie forwardowania pakietów: echo 1 > /proc/sys/net/ipv4/ip_forward # parametry -F -X wyczyszczą aktualne reguły maskarady ipchains -F ipchains -X # domyślne DENY przy próbie forwardowania pakietów ipchains -P forward DENY # uruchamiamy maskaradę ipchains -A forward -s 192.168.0.0/255.255.0.0 -d 0/0 -j MASQ # moduły wspomagające do maskarady /sbin/modprobe ip_masq_irc /sbin/modprobe ip_masq_ftp
Co to wszystko oznacza? Każdy pakiet pochodzący z komputera o adresie rozpoczynającym się od 192.168. (-s 192.168.0.0/255.255.0.0 – czyli 192.168.0.0 – 192.168.255.255) zadresowany gdziekolwiek (-d 0/0) ma zostać zmaskowany (-j MASQ). Jeżeli nadal tego nie rozumiesz – poczekaj parę minut i spróbuj jeszcze raz.
dla kerneli w wersjach 2.4.x i 2.6.x:
#!/bin/sh # włączenie forwardowania pakietów: echo 1 > /proc/sys/net/ipv4/ip_forward # wyczyśćmy tablice iptables odpowiedzialne za nat i za filtrowanie pakietów: iptables -F -t nat iptables -X -t nat iptables -F -t filter iptables -X -t filter # Domyślnie odrzucamy i nie zezwalany na forwardowanie pakietów iptables -t filter -P FORWARD DROP # Zezwalamy na by serwer przepuszczał pakiety które pochodzą z naszej sieci # lokalnej lub są dla niej przeznaczone. iptables -t filter -A FORWARD -s 192.168.0.0/255.255.0.0 -d 0/0 -j ACCEPT iptables -t filter -A FORWARD -s 0/0 -d 192.168.0.0/255.255.0.0 -j ACCEPT # Teraz nakazujemy by wszystkie pakiety pochodzące z lanu były maskowane iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -d 0/0 -j MASQUERADE # I doładujmy moduł do obsługi ftp i irc (moduł do irca zauważyłem dopiero # w kernelu 2.4.14 dlatego się w końcu za niego wziąłem /sbin/modprobe ip_nat_ftp /sbin/modprobe ip_nat_irc
Jak widać iptables w Linuxie 2.4.* są o wiele bardziej zaawansowane niż ipchains w 2.2.*. Wiem także iż można zrobić maskaradę prościej/lepiej. Ale powyższy przykład działa i jest w miarę podobny do ipchains. Teraz, aby przy każdym uruchomieniu serwera był wykonywany ten skrypt, dopisujemy w pliku /etc/rc.local na końcu:
/etc/rc.d/rc.masq