Tengo un Oracle dbms en una máquina remota de Linux (aws linux, debería ser similar a rhel).
Desafortunadamente, la red en la que estoy solo permite el tráfico saliente al puerto 80,443 y 22.
Como estamos hablando de una máquina de prueba, me gustaría hacer una configuración para que cada tráfico entrante en el puerto 80 se envíe inmediatamente al puerto 1521.
No puedo usar un proxy http, ya que el tráfico sería el tráfico del protocolo oracle personalizado en el puerto 1521, pero escuché que Linux permite simplemente reenviarlo de forma inmediata. ¿Podrías decirme cómo hacer esto? Gracias
linux
networking
port-forwarding
Phate
fuente
fuente
Respuestas:
Una forma de hacerlo (desafortunadamente no 'fuera de la caja' como usted menciona) es usar un programa llamado
socat
. Es accesible en la mayoría de los repositorios de paquetes, por lo que podría usarloyum install socat
en su escenario (en Debian,apt install socat
funciona).El comando usado es
socat tcp-listen:[public accessible port],reuseaddr,fork tcp:localhost:[actual port]
. En su caso, lo seríasudo socat tcp-listen:80,reuseaddr,fork tcp:localhost:1521
. (Tenga en cuenta que puede necesitar privilegios de superusuario dependiendo de su configuración).Para más respuestas, puedes mirar aquí .
fuente
Advertencia justa, no soy experto en netfilter (iptables).
Cualquier distribución respetable del servidor Linux debe tener instalado netfilter y habilitado en su núcleo. Netfilter le permite enrutar, bloquear y manipular paquetes que entran y salen de su sistema. Intente ejecutar esto como root en la máquina del servidor:
Es posible que deba cambiar eth0 al nombre de dispositivo correcto para el adaptador LAN del servidor. Esto debería ocasionar que Oracle DBMS reciba los paquetes que ingresan en el puerto 80 que escuchan en el puerto 1521.
Seguí y busqué qué hacen estas opciones (porque no estoy muy familiarizado con la administración de netfilter a mano). Leme lo descompone:
Esto selecciona la tabla NAT y agrega (
-A
) la nueva regla a la cadena PREROUTING de la tabla NAT. En general, cuando redirige de un puerto a otro, eso pertenece a la tabla NAT. La cadena PREROUTING ocurre muy temprano cuando Netfilter procesa los paquetes entrantes. Es la primera cadena de paquetes entrantes, por lo general.Estas son la parte de filtro de la regla. Le estamos diciendo en qué interfaz (
-i
) y protocolo (-p
) desea que esta regla afecte los paquetes. En este ejemplo, estamos creando una regla para el tráfico tcp en la interfazeth0
. También le estamos diciendo qué puerto de destino (-dport
) debe buscar en los paquetes ... en este caso, paquetes con un puerto de destino de 80 (tcp).Cuando intente conectarse al puerto 80 de TCP en el servidor con el DBMS de Oracle, los paquetes TCP que envía su máquina tendrán un puerto de destino de 80 en sus encabezados.
Esta es la carne de la regla. Aquí le está diciendo que los paquetes que coinciden con los filtros anteriores se deben redirigir (
--j REDIRECT
) al puerto 1521 (--to-ports 1521
). Cuando el filtro de red está en el mismo sistema que la aplicación que desea redirigir el tráfico que utilizaREDIRECT
. Cuando la aplicación está en otro servidor que usaría en suDNAT
lugar (y especifica tanto IP como puerto).Por favor, avíseme si esto funciona.
Estas configuraciones no son persistentes; para que sean persistentes, te sugiero que consideres la instalación
iptables-persistent
. Puede encontrar más información aquí en StackOverflow .fuente