You are on page 1of 6

Oracle y los Firewalls

Fecha de creación: lunes 22 de Noviembre de 2005.


Versión: 1.0.
Pruebas realizadas en Oracle8i Release 3 sobre Windows XP Professional 32 bits.

Este documento ha sido elaborado por Infor Consult Soluciones, SL (http://www.inforconsult.com.es).


Queda prohibida la edición o modificación de este documento sin permiso de su autor. Se permite, sin
embargo, imprimir y ceder este documento a terceros siempre que el contenido se mantenga íntegro y se
haga mención expresa a su autor.
LA PAPELERA DE RECICLAJE DE ORACLE

INDICE

ORACLE Y LOS FIREWALLS 3


Descripción del proceso de conexión 3
Posibles soluciones 4
Errores relacionados 6
Notas de Metalink 6

Página 2 de 6
LA PAPELERA DE RECICLAJE DE ORACLE

ORACLE Y LOS FIREWALLS


Descripción del proceso de conexión
En las máquinas Windows el proceso de conexión se realiza del siguiente modo para
el protocolo TCP/IP:

1. El proceso de usuario realiza una petición de conexión al servidor. El


proceso de usuario es la herramienta del cliente, SQL*Plus por ejemplo. La
dirección del servidor y el puerto de escucha del listener (normalmente
1521) la suele coger el cliente del fichero tnsnames.ora (depende de la
configuración).

2. Cuando el listener recibe la petición crea un proceso servidor dedicado en


el lado del servidor que se queda a la escucha en un puerto libre cogido al
azar.

3. El listener devuelve los datos de conexión del nuevo proceso al proceso de


usuario.

4. El proceso de usuario lanza otra petición diferente al puerto que le ha


indicado el listener. Cuando el proceso servidor recibe la petición se
establece la conexión y si los datos de usuario y password son correctos se
abre la sesión en la base de datos.

Cuando existe un firewall entre el cliente y el servidor, los administradores de


sistemas normalmente cometen el error de abrir solamente el 1521 pensando que toda
la conexión va solamente por ese puerto, y como acabamos de ver no es así. En este
caso, los pasos 1, 2 y 3 anteriores van bien pero el paso 4 falla porque el firewall corta
la petición, como se puede ver en la siguiente figura. Los pasos 1, 2 y 3 están pintados
en rojo, naranja y azul respectivamente. El paso 4, en verde, no puede pasar a través
del firewall:

Firewall
abierto en el
Proceso puerto 1521
servidor
Proceso
servidor
Proceso
servidor

Liste SQL*Plu
ner s

Página 3 de 6
LA PAPELERA DE RECICLAJE DE ORACLE

Posibles soluciones
Para solucionar este problema existen diferentes soluciones:

1. Usar un firewall que lleve implementado un proxy SQL*Net. En este caso, el


firewall abre un servicio en un puerto configurable (normalmente el 1610) y
este servicio reconecta con el listener en el puerto y en la dirección IP que
se indique. Cuando el cliente recibe la nueva dirección del proceso
servidor, este reconecta de nuevo con el servicio del firewall y este a su vez
redirecciona la conexión al nuevo proceso. De esta forma todo se hace a
través de un único puerto.

2. Usar el parámetro USE_SHARED_SOCKET=TRUE en el registro de Windows en


el servidor bajo la clave:
• \\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE (Oracle 8.0)
• \\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME<#> (Oracle
8.1.7.x.x o superior)

Es necesario reiniciar el servidor.

Con shared sockets tanto los procesos servidores dedicados como el


propio proceso de escucha listener usan el mismo puerto (el indicado en el
fichero listener.ora del servidor). Las consecuencias de esto son dos:
• Si paramos el listener las sesiones abiertas se desconectan
inmediatamente porque es el listener quien gestiona esas
conexiones.
• Si la actividad de conexión / desconexión es muy alta puede
producir cierto colapso (esperas).

3. Usar Oracle Connection Manager. Se trata de un software que hace lo


mismo que el firewall con SQL*Net implementado que se describió en la
primera opción. Este software se coloca detrás del Firewall y escucha en un
puerto (normalmente el 1610). Por tanto, habría que abrir ese puerto en el
firewall y se podría cerrar el 1521. En la conexión que abre el cliente hacia
el Connection Manager se le indica el servidor y puerto de escucha del
listener al que tiene que redirigir la petición. Por tanto, Connection
Manager actúa como un gateway o un router dado que también puede
rechazar conexiones dependiendo de las IPs de originen o destino. En el
siguiente dibujo se puede observar este comportamiento:

Página 4 de 6
LA PAPELERA DE RECICLAJE DE ORACLE

Firewall
abierto en el
Proceso puerto 1521
servidor
Proceso
servidor
Proceso
servidor

Liste OC SQL*Plu
ner s

4. configurar el cliente se tiene que configurar el tnsnames.ora como se


indica:

EJEMPLO_CMAN=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=
(PROTOCOL=TCP)
Dirección de OCM (HOST=SERVIDOR_CON_CMAN)
(PORT=1610)
)
(ADDRESS=
(PROTOCOL=TCP)
Dirección de Listener (HOST=SERVIDOR_BBDD)
(PORT=1521)
)
)
(CONNECT_DATA= (SID=ORCL))
Para usar OCM (SOURCE_ROUTE=YES)
)

La configuración del Connection Manager en el servidor (se suele usar el


mismo servidor que el de la BD) se hace modificando el fichero cman.ora
en ORACLE_HOME\network\ admin:

CMAN=
(ADDRESS_LIST=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=IP del servidor con OCM)
(PORT=1610)
)
)

MAN_RULES=
(RULE_LIST=
(RULE=
(SRC = IP del cliente)
(DST = IP del servidor de BD)
(SRV = servicio de BD)

Página 5 de 6
LA PAPELERA DE RECICLAJE DE ORACLE

(ACT = accept | reject)


)
)

Una vez configurado, hay que levantar el servicio de OCM. Se puede


hacer desde el Gestor de Servicios de Windows y desde la línea de
comandos mediante: CMTCTL START CM. Para pararlos se puede proceder
de forma análoga mediante el comando CMCTL STOP CM. Para saber si el
OCM está activo: CMCTL STATUS y para saber la versión: CMCTL VERSION.

Errores relacionados
• ORA-12203: TNS:unable to connect to destination.
• ORA-12537: TNS:connection closed.
• ORA-12535: TNS:operation timed out.

Notas de Metalink

• Note 45226.1 SQL*Net and Firewalls.


• Note:66382.1 Firewalls, Windows NT and Redirections.
• Note:119706.1 Troubleshooting Guide TNS-12535 & ORA-12535 Errors.
• Note:2077721.6 Installation and Configuration of Net8 Connection Manager (CMAN).
• Note:298916.1 A Guide to 10G CMAN configuration.

Página 6 de 6

You might also like