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 vedea că regula există, puteți afișa tabela NAT cu următoarea comandă:
root@host:~# iptables -t nat -nvL POSTROUTING 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
Intrați pe stația red și verificați dacă puteți da ping în 8.8.8.8:
root@host:~# go red [...] root@red:~# ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. ^C --- 8.8.8.8 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 1007ms
Observați că nu aveți conectivitate în IP-ul 8.8.8.8. Motivul este reprezentat de faptul că nu aveți activată rutarea pe stația host. Pe stația host activați rutarea:
root@host:~# sysctl -w net.ipv4.ip_forward=1 net.ipv4.ip_forward = 1
Intrați din nou pe stația red și încercați să executați comanda ping către 8.8.8.8. Observați că merge.