iptables REENVÍA todas las conexiones desde un cliente a través de una puerta de enlace a un servidor

iptables REENVÍA todas las conexiones desde un cliente a través de una puerta de enlace a un servidor

Me gustaría reenviar todos los puertos desde mi cliente (Windows) a un servidor (Windows) que está detrás de una puerta de enlace (Linux).

Mi topología de red tiene el siguiente aspecto:

10.20.10.14 --> 10.20.10.4 --> 192.168.1.1 --> 192.168.1.4
   client          ppp0           eth0          server
                |--------- Gateway -------|

donde el dispositivo Gateway tiene dos dispositivos de red: ppp0 y eth0.

Me gustaría que en caso de una conexión de red entre el cliente y ppp0, el dispositivo servidor vea los datos en el mismo puerto que fueron enviados desde el cliente.

En otras palabras, el servidor debe pensar que se comunica directamente con el cliente y los Gateways son transparentes en este caso.

Además me gustaría saber cómo eliminar esta regla.

¿Algunas ideas?

Observación: Soy el administrador en todos los dispositivos.

Respuesta1

Para traducir las reglas en inglés a reglas de iptables, solo se necesita esta regla:

iptables -t nat -A PREROUTING -s 10.20.10.14 -i ppp0 -j DNAT --to-destination 192.168.1.4

El puerto de destino no se modifica (y el puerto de origen tampoco debería modificarse, excepto en casos excepcionales cuando el cliente se conecta simultáneamente directamente al servidor).

Nada impide que el cliente agregue manualmente una ruta 192.168.1.4y 10.20.10.4acceda directamente al servidor. Si no quieres esto, para mantener oculta la IP del servidor, también puedes agregar esta regla:

iptables -I FORWARD -s 10.20.10.14 -i ppp0 -d 192.168.1.4 -m conntrack ! --ctstate DNAT -j DROP

Esto eliminará un acceso directo al servidor que no fue DNATed.

Para eliminar esas reglas, simplemente use -D:

iptables -D FORWARD -s 10.20.10.14 -i ppp0 -d 192.168.1.4 -m conntrack ! --ctstate DNAT -j DROP
iptables -t nat -D PREROUTING -s 10.20.10.14 -i ppp0 -j DNAT --to-destination 192.168.1.4

Comentarios aleatorios:

  • El reenvío de IP debe estar habilitado en la puerta de enlace ya que se reenvía la conexión DNATed. Lo más fácil de hacer esto sería echo 1 > /proc/sys/net/ipv4/ip_forward.
  • Por supuesto, el servidor necesita una ruta hacia el cliente para aceptar sus conexiones, por ejemplo, teniendo Gateway ( 192.168.1.1) como puerta de enlace predeterminada.
  • -i ppp0es opcional y se puede eliminar (o reemplazar -d 10.20.10.4en la regla PREROUTING si se prefiere). Puede causar problemas si no se reemplaza con -i ppp+( +siendo un comodín): cuando hay una falla/reconexión rápida del enlace, se puede llamar a la nueva interfaz ppp ppp1si ppp0no se cortó antes. Las reglas de iptables ya no coincidirían.
  • Los flujos ya establecidos no se verán afectados cuando se elimine la regla DNAT, pero los flujos más nuevos sí lo serán (es decir, no llegarán al servidor).

información relacionada