Configurare minimala pentru NAT Linux
Se da un sistem pe care ruleaza Linux ( in acest caz particular am folosit FC5 ). Dorim sa folosim acest ip pentru a asigura accesul la internet a mai multor calculatoare, avand de la provider (ISP) un singur ip public.
Consideram placa de retea eth0 conectata in reteaua ISP-ului si placa de retea eth1 conectata in reteaua noastra locala.
In primul rand editam fisierul /etc/sysconfig/network-scripts/ifcfg-eth0 in care punem setarile primite de la provider:
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:11:2F:24:86:6D
ONBOOT=yes
NETMASK=255.255.255.128
IPADDR=89.36.69.69
USERCTL=no
IPV6INIT=no
PEERDNS=yes
GATEWAY=89.36.69.65
TYPE=Ethernet
In exemplul de mai sus se inlocuiesc valorile cu cele pe care le aveti voi.
In fisierul /etc/resolv.conf se introduce adresa serverului DNS al ISP-ului vostru:
nameserver 86.105.128.90
Trebuie sa repornim serviciul network pentru a activa noile setari:
/sbin/service network restart
In acest moment, daca totul este corect, ar trebui sa avem ping spre orice locatie din afara retelei providerului (de ex www.google.ro )
Urmeaza configurarea placii de retea eth0 conectat in reteaua interna, care trebuie sa aiba o clasa de ip-uri privata, presupunand in acest sens clasa 192.168.0.0/24. In acest sens editam fisierul /etc/sysconfig/network-scripts/ifcfg-eth1 in care scriem:
DEVICE=eth1
BOOTPROTO=none
HWADDR=00:11:2F:23:32:95
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.0.1
USERCTL=no
IPV6INIT=no
PEERDNS=yes
TYPE=Ethernet
Din nou trebuie restartat serviciul network.
Pe calculatoarele din reteaua interna trebuie setate ip-uri din aceasta clasa ( 192.168.0.0/24 ), primul ip putand fi 192.168.0.2, netmask 255.255.255.0 , gateway 192.168.0.1 si la DNS putem trece DNS-ul providerului daca pe sistemul care se ocupa de NAT nu ruleaza un server DNS.
Urmatorul pas este activarea functiei de forward a pachetelor de pe o interfata pe cealalta. Acest lucru se poate face folosind comanda:
echo „1” > /proc/sys/net/ipv4/ip_forward
sau editand fisierul /etc/sysctl.conf in care vom modifica:
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
In situatia actuala pachete de pe interfata eth1, care pleaca cu ip sursa din clasa 192.168.0.0/24 vor ajunge pe interfata eth0 si de acolo in reteaua providerului unde provider vor fi filtrate, fiind dintr-o clasa privata care nu este rutabila in internet. Trebuie sa facem in asa fel incat pachetele sa plece pe interfata eth0 cu ip-ul sursa dat de provider si raspunsul primit din internet sa ajunga la statia care a initiat comunicatia. Pentru acest lucru ne vom folosi de iptables:
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to-source 89.36.69.69
In acest moment ar trebuie sa putem accesa orice locatie din internet de pe orice statie din reteaua noastra.
Tot folosind iptables putem sa face port forwarding spre oricare dintre statiile din retea. Spre exemplificare sa consideram ca pe statia care are ip-ul 192,168.0.20 ruleaza sistemul de operare Windows si folosim un client de file sharing ( DC++ ) pe care dorim sa il configuram in modul activ. Alegem portul 6969 pentru a-l forwarda spre acest ip privat:
/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 -d 89.36.69.69 –dport 6969 -j DNAT –to 192.168.0.20:6969
/sbin/iptables -t nat -A PREROUTING -p udp -i eth0 -d 89.36.69.69 –dport 6969 -j DNAT –to 192.168.0.20:6969
Pe statia respectiva vom configura clientul sa foloseasca modul „Firewall with manual port forwarding”, la external ip vom trece 89.36.69.69, iar la port 6969.
Pentru ca aceste reguli sa se pastreze si dupa repornirea sistemului trebuie sa le salvam:
/sbin/iptables-save > /etc/sysconfig/iptables
Trebuie sa mai verificam apoi ca serviciul iptables sa porneasca automat la bootarea sistemului.