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.