Udostępnianie połączenia internetowego w systemie Linux
W celu udostępnienia połączenia internetowego na komputerze z systemem operacyjnym Debian konieczne jest posiadanie dwóch interfejsów sieciowych (kablowych lub radiowych, albo jednego i drugiego). Jeden interfejs będzie służył do połączenia z internetem a drugi do udostępniania internetu na drugi komputer (lub inne urządzenie). Udostępnienie internetu może odbywać się na kilka sposób, ja opiszę według mnie najprostszy z nich, a mianowicie stworzenie domowej sieci komputerowej składającej się z komputera z Debianem (podłączonego bezpośrednio do internetu), który będzie pełnił rolę routera (nazwijmy go R1), oraz drugiego komputera podłączonego do niego przez inny jego interfejs sieciowy (nazwijmy go PC1). Schemat połączeń wygląda następująco:
R1, czyli komputer z debianem posiada dwa interfejsy sieciowe wlan0 i eth0. Interfejs wlan0 jest podłączony do internetu, natomiast intefejs eth0 podłączony jest do hosta PC1.
Adresacja IP routera R1:
eth0 - 192.168.5.1 255.255.255.0 wlan0 - 192.168.1.1 255.255.255.0
Do skonfigurowania interfejsu eth0 należy wyedytować plik: /etc/network/interfaces i dopisać poniższą konfigurację dla interfejsu eth0:
auto eth0 iface eth0 inet static address 192.168.5.1 netmask 255.255.255.0
Nie będę opisywał konfiguracji intefejsu wlan0, bo dla każdego połączenia internetowego będzie ono inne. Do udostępnienia internetu do interfejsu eth0 musi być skonfigurowany poprawnie dodatkowy interfejs z dostępem do internetu, nie koniecznie musi być to interfejs bezprzewodowy.
R1 będzie miał za zadanie NAT-ować połączenie, czyli udostępniać internet do PC1. Aby to osiągnąć konieczne jest uruchomienie na R1 routingu, czyli włączenie przekazywania pakietów IP między interfejsami sieciowymi. Służy do tego następujące polecenie:
root@debian-lab:~# echo "1" > /proc/sys/net/ipv4/ip_forward
Kolejnym krokiem jest konfiguracja iptables. Najprościej będzie skonfigurować tzw. Maskaradę IP. Działa to w ten sposób, że R1, który służy jako brama sieciowa zbiera żądania od komputerów z sieci lokalnej (w moim przypadku PC1) i wysyła w świat ze swoim adresem IP. Konfigurujemy to w następujący sposób:
root@debian-lab:~# iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -j MASQUERADE
Teraz zostaje tylko uruchomienie serwera DHCP, żeby PC1 otrzymał automatycznie adres IP od R1. Zainstalować serwer DHCP na debianie można wydając polecenie:
root@debian-lab:~# apt-get install isc-dhcp-server
Po instalacji musimy określić na jakim interfejsie ma działać serwer DHCP, w moim przypadku będzie to eth0. W tym celu należy wyedytować plik: /etc/default/isc-dhcp-server w następujący sposób:
Następnie konieczna jest edycja pliku konfiguracyjnego serwera dhcp: /etc/dhcp/dhcpd.conf. Najlepiej jest usunąć całą zawartość pliku dhcpd.conf i uzupełnienić go następującą zawartością:
subnet 192.168.5.0 netmask 255.255.255.0 { range 192.168.5.100 192.168.5.200; option domain-name-servers 8.8.8.8; option routers 192.168.5.1; option broadcast-address 192.168.5.255; default-lease-time 86400; max-lease-time 86400; }
Po zapisaniu pliku konieczny jest restart serwera dhcp:
root@debian-lab:~# /etc/init.d/isc-dhcp-server restart
Teraz komputer PC1 otrzyma adres IP od serwera DHCP. Dzięki skonfigurowaniu puli adresów (192.168.5.100 – 192.168.5.200) możliwe jest udostępnienie wielu komputerom internetu, wystarczy w miejsce komputera PC1 umieścić switch, a następnie do niego podpiąć dowolną ilość komputerów. Każdy z nich otrzyma adres IP i każdy będzie mógł korzystać z internetu za pośrednictwem R1.
Pora przetestować czy wszytko działa. Najpierw sprawdźmy, czy host PC1 dostał adres IP. W moim przypadku hostem PC1 jest router TPLink z oprogramowaniem Gargoyle.
Jak widać na powyższym screenie PC1 dostał z DHCP adres 192.168.5.100, teraz pora przetestować łączność z internetem, np. pingując jakąś stronę. Przydatnym narzędziem do analizy ruchu przechodzącego przez R1 jest aplikacja iftop. Iftop może być przydatne w przypadku, gdy chcemy udostępnić łącze internetowe wielu urządzeniom i chcemy w czasie rzeczywistym widzieć z jakimi adresami łączą się hosty, oraz jakie pasmo zużywają.
Instalacja iftop odbywa się nastepująco:
root@debian-lab:~# apt-get install iftop
Odpalić ją można wpisując:
root@debian-lab:~# iftop -i eth0
Po uruchomieniu naszym oczom powinno się ukazać coś podobnego:
Powyższy wynik działania polecenia Iftop oznacza, że nasz router przepuszcza ruch z hosta PC1 o adresie (192.168.5.100), co oznacza żę PC1 ma łączność z internetem. Przedstawione przeze mnie udostępnianie internetu może się przydać w sytuacji, w której internet mamy podpięty bezpośrednio do komputera i chcemy go udostępnić innym urządzeniom w domu nie posiadając routera.