Differences

This shows you the differences between two versions of the page.

Link to this comparison view

rl:labs:08:contents:01 [2013/08/24 13:35]
127.0.0.1 external edit
rl:labs:08:contents:01 [2023/11/05 12:53] (current)
vlad_iulius.nastase
Line 1: Line 1:
-==== 01. Lorem ipsum ====+==== 01. [10p] Configurare translatare de adrese (MASQUERADE) ​====
  
-...+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 Internet 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 translatării de adrese vom folosi tabela ''​nat''​.
  
 +Astfel, pentru a activa NAT pe un server Linux executăm comanda<​code bash>
 +root@host:​~#​ iptables -t nat -A POSTROUTING -j MASQUERADE
 +</​code>​
 +Î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.
 +    * În nomenclatura ''​iptables''​ acesta se numește și **lanț (chain)**.
 +    * [[https://​www.netfilter.org/​documentation/​HOWTO/​netfilter-hacking-HOWTO-3.html|Exemple de alte lanțuri: ''​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<​code bash>
 +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
 +</​code>​
 +
 +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<​code bash>
 +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
 +</​code>​
 +
 +Observăm că nu există conectivitate de la stația ''​red''​ către adresa IP ''​8.8.8.8''​. Consultăm întreaga tabelă ''​nat'':<​code bash>
 +root@host:​~#​ iptables -t nat -L -n -v
 +Chain PREROUTING (policy ACCEPT 2 packets, 168 bytes)
 + pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​        
 +
 +Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 + pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​        
 +
 +Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 + pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​        
 +
 +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 ​
 +</​code>​
 +Observăm că pachetele ajung în lanțul ''​PREROUTING''​ (înainte de rutare), dar nu ajung în lanțul ''​POSTROUTING''​ (după rutare). Ne gândim că este posibil să fie o problemă cu rutarea pe gateway. Verificăm dacă rutarea este activată:<​code bash>
 +root@host:​~#​ sysctl net.ipv4.ip_forward
 +net.ipv4.ip_forward = 0
 +</​code>​
 +
 +Într-adevăr,​ rutarea nu este activată. Pentru a activa rutarea pe stația ''​host''​ rulăm comanda<​code bash>
 +root@host:​~#​ sysctl -w net.ipv4.ip_forward=1
 +net.ipv4.ip_forward = 1
 +</​code>​
 +
 +Intrăm din nou pe stația ''​red''​ și folosim ''​ping''​ pentru a testa conectivitatea la adresa IP ''​8.8.8.8'':<​code bash>
 +root@red:~# ping -c 2 8.8.8.8
 +PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
 +64 bytes from 8.8.8.8: icmp_req=1 ttl=61 time=92.9 ms
 +64 bytes from 8.8.8.8: icmp_req=2 ttl=61 time=81.2 ms
 +
 +--- 8.8.8.8 ping statistics ---
 +2 packets transmitted,​ 2 received, 0% packet loss, time 1001ms
 +rtt min/​avg/​max/​mdev = 81.272/​87.094/​92.917/​5.829 ms
 +</​code>​
 +Acum există conectivitate,​ lucru certificat și de prezența unor pachete în lista prelucrată pe lanțul ''​POSTROUTING'':<​code bash>
 +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 ​        
 +    2   168 MASQUERADE ​ all  --  *      *       ​0.0.0.0/​0 ​           0.0.0.0/0
 +</​code>​
rl/labs/08/contents/01.1377340500.txt.gz · Last modified: 2013/09/18 09:48 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0