
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.4
y 10.20.10.4
acceda 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 ppp0
es opcional y se puede eliminar (o reemplazar-d 10.20.10.4
en 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 pppppp1
sippp0
no 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).