¿Cómo puedo hacer que iptables sea NAT para todos los paquetes, excepto aquellos que tienen una dirección de destino de la subred 192.168.254.0/24?
Respuesta1
Si te entiendo bien, esto debería ser bastante fácil usando la opción -d
con negación. Por ejemplo, una regla como esta:
$ iptables -A POSTROUTING ! -d 192.168.254.0/24 -j SNAT --to-source new_source_ip
Por supuesto, puedes cambiar la regla según tus necesidades. Esto cambia la IP de origen de todos los paquetes destinados a cualquier destino excepto la subred indicada.
Respuesta2
En mi opinión, el siguiente orden de comandos de iptables funcionaría:
1. iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -o eth0 -j RETURN
2. iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -o eth0 -j MASQUERADE
la regla 1 coincidirá con su red y no la ENMASCARARÁ. La regla 2 la enmascarará todo, pero en general no es una buena idea dar el comodín 0.0.0.0 (ni siquiera estoy seguro de si funcionará). Debes agregar selectivamente todas las redes que quieras enmascarar y el resto simplemente no se enmascararán.