NAT
Si queremos que un equipo GNU/Linux que hace de router, también realice la operación NAT, debemos usar el comando iptables en el momento de la activación de la tarjeta que va a hacer NAT. Esto se hará de una de determinada forma en función de si la asignación de la IP a la tarjeta que hará NAT es dinámica (por DHCP) o estática (IP fija).
- Para el caso de que la IP de la tarjeta de red sea dinámica, y por lo tanto, cambiante entre distintos arranques del sistema:
post-up iptables -t nat -A POSTROUTING -o tarjeta-que-hace-nat -j MASQUERADE
Cuando la tarjeta se desactive, se debe eliminar la regla anterior:
pre-down iptables -t nat -D POSTROUTING -o tarjeta-que-hace-nat -j MASQUERADE
- Para el caso de que la IP de la tarjeta de red sea fija:
post-up iptables -t nat -A POSTROUTING -o tarjeta-que-hace-nat -j SNAT --to-source IP-de-la-tarjeta-que-hace-nat
Cuando la tarjeta se desactive, se debe eliminar la regla anterior:
pre-down iptables -t nat -D POSTROUTING -o tarjeta-que-hace-nat -j SNAT --to-source IP-de-la-tarjeta-que-hace-nat
Podemos comprobar con el siguiente comando si la regla anterior está activa o no:
# iptables -nv -t nat -L POSTROUTING
Si no estuviera activa, no veríamos la regla:
# iptables -nv -t nat -L POSTROUTING
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Si estuviera activa, veríamos la regla:
# iptables -nv -t nat -L POSTROUTING
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0
Se ha supuesto para el ejemplo que la operación de NAT la realiza la tarjeta eth0 y que la IP es dinámica (MASQUERADE), no es fija y por lo tanto a priori no sabemos cuál será.
Este apartado del uso de iptables se explica de forma mucho más extensa en el tema del cortafuegos netfilter/iptables.
Licencia: licencia de software libre GPL