Tengo un host que tiene un túnel GRE estático permanente hacia un servidor en Internet. En este momento el host tiene su propia dirección IP real. Quiero poner el host detrás de una caja de Linux (Smoothwall) y asignarle una dirección IP privada.
Llamemos:
IP-servidor-túnel= la IP del final del túnel al que se conecta el host (en Internet)
ip real= la IP real utilizada actualmente por el host, que quiero asignar al enrutador Linux
IP falsa= la IP que obtendrá el host después de colocarlo detrás del firewall de Linux
Esto es lo que creo que tengo que hacer para que el túnel funcione:
- DNAT todos los paquetes IP GRE entrantes en la interfaz externa provenientes del extremo del túnel de Internet y envíelos al host. Eso es cambiar el destino deip realaIP falsay enviar el paquete aIP falsa
- SNAT todos los paquetes IP GRE entrantes que llegan a la interfaz interna provenientes del host para que parezcan generados por la caja de Linux y los envía al servidor del túnel. Eso es cambiar el campo fuente deIP falsaaip realy enviar el paquete aIP-servidor-túnel
Se me ocurrió el siguiente guión:
tunnel_server_ip=217.x.x.x
false_ip=192.168.2.2
real_ip=82.x.x.x
/sbin/iptables -A PREROUTING -p 47 --src $tunnel_server_ip -j DNAT --to-destination $false_ip
/sbin/iptables -A POSTROUTING -p 47 --src $false_ip -j SNAT --to-source $real_ip
/sbin/iptables -A INPUT -p 47 -j ACCEPT
Ejecutar esto da como resultadoNo hay cadena/objetivo/partido con ese nombre. ¿Podrías decirme qué hice mal? ¿Estoy en el camino correcto?
Respuesta1
Olvidó el -t nat
interruptor de tabla en las instrucciones PREROUTING/POSTROUTING. Solo agrégalo en el frente.
Respuesta2
Respuesta tardía, pero encontré la misma necesidad y los dos comandos siguientes funcionan:
# iptables -t nat -A PREROUTING -i eth0 -p gre -j DNAT --to-destination 192.168.0.1
# modprobe nf_conntrack_proto_gre
No es necesario especificar una IP real, simplemente envíe PREROUTE
el gre
tráfico al servidor privado y deje que el gre
rastreador de conexiones haga su trabajo.
Respuesta3
Para la mayoría de los túneles GRE, debe tener un protocolo de control en TCP 1723. Este también debe reenviarse. Aquí hay unEnlaceque describe la configuración de iptables para esto. Estás en el camino correcto, solo te falta el protocolo de control.
Respuesta4
Parece que se le olvidó decir "--table nat", por lo que ingresa a la tabla de filtro que no tiene objetivos SNAT/DNAT, ni tiene cadenas PREROUTING y POSTROUTING.