
No estoy seguro de cómo empezar mejor, así que seré sincero. Tengo que viajar a un país extranjero, pero necesito acceso a un servidor local de la red de mi ciudad natal. Tengo un enrutador DD-WRT con solo mi PC conectada detrás de él. Entonces mi pregunta es: ¿Puedo crear alguna regla de iptables que me permita conectarme a mi enrutador desde una red externa (país extranjero) y me redirija a mi red local (proporcionada por el ISP)? Intentaré hacer un "mapa" de mi necesidad.
/Me - X/
/My router - R/
/Internet - I/
/Local Server - S/
Mi forma típica de acceder a S (servidor local) es la siguiente: X-R-S
Mi forma típica de acceder a Internet es: X-R-I
Mi necesidad es: R<--I<--X
(luego desde R me conecto a S)
Esto se debe a que no puedo acceder a S desde la red externa.
Cuando no estoy en casa, no hay ninguna PC activa detrás del enrutador, por lo que no puedo simplemente ejecutar el proxy en él.
Respuesta1
Esto debería ser relativamente trivial; para SSH algo como esto debería estar bien:
iptables -t nat -A PREROUTING -p tcp \
-i ppp0 --dport 22 \
-j DNAT \
--to-destination 10.10.10.10:22
Supuesto: La interfaz externa de R es ppp0
. Esa es la interfaz entrante a la que debería aplicarse la regla.
Supuesto: La dirección IP de S es 10.10.10.10; sustitúyala por la correcta, por supuesto.
Lo que esto hace es "NAT de destino"; Básicamente, exactamente lo mismo que "NAT normal", solo que reemplaza la dirección de destino con la del servidor interno y la deshace en el camino de regreso. Para usar esto, todo lo que necesita hacer en X es ejecutar ssh R
en lugar de ssh S
estar conectado al sshd en S (esto solo funcionará si X está actualmentenoen internet, sino en tu red interna; También necesitaría ejecutar SNAT - "normal" o NAT de origen - para que las respuestas de S se envíen a través de R, y necesitaría cambiar la regla de "-i ppp0" a "-d <dirección externa de R>", para que coincida cuando los paquetes se reciben desde el interior, no sólo desde el exterior; como puedes ver, se vuelve un poco complicado).
Nota:Por supuesto, esto también se puede hacer para cualquier otro puerto, pero yomuy fuerteNo recomiendo exponer Samba (compartir Windows) o HTTP sin cifrar (a menos que sea contenido público y no autenticado). O cualquier otra cosa, de verdad. No es fácil protegerlos, siempre que sea posible, por lo que aprovechar el reenvío de puertos de SSH le ahorrará muchos dolores de cabeza.
Excepto que el reenvío de Samba es difícil, por lo que será mejor que intentes prescindir completamente de eso.