NAT GRE (protocolo IP 47) sobre enrutador Linux

NAT GRE (protocolo IP 47) sobre enrutador Linux

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:

  1. 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
  2. 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 natinterruptor 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 PREROUTEel gretráfico al servidor privado y deje que el grerastreador 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.

información relacionada