Omet navegació

7.3. Traducció d'adreces de xarxa (NAT)

La traducció d'adreces de xarxa (Network Address Translation, NAT) és el procés pel qual es modifiquen la informació sobre adreces a la capçalera del paquet IPv4 mentre està en trànsit per un dispositiu d'encaminament.

L'ús de NAT és molt habitual en escenaris on dispositius amb una adreça IP privada (d'una LAN per exemple) volen accedir a una xarxa en adreces IP públiques, com Internet. Per evitar l'ambigüitat en la gestió dels paquets de tornada, un NAT d'un-a-molts ha de modificar informació de més alt nivell com els ports TCP/UDP a les comunicacions sortint, i ha de mantenir una taula de traducció perquè els paquets de tornada puguin traduir-se correctament. La RFC 2663 utilitza el terme NAPT (network address and port translation, traducció d'adreça de xarxa i de port) per a aquest tipus de NAT. D'altres vegades també s'anomena PAT (port address translation), IP masquerading, NAT Overload i many-to-one NAT. Com que aquest és el tipus de NAT més corrent, també se sol anomenar simplement NAT.

Com s'ha dit, aquest mètode permet la comunicació a través del router només quan la conversa s'origina dins de la xarxa "dissimulada", perquè això inicialitza les taules de traducció. Per exemple, un navegador web dins de la xarxa dissimulada pot navegar per un web que estigui a fora, però un navegador de fora no pot navegar per un web que estigui a la xarxa dissimulada. Això no obstant, la majoria dels dispositius NAT actuals permeten a l'administrador de xarxa que preconfigure la taula amb algunes traduccions permanents. Aquesta funcionalitat es coneix normalment com a "NAT estàtic" o port forwarding i permet que el trànsit originat a la xarxa "exterior" arribi a ordinadors concrets dins de la xarxa dissimulada.

Des de mitjans dels anys 1990, el NAT ha estat una eina molt popular per alleujar els problemes provocats per l'esgotament de l'espai d'adreces IPv4. S'ha convertit en una funció estàndard i indispensable en tots els routers per a connexions domèstiques i d'oficina petita. La majoria dels sistemes que utilitzen NAT ho fan per permetre que múltiples ordinadors d'una xarxa privada accedeixin a la Internet amb una sola adreça IP pública.

Emmascarament IP en Ubuntu Server 16.04

L'emmascarament IP és el tipus de NAT més popular i és senzill de configurar usant regles de l'ufw.

Per a fer-ho cal editar algun dels arxius que es troben en la carpeta /etc/ufw/*.rules.

Les regles es divideixen en dos fitxers diferents, regles que s'han d'executar abans de les regles de línia d'ordres ufw, i les regles que s'executen després de les regles de la línia d'ordres ufw.

En primer lloc, el reenviament de paquets ha d'estar habilitat.

Ara afegiu regles al fitxer /etc/ufw/before.rules. Les regles predeterminades només configuren la taula filter, i per permetre que la configuració de la taula nat s'hagi de configurar. Afegiu el següent text  a la part superior del fitxer just després de l'encapçalament:

# nat table rules 
*nat :POSTROUTING ACCEPT [0:0] 

# Forward traffic from eth1 through eth0. 
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE 

# don't delete the 'COMMIT' line or these nat table rules won't be processed 
COMMIT

Els comentaris no són estrictament necessaris, però es considera bona pràctica documentar la vostra configuració. A més, quan modifiqueu algun dels fitxers de regles a /etc/ufw, assegureu-vos que aquestes línies siguin l'última línia de cada taula modificada:

# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT

Per a cada taula es requereix una declaració COMMIT corresponent. En aquests exemples només es mostren les taules nat i filter.

A l'exemple anterior substituïu eth0, eth1 i 192.168.0.0/24 amb les interfícies apropiades i el rang d'IP per a la vostra xarxa.

Finalment, desactiva i torna a habilitar ufw per aplicar els canvis:

sudo ufw disable && sudo ufw enable

Cas pràctic: taules d'enrutament i NAT

Com es pot observar en l'esquema disposem d'un dispositiu que pot realitzar NAT (R2). Crea les taules de rutes de R1 i R2 i les regles NAT que cregues convenients perquè els equips de la xarxa 192.168.2.0/24 puguen accedir a internet sense problemes.

Xarxa

Redirecció de ports en Ubuntu 16.04

La redirecció de ports (port forwarding) és l'acció de redirigir un port de xarxa d'un node de xarxa a un altre. Aquesta tècnica pot permetre que un usuari extern tinga accés a un port en una adreça IP privada (dins d'una LAN) des de l'exterior via un encaminador amb NAT activat.

La redirecció de ports permet que ordinadors remots (per exemple, màquines públiques a Internet) es connecten a un ordinador en concret dins d'una LAN privada.

Per exemple, la redirecció del port 3389 a l'encaminador a la màquina d'un altre usuari permet l'accés remot.

Les màquines amb Linux moderns aconsegueixen això afegint regles d'iptables a la taula nat: amb la destinació DNAT (destination NAT) a la cadena de PREROUTING o amb la destinació SNAT (source NAT) en la cadena de POSTROUTING.

Suposant que disposem d'un servei web a la xarxa privada interna, concretament a l'equip 192.168.0.2 i que volem que siga accessible des de l'exterior mitjançant NAT i l'adreça pública de l'encaminador és 214.15.11.12.

# nat table rules

*nat
:PREROUTING ACCEPT [0:0]

# Forward traffic from eth0 port 80 to 192.168.0.2.
-A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80

# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT

Amb la regla anterior les peticions a l'encaminador al port TCP/80 seran adreçades a l'adreça IP 192.168.0.2 al mateix port.