Reenvío de puertos simple

19

Estoy en problemas porque estoy tratando de configurar un proxy inverso con un segundo servidor. Mi idea era hacer que el firewall reenviara https al proxy inverso y el puerto 29418 (gerrit ssh) al segundo servidor. Ahora mi colaborador de TI dice: ¡NO PUEDO! Ambos puertos van al servidor 1 o ambos puertos van al servidor 2.

Ok, como solución intenté configurar un reenvío de puertos en el proxy inverso del puerto 29418 -> server2: 29418

Detalles:

  • Server1 IP: 10.0.0.132 y 192.168.10.2 en Ubuntu 12.04.2 LTS
  • Server2 IP: 10.0.0.133 y 192.168.10.3 en Ubuntu 12.04.2 LTS

Ahora, tanto https como el puerto 29418 van desde el firewall al 10.0.0.132, TI dice que esa es la única forma. :(

Entonces, dime cómo reenviar desde 10.0.0.132:29418 -> 192.168.10.3:29418 o 10.0.0.133:29418

Cuando estoy trabajando en 10.0.0.132, puedo conectarme a 10.0.0.133:29418 y 192.168.10.3:29418 para que los puertos estén abiertos.

- Actualización -

Mi iptables -t nat -L se ve así:

root @ dev: / root # iptables -t nat -L
PREROUTING en cadena (política aceptada)
destino de destino de origen de opt prot
DNAT tcp - en cualquier lugar dev.example.com tcp dpt: 29418 a: 10.0.0.133

ENTRADA de cadena (política ACEPTAR)
destino de destino de origen de opt prot

Salida de cadena (política aceptada)
destino de destino de origen de opt prot

POSTROUTING en cadena (política ACEPTAR)
destino de destino de origen de opt prot
root @ dev: / root # cat / proc / sys / net / ipv4 / ip_forward
1
descifrar
fuente

Respuestas:

32

En caso de que alguien más esté buscando una manera que realmente funcione. Aunque @HorsePunchKid tiene razón en su sugerencia, he encontrado este tutorial que completa los pasos que faltan:

http://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/

En esencia:

Habilitar el reenvío de IP:

sysctl net.ipv4.ip_forward=1

Agregue su regla de reenvío (use nnnn: port):

iptables -t nat -A PREROUTING -p tcp -d 10.0.0.132 --dport 29418 -j DNAT --to-destination 10.0.0.133:29418

Solicite IPtables a Masquerade:

iptables -t nat -A POSTROUTING -j MASQUERADE

¡Y eso es! Funcionó para mí en cualquier caso :)

Brendon Muir
fuente
1
Esta es la mejor respuesta que encontré sobre este tema.
Victor Piousbox
Perdí la conexión de mi contenedor Docker después de usar esta solución. Tuve que eliminar la regla. La regla funcionaba, pero perdió el resto del tráfico. No recomiendo esto
Dyin
iptables -t nat -A POSTROUTING -j MASQUERADEOH WOW ... eso es todo, gracias! Pasé horas buscando en la web y descubriendo. Esto es muy simple y funciona.
shrimpwagon
7

Si tiene instalado iptables en 10.0.0.132, creo que esto será bastante sencillo:

iptables -t nat -A PREROUTING -j DNAT -d 10.0.0.132 -p tcp --dport 29418 --to 10.0.0.133

Esto dice enviar tráfico entrando a 10.0.0.132 en el puerto 29418 a 10.0.0.133 en su lugar, en el mismo puerto, antes de cualquier otra ruta que 10.0.0.132 pueda intentar hacer. Si ejecuta este comando y tiene problemas con él, reemplace el indicador -A con -D para eliminarlo.

Si desea que esta regla se ejecute automáticamente cuando se inicie 10.0.0.132, considere agregar el comando anterior como una regla "posterior" en / etc / network / interfaces.

HorsePunchKid
fuente
Eso es exactamente lo que hice pero no funcionó. Descomenté el net.ipv4.ip_forward = 1 en /etc/sysctl.conf pero aún recibo errores al conectar con el 10.0.0.132:29418
cancela el
6

Si alguien busca un método temporal, pruebe la siguiente solución.

    ssh -L 192.168.0.10:8080:10.0.0.10:80 [email protected]

El comando anterior redirige todas las conexiones al puerto 8080 de su máquina base al puerto 80 de su máquina virtual. Puede probar el funcionamiento accediendo a la página web http://192.168.0.10:8080 , y le mostrará la página web en la máquina invitada.

Esto se aplica a todos los puertos :)

hombre común
fuente
0

Al final tuve que instalar pfSense como un enrutador dentro de mi servidor ESXi para enrutar el tráfico a las diferentes máquinas virtuales, ya que no podía hacer que funcionara en Ubuntu.

descifrar
fuente