
Estoy usando esta regla para configurar SNAT:
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 193.49.142.107:4000
Quiero especificar una regla para filtrar paquetes no destinados a la dirección interna y al puerto que inició la sesión. Además, para recibir paquetes desde un punto final externo específico, es necesario que el punto final interno envíe paquetes primero a la dirección IP de ese punto final externo específico (filtrado dependiente de la dirección NAT).
Ejemplo:
Una máquina con IP interna y puerto (X:x) que está detrás del NAT abre una conexión a un servidor con IP Y. Entonces, con la regla debo poder permitir solo conexiones provenientes de la dirección IP Y y destinadas a (X: X). Todas las demás conexiones se cancelarán.
Respuesta1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -P FORWARD -j DROP
iptables -A FORWARD -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state ESTABLISHED -j ACCEPT
¿Qué hacen estas reglas?
-A POSTROUTING -o eth1 -j MASQUERADE
oculta su IP interna cuando los paquetes salen de su red-P FORWARD -j DROP
establece la política predeterminada para su cadena FORWARD en DROP-A FORWARD -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT
permite conexiones REenviadas nuevas y establecidas-A FORWARD -i eth1 -m state --state ESTABLISHED -j ACCEPT
sólo permite conexiones REenviadas establecidas en
Las reglas anteriores suponen que está utilizando esta caja como puerta de enlace/firewall conectada eth1
a su WAN y eth0
conectada a su LAN.
Lectura adicional:Postenrutamiento y enmascaramiento de IP
EDITAR
Para configurar el reenvío de puertos "condicional":
Por puerto de origen
iptables -A PREROUTING -t nat -i eth1 -p tcp --sport [trusted_source_port] --dport [external_port] -j DNAT --to [internal_ip]:[internal_port]
iptables -A FORWARD -p tcp -d [internal_ip] --dport [internal_port] -j ACCEPT
Por IP de origen
iptables -A PREROUTING -t nat -i eth1 -p tcp -s [trusted_source_ip] --dport [external_port] -j DNAT --to [internal_ip]:[internal_port]
iptables -A FORWARD -p tcp -d [internal_ip] --dport [internal_port] -j ACCEPT