Menu

Linux NAT Router

Linux NAT Router - smerovanie

Konfigurovať NAT server budeme na Ubuntu 16 LTS nainštalovanom vo Virtualboxe. Nainštalujeme si 2 virtuálne stroje, kde jeden bude slúžiť ako brána/NAT server a druhý ako klient na, ktorom budeme testovať, či nastavená konfigurácia na NAT serveri funguje.

Na NAT serveri nastavíme v nastaveniach virtuálky 2 sieťové adaptéry (jeden potrebujeme na dotiahnutie internetu zvonku - WAN a jeden pre lokálnu sieť LAN). Jeden bude nastavený na NAT aby sme dostali IP adresu z vonku z DHCP. Druhý bude nastavený na Internal Network teda pre nás LAN. Na druhom klientskom stroji nastavíme jednu sieťovku na Internal Network.

Po zapnutí oboch strojov si môžeme príkazom ip a pozrieť dostupné sieťové adaptéry. Na serveri uvidíme 3 adaptéry, v mojom prípade: lo - loopback, enp0s3, ktorý má pridelenú adresu od DHCP, teda je to WAN a enp0s8, ktorý má status DOWN, ktorý bude náš adaptér do lokálnej siete. Na klientovi uvidíme 2 adaptéry, v mojom prípade: lo - loopback a enp0s3, ktorý je tiež DOWN.

Jednotlivé sieťové rozhrania vieme zapínať/vypínať príkazom ip link set dev enp0sX up/down, kde enp0sX je sieťové rozhranie, napríklad eth0s8.

Teraz potrebujeme nastaviť sieťové rozhrania na serveri. Konfiguračný súbor je /etc/network/interfaces. Upravíme konfigurák tak, aby vyzeral nasledovne (v komentároch vysvetlenia):

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
auto enp0s3  # pridáme, aby sa interface zaplo po reštartovaní sieťových rozhraní
iface enp0s3 inet dhcp

# LAN interface
auto enp0s8 # pridáme, aby sa interface zaplo po reštartovaní sieťových rozhraní
iface enp0s8 inet static # nastavíme, aby bola statická ip a v ďalších riadkoch nastavíme parametre
    address 192.168.1.1
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255

Teraz potrebujeme reštartovať sieťové rozhrania príkazom:

systemctl restart networking

Týmto máme nastavené rozhranie pre LAN na bráne.

Ak chceme na klientskom počítači komunikovať s bránou, potrebujeme tiež upraviť konfiguračný súbor /etc/network/interfaces, aby vyzeral nasledovne:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
auto enp0s3  # pridáme, aby sa interface zapol po reštartovaní sieťových rozhraní
iface enp0s3 inet static # nastavíme, aby bola staticka ip a v ďalších riadkoch nastavíme parametre
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
broadcast 192.168.1.255

Teraz už vieme komunikovať medzi týmito dvoma strojmi, čo vieme skontrolovať napríklad pingnutím. Problém ale nastane, ak chceme pristupovať na internet. Preto potrebujeme nastaviť na bráne smerovanie. To vieme dočasne (do najbližšieho reštartu) urobiť príkazom sysctl -w net.ipv4.ip_forward=1. Pre trvalé zapnutie smerovania je potrebné upraviť (odkomentovať) v konfiguráku /etc/systcl.conf riadok net.ipv4.ip_forward=1. Následne aplikujeme nastavenie príkazom sysctl -p /etc/sysctl.conf.

(Tu by sme už mali vediet pingovat adresu sieťovky enp0s3 na serveri z klienta.)

Smerovaciu tabuľku si pre kontrolu vieme zobraziť príkazom ip route show.

Síce už máme nastavené smerovanie, na klientovi stále nemáme prístup na internet. Potrebujeme ešte povoliť NATovanie. Urobíme to nastavením iptables a to príkazmi:

iptables --table nat --append POSTROUTING --out-interface enp0s3 -j MASQUERADE
iptables --append FORWARD --in-interface enp0s8 -j ACCEPT

Ak sme náhodou niečo urobili zle vieme nastavenie zahodiť príkazom iptables -F

Ale toto nastavenie ostáva len do reštartovania. Automatické nastavenie po reštarte vieme nastaviť nasledovne:

iptables-save > /etc/iptables.rules
pre-up iptables-restore < /etc/iptables.rules