Hay varias variaciones de NAT que se pueden configurar con IPTABLES. Este artículo pretende mostrar algunos ejemplos de SNAT, DNAT con iptables.
Enmascarar todos los paquetes salientes como IP WLAN0
iptables -t nat -A PREROUTING -s 192.168.1.2 -i eth0 -j MASQUERADE
Todos los paquetes que salgan de eth0 tendrán la dirección IP src eth0
iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to 192.168.1.1
Regla de concordancia que especifica un puerto de origen
A continuación, asegúrese de que los paquetes de los dispositivos Eth tienen la dirección IP de origen correcta. Atención: cuando se especifica un puerto, también debe especificarse el protocolo.
iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.1.2 -p udp –dport 16020 -j SNAT –to 10.1.1.7:51889
iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.1.2 -p tcp –dport 21 -j SNAT –to 10.1.1.7:21
iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.1.3 -j SNAT –to 10.1.1.9
Los paquetes destinados a IP 10.1.1.7 se reenviarán a 192.168.1.2 UDP,TCP
Los paquetes destinados a IP 10.1.1.9 se reenviarán a 192.168.1.3 UDP,TCP
Funciona correctamente con ping (ICMP)
iptables -t nat -A PREROUTING -i wlan0 -d 10.1.1.7 -j DNAT –a-destino 192.168.1.2 iptables -t nat -A PREROUTING -i wlan0 -d 10.1.1.9 -j DNAT –a-destino 192.168.1.3
Los paquetes destinados a IP 10.1.1.7 se reenviarán a 192.168.1.2 UDP,TCP
NO funciona correctamente con ping (ICMP), no soporta IP WLAN respuesta del protocolo ICMP en un ping sin
iptables -t nat -A PREROUTING -p tcp -i wlan0 -d 10.1.1.7 -j DNAT –to-destination 192.168.1.2 iptables -t nat -A PREROUTING -p udp -i wlan0 -d 10.1.1.7 -j DNAT –to-destination 192.168.1.2
Cambiar el puerto SNMP de los mensajes SNMP salientes
iptables -t nat -A OUTPUT -p udp –dport 162 -j DNAT –to-destination 192.168.1.33:1162
Añadir IP secundaria a WLAN0
ip addr add 10.1.1.7/24 dev wlan0 ip addr add 10.1.1.9/24 dev wlan0
Lista todas las direcciones IP asignadas a wlan0
ip add list dev wlan0
Todos los paquetes que salen de eth1 cambiarán su IP de origen a 192.168.20.1
iptables -t nat -A POSTROUTING -o eth1 -j SNAT –to 192.168.20.1
Todos los paquetes TCP que salgan de eth1 por el puerto 443 cambiarán la IP de origen a 192.168.20.1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.22 -p tcp –dport 443 -j SNAT –to 192.168.20.1:443
Todos los paquetes ICMP que salgan de eth1 cambiarán la IP de origen a 192.168.20.1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.22 -p icmp -j SNAT –to 192.168.20.1
Todos los paquetes admitidos que salgan de eth1 y tengan una IP de origen 192.168.1.22 cambiarán su IP de origen a 192.168.20.1.
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.22 -p all -j SNAT –to 192.168.20.1
SNAT en la interfaz de asignación dinámica
uso con modo WIFI dual, donde WiFi puede ser AP y STA al mismo tiempo, añadido al script de inicialización
asumiendo que wlan1 es la interfaz STA ip=$(ip -o addr show up primary global scope wlan1 | while read -r num dev fam addr rest; do echo ${addr%/*}; done) echo $ip # todos los paquetes que salgan de wlan1 cambiarán la IP de origen a la IP de la interfaz STA iptables -t nat -A POSTROUTING -o wlan1 -j SNAT –to $ip
Bloquear el tráfico de ETH0 a Cell, excepto NTP
El orden es importante porque DROP terminará después de permitir la comunicación con el servidor NTP. Por eso hay que INSERTAR las normas. Si se utiliza APPEND, el orden de los comandos debe invertirse para garantizar que DROP es el último.
iptables -I FORWARD -i eth0 -o usb0 -j DROP iptables -I FORWARD -d pool.ntp.org -i eth0 -o usb0 -j ACCEPT
Bloquear el tráfico en ETH1 en función de los puertos
Útil cuando tienes un dispositivo detrás del router y quieres limitar su capacidad de usar/explotar recursos en el router.
Utilícelo con precaución, ya que puede bloquearse.
Bloquea el puerto 80 (http) sólo en la interfaz ETH1
iptables -t filter -A INPUT -i eth1 -p tcp –dport 80 -j DROP
Bloquea el puerto 443 (https) sólo en la interfaz ETH1
iptables -t filter -A INPUT -i eth1 -p tcp –dport 80 -j DROP
Bloquea el puerto 22 (ssh) sólo en la interfaz ETH1
iptables -t filter-A INPUT -i eth1 -p tcp –dport 22 -j DROP
Bloquea ping (icmp) en la unidad de interfaz. ETH1 no responde al ping
iptables -t filter -A INPUT -i eth1 -p icmp -j DROP
Comprobación de la tabla NAT
Se debe especificar la tabla iptables para el listado. POR EJEMPLO. nat, mangle.
iptables -t nat -L -n -v