This is an old revision of the document!
Epuizarea adreselor IPv4 în cadrul rețelelor curente a condus la folosirea de adrese IP din clase private (de ex. 192.168.0.0/24). Pe lângă comunicația dintre stațiile unei rețele, dorim și accesul la Internet al acestora. De aceea s-a introdus conceptul de translatare de adrese (NAT: Network Address Translation) prin care mai multe stații dispun de acces la Intern folosind aceeași adresă IP rutabilă: adresa gateway-ului. Activarea translatării de adrese (NAT) pe gateway conduce la înlocuirea perechii <adresă IP sursă, port sursă> (aparținând stației) cu perechea <adresa IP gateway, port disponibil>.
Configurarea NAT pe Linux se realizează tot prin intermediul comenzii iptables, la fel ca în cazul configurării firewall-ului. Dacă pentru configurarea firewall-ului foloseam tabela filter (tabela implicită a iptables), pentru configurarea firewall-ului vom folosi tabela nat.
Astfel, pentru a activa NAT pe un server Linux executăm comanda
root@host:~# iptables -t nat -A POSTROUTING -j MASQUERADE
În comanda de mai sus:
-t specifică tabela pe care se aplică regula, în cazul nostru tabela nat.-A înseamnă adăugarea unei reguli la sfârșitul listei de reguli.POSTROUTING se referă la momentul când va fi realizat procesul de translatare de adrese: după rutare.iptables acesta se numește și de lanț (chain).INPUT, OUTPUT, FORWARD, PREROUTING.-j este acțiunea ce va fi luată, iar în acest caz este MASQUERADE (acțiune simplă de translatare de adrese).
Pentru a verifica și valida regula, afișăm intrările din lanțul POSTROUTING din tabela nat folosind comanda
root@host:~# iptables -t nat -L POSTROUTING -n -v Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- * * 0.0.0.0/0 0.0.0.0/0
Vrem să verificăm configurarea corectă a NAT. Pentru acesta vom trimite de pe stația red un pachet către 8.8.8.8. Pachetul va trece prin gateway (adică stația host) și va fi translatat. Pe stația red rulăm comanda
root@red:~# ping -c 2 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. From 192.168.1.2 icmp_seq=1 Destination Host Unreachable From 192.168.1.2 icmp_seq=2 Destination Host Unreachable --- 8.8.8.8 ping statistics --- 2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 999ms
Observăm că nu există conectivitate de la stația red către adresa IP 8.8.8.8. Motivul este reprezentat de faptul că nu avem activată rutarea pe stația host. Pentru a activa rutarea pe stația host rulăm comanda
root@host:~# sysctl -w net.ipv4.ip_forward=1 net.ipv4.ip_forward = 1
Intrăm din nou pe stația red și folosim ping pentru a testa conectivitatea la adresa IP 8.8.8.8:
TODO