Linux (Debian) jako router
W poniższym artykule przedstawie jak stworzyć swój router na czystym systemie operacyjnym z rodziny Debian. Do tego ćwiczenia będzie potrzebna nam maszyna wirtualna/fizyczna z zainstalowanym najnowszym systemem Debian oraz minimum dwoma interfejsami sieciowymi, która będzie służyła nam za router oraz dowolna maszyna wirtualna/fizyczna z jednym interfejsem sieciowym, ktorą będzie naszym “klientem”. A więc zaczynajmy!
Prosty schemat, który będziemy chcieli osiągnąć:

Na “routerze” interfejs enp0s3 w naszym wypadku będzie postrzegany jako WAN, konfguracja tego interfejsu będzie w dużym stopniu zależna od naszego ISP/innego routera – stąd też nie zmieniamy jej ustawień. Interfejs enp0s8 posłuży nam jako UPLINK dla pozostałych klientów.
Na początku zainstalujmy pakiet(dnsmasq – prosty serwer DHCP oraz DNS), który będzie nam potrzebny do zrealizowania naszego ćwiczenia.
$sudo apt update$sudo apt install dnsmasq -y
Następnie sprawdźmy jakie mamy dostępne interfejsy sieciowe, aby poprawnie wyedytować plik konfiguracyjny ustawień sieciowych systemu Debian
$ ip a
przykład:
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:00:de:ad:be:ef brd ff:ff:ff:ff:ff:ff
inet 10.100.100.100/24 brd 10.100.100.255 scope global enp3s0
valid_lft forever preferred_lft forever
3: enp3s8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:01:de:ad:be:af brd ff:ff:ff:ff:ff:ff
Karta sieciowa, która nie posiada przypisanego interfejsu będzie tą na której będziemy wprowadzali zmiany.
Edytujemy plik “/etc/network/interfaces” w którym zmieniamy sekcje dla interfejsu enp3s8, aby wyglądała w następujący sposób:
auto enp3s8
iface enp3s8 inet static
address 192.168.7.1
netmask 255.255.255.0
network 192.168.7.0
Wychodzimy zapisując konfigurację I restartujemy daemona odpowiedzialnego za sieć:
# systemctl restart networking
Kolejnym krokiem do sukcesu będzie konfiguracja dnsmasq, a dokładnie jego pliku konfiguracyjnego “/etc/dnsmasq.conf” i edycja następujących linii:
interface=enp3s8# tutaj wprowadzamy interfejs, na którym ma nasłuchiwać DHCPdhcp-range=192.168.7.50, 192.168.7.150,12h# start puli DHCP, koniec puli DHCP, “lease time”
Zapisujemy konfigurację oraz zamykamy edytor po czym restartujemy serwis “dnsmasq”
# systemctl restart dnsmasq.service
Ostatnim krokiem do sukcesu jest włączenie przekazywania pakietów IPv4 oraz wprowadzenie na dobrą sprawę dwóch reguł do iptables, aby przetłumaczyć adres z którego przychodzi żadanie z sieci lokalnej na adres routera po skierowaniu do interfejsu “enp3s0” oraz akceptacja wszystkich pakietów z interfejsu “enp3s8”
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
iptables -A FORWARD -i enp3s8 -j ACCEPT
Po wprowadzonych powyżej krokach możemy się udać do maszyny klienckiej, na której przetestujemy w bardzo prosty dostęp do Internetu:
ping 192.168.7.1
ping 1.1.1.1
ping wp.pl
Gratuluję skonfigurowania swojego routera na systemie Linux!

