środa, 3 kwietnia 2013

Prosty router z serwerem DHCP w oparciu o system Debian

Rozważamy następujący scenariusz. Posiadamy łącze internetowe (połączenie ze światem), które chcemy udostępnić kilku komputerom w sieci lokalnej. Aby to zrobić nie musimy kupować routera. Wystarczy switch lub hub i pecet z dwoma kartami sieciowymi. Komputer ten posłuży jako brama internetowa dla pozostałych. Oprócz systemu operacyjnego zainstalujemy na nim usługę DHCP, aby komputery w sieci automatycznie uzyskiwały adresacje IP.
Opisaną powyżej sytuację można przedstawić na schemacie:
Poprzez "eth0" została oznaczona karta sieciowa, która jest podłączona do Internetu. "eth1" oznacza interfejs sieciowy, będący bramą dla komputerów z sieci lokalnej. Są to oznaczenia używane w systemie Linux.

Do huba/switcha można oczywiście podpiąć inne urządzenia sieciowe, np. drukarkę lub access point do połączeń bezprzewodowych.

Tworząc tutorial posłużyłem się informacjami zawartymi na stronach:
http://imranasghar.blogspot.com/2009/09/how-to-make-ubuntudebian-as-router.html
http://www.youtube.com/watch?v=qM_jK330Wfo
http://dug.net.pl/tekst/31/udostepnienie_polaczenia_internetowego_%28masq%29/
http://serverfault.com/questions/322847/how-can-i-share-my-internet-connection-to-my-lan-with-debian
http://www.ubucentrum.net/2009/03/udostepnianie-poaczenia-internetowego-w.html
http://askubuntu.com/questions/112885/dhcp-server-not-routing-to-connect-to-internet-for-clients

1. Instalacja systemu operacyjnego

Pierwszym krokiem do uruchomienia routera z serwerem DHCP na Debianie jest instalacja systemu operacyjnego. Jej opis można znaleźć w poście do tyczącym kontrolera domeny AD czyli --> tutaj. Jedyna różnica w instalacji będzie taka, że system zapyta nas na początku o nazwę interfejsu, do którego podłączony jest Internet:


Trzeba wybrać "eth0", a jeśli pojawi się problem braku łączności z serwerem lustrzanym, należy zamienić kable sieciowe w kartach.

Gdy system jest zainstalowany, logujemy się na konto użytkownika root. Na początku warto zainstalować pakiet Midnight Commander. Dzięki niemu uzyskamy wygodny menedżer plików i edytor tekstowy. Pakiet instalujemy poleceniem:

# apt-get install mc

2. Konfiguracja kart sieciowych.

Wywołujemy polecenie:

# mcedit /etc/network/interfaces

i edytujemy plik wg. poniższego wzoru:

 

Internet do serwera jest dostarczany z innej sieci a adresacja IP jest przydzielana automatycznie. Dlatego interfejs eth0 jest oznaczony parametrem "dhcp". Druga karta sieciowa będzie pracować w podsieci, którą tworzymy. Dla tego interfejsu wpisujemy tylko adres IP i maskę. Pozostałe elementy (adres podsieci, broadcast i gateway) wpiszemy w ustawieniach serwera DHCP.

Plik zapisujemy wciskając klawisz F2 i wychodzimy z edytora klawiszem F10. Aby zmiany odniosły skutek musimy zrestartować interfejsy sieciowe. Wykonujemy kolejno dwa polecenia:

# service networking stop
# service networking start

3. Instalacja serwera DHCP

Używamy komendy:

# apt-get install dhcp3-server

Instalowane narzędzie jest bardzo rozbudowane. Może być przydatne, gdy nasza sieć się rozrośnie. Na razie będziemy korzystać z jego podstawowych funkcji. Po instalacji serwer DHCP wymaga konfiguracji. Otwieramy plik:

# mcedit /etc/dhcp/dhcpd.conf

I uzupełniamy wg. wzoru:


Linijka option domain-name nie jest wymagana. Ale przydaje się jeśli mamy zainstalowaną domenę (np. usługi katalogowe AD i kontroler Samba4). Ważna jest linijka option domain-name-servers. Należy w niej wpisać adresy serwerów DNS dostawcy Internetu lub adres serwera DNS sieci lokalnej - w linijce tej powinny znaleźć się adresy z pliu /etc/resolv.conf. default-lease-time i max-lease-time określają czas, na który adres IP jest przydzielany komputerowi w sieci. Opcje subnet i netmask to adres podsieci oraz maska. range dynamic-bootp określa zakres adresów IP przydzielanych automatycznie - należy wpisać dwa adresy oddzielone spacją. option broadcast-address to adres rozgłoszeniowy sieci, którą tworzymy a w option routers wpisujemy adres bramy dla komputerów w sieci lokalnej, czyli adres IP serwera. Wszystkie opcje powinny już być w pliku konfiguracyjnym. Trzeba je tylko uaktywnić usuwając znaczki # z początku linijek oraz wpisać wartości odpowiednie dla naszej podsieci.

Po zapisaniu pliku i wyjściu z edytora, uruchamiamy konfigurację poleceniem:

# service isc-dhcp-server start

4.  Współdzielenie Internetu (forward)

Ostatnim etapem konfiguracji routera jest udostępnienie Internetu dla nowej podsieci. Najpierw musimy zmienić zawartość pliku /proc/sys/net/ipv4/ip_forward z 0 na 1. Najłatwiej wykonać to poleceniem:

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

Aby wartość ta nie zmieniała się po restarcie sytemu, trzeba otworzyć plik /etc/sysctl.conf, znaleźć linijkę

#net.ipv4.ip_froward =

usunąć znaczek # a po znaku = wpisać 1.

Pozostaje jeszcze zmiana odpowiedniej opcji w firewallu. Należy wykonać polecenie:

#  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Aby wprowadzona zmiana pozostawała po restarcie systemu, powyższą linijkę trzeba dodać do pliku /etc/rc.local:


Router został pomyślnie skonfigurowany :)

Aby sprawdzić czy router z serwerem DHCP działa poprawnie, trzeba podpiąć komputer do switcha/huba i stwierdzić czy ma on dostęp do Internetu. Jeśli tak to znaczy, że serwer działa.