Configurar el espejo público (?) Del servidor de Internet en mi enrutador

0

¿Puedo configurar de alguna manera un espejo (esta es la mejor palabra con la que vine) de un servidor disponible en Internet en un puerto específico en mi enrutador?

Esto es lo que tengo:

  • ISP me proporciona una dirección IP estática (pude configurar el reenvío de puertos en mi enrutador para permitir el acceso al servidor web en mi red local desde Internet).
  • Tengo un enrutador D-LINK DIR-628 con firmware original si eso ayuda.
  • Hay un servidor de internet que quiero reflejar. Más específicamente, este es un servidor Ventrilo que alquilo.

Lo que quiero lograr: la conexión a mi enrutador utilizando su dirección IP pública debería redirigir la conexión al servidor Ventrilo. No necesito ninguna capa segura adicional como ningún tipo de autorización para usar este proxy.

Motivo por el que necesito esto: un chico no puede conectarse al servidor Ventrilo (todos los demás no tienen problemas para conectarse). No sé la causa exacta de esto, pero su ISP no es cooperativo y no lo ayuda. Por lo tanto, quiero configurar algún tipo de espejo / proxy en mi enrutador para que se conecte utilizando la dirección IP de mi enrutador y esta conexión se redirigirá al servidor Ventrilo.

Intenté configurar el reenvío de puertos, pero no me permite redirigir las conexiones a IP externas. Solo para IP en mi LAN.


Según la información proporcionada por @fdmillion, pude resolver mi problema.

Respuesta general (en caso de que necesite reenviar solo TCP):

  1. Creé la regla de reenvío de puertos en mi enrutador como se sugirió.
  2. Agregué la ruta a Windows usando el comando netsh: netsh interface portproxy add v4tov4 listenport=PORT listenaddress=LAN_IP_of_Windows_Machine connectport=PORT connectaddress=Internet_IP_of_Server

Sin embargo, parece que Ventrilo está utilizando TCP y UDP. Desafortunadamente, netsh no es compatible con UDP, solo es compatible con TCP. Utilicé una herramienta separada para reenviar UDP ( http://sourceforge.net/projects/pjs-passport/ ) y netsh para reenviar TCP. Pjs-passport no puede reenviar TCP y UDP simultáneamente. Puede crear solo una regla para la misma dirección y puerto para TCP o UDP.

Avsek
fuente

Respuestas:

0

No puede hacer este tipo de cosas solo con un enrutador de grado de consumidor.

Si estuviera dispuesto a instalar una máquina Linux en algún lugar dentro de su red y reenviarle un puerto, podría hacer que Linux use NAT para redirigir la conexión. Si bien NAT se usa generalmente para permitir que varias máquinas dentro de una red compartan una dirección IP pública, NAT no está restringido a este uso y se puede usar para todo tipo de trucos de enrutamiento interesantes.

También podría, si su enrutador lo admite, instalar firmware alternativo (por ejemplo, OpenWRT) en su enrutador y hacerlo en el enrutador. Incluso en ese caso, sin embargo, algunos antecedentes de Linux son casi obligatorios.

Obviamente, si no está muy familiarizado con Linux, esta sería una curva de aprendizaje bastante significativa solo para esta configuración. No conozco aplicaciones en Windows que puedan hacer esto a menos que esté usando Windows Server; Mac OS X podría hacerlo usando su firewall incorporado, pero nuevamente no estoy seguro.

Para referencia de cualquier otra persona que vea esto, la forma en que podría implementar esto sería la siguiente:

Public IP: 12.34.56.78
IP of destination server: 87.65.43.21
Local area NAT range: 192.168.1.0/24
IP of Linux box on LAN: 192.168.1.200
Port that should be forwarded: 1234

1. Use router controls to direct port 1234 of incoming traffic to 192.168.1.200.

2. On the Linux box, issue this command:

    iptables -t nat -A PREROUTING -p tcp -d 192.168.1.200 --dport 1234 -j DNAT --to 87.65.43.21:1234

Side note: If you are using OpenWRT or similar on a router, you would not need to forward the port as in step 1. Step 2's command would become:
    iptables -t nat -A PREROUTING -p tcp -d 12.34.56.78 --dport 1234 -j DNAT --to 87.65.43.21:1234

3. Ensure port forwarding is on:

    sysctl net.ipv4.ip_forward=1

Tenga en cuenta que, por supuesto, puede jugar con las cosas. Si desea aceptar conexiones en dicho puerto 4321, pero aún así conectarse al puerto 1234, cambiaría la --dportopción para que coincida con el puerto al que desea que se conecten sus clientes. Del mismo modo, para cambiar el puerto de destino, debe modificar el --toparámetro en consecuencia.

Si estropea las reglas del firewall, iptables -t nat -Frestablecerá todas las reglas relacionadas con NAT a sus valores predeterminados (vacíos).

iptableses un tema enorme y se podría escribir una biblioteca de libros al respecto. Si tiene experiencia en Linux y está interesado, https://wiki.archlinux.org/index.php/iptables y http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO-7.html son Algunos buenos recursos.

Hay otras formas de lograr lo mismo: me vienen a la mente métodos de representación más clásicos. Podría, por ejemplo, configurar un proxy SOCKS5 dentro de su red. Por supuesto, en este caso, debe ser muy diligente con la seguridad, ya que el abuso del servidor proxy SOCKS5 abierto es muy común (las personas usan servidores SOCKS abiertos para vencer las prohibiciones basadas en IP, solo por nombrar un truco desagradable).

¡Espero que esto ayude!

fdmillion
fuente
Gracias por tu respuesta. Lamentablemente, no puedo instalar el firmware OpenWRT en mi enrutador porque no lo admite. A tampoco tengo ninguna máquina Linux en mi LAN. Las dos únicas máquinas que tengo funcionan con Windows 7. Estoy tratando de descubrir qué sería un análogo para iptables en Windows. Parece que netsh es lo que necesito, pero todavía no descubrí cómo crear una ruta de este tipo.
Avsek
Pude encontrar una solución basada en tu comentario. Edité mi pregunta original con una solución que encontré en caso de que alguien tenga una pregunta similar. ¡Gracias una vez más!
Avsek