ssh tunnel e oracle

1

No servidor oracle eu consigo conectar claro

sqlplus  user/pass@hostremote/SID

Se eu fizer um túnel

ssh -L 1521:localhost:1521 -F -n hostremote -vvv

me dê

debug1: Connection to port 1521 forwarding to localhost port 1521 requested.
debug2: fd 7 setting TCP_NODELAY
debug2: fd 7 setting O_NONBLOCK
debug3: fd 7 is O_NONBLOCK
debug1: channel 2: new [direct-tcpip]
channel 2: open failed: connect failed: Connection refused
debug2: channel 2: zombie
debug2: channel 2: garbage collecting
debug1: channel 2: free: direct-tcpip: listening port 1521 for localhost port 1521, connect from 127.0.0.1 port 60882 to 127.0.0.1 port 1521, nchannels 3
debug3: channel 2: status: The following connections are open:

ERROR:
ORA-12537: TNS: connection close

Por quê?

Normalmente eu faço túnel ssh no servidor conectado diretamente, por exemplo

ORACLESERVER=192.168.0.15
CLIENT=192.168.0.4

No cliente eu faço o tunel e conecto com o sqlplus no localhost, fácil.

A situação agora é um pouco diferente e mais complexa

PSHYSICAL SERVER=192.168.0.44
VIRTUALMACHINE WITH NAT=192.168.0.45 eth0 10.3.1.1 eth1
ORACLESERVER=virtual machine 10.3.1.4

Eu fiz um DNAT no VIRTUALMACHINE, eu posso usar telnet 1521 VIRTUALMACHINE e tcptraceroute 1521 retornar com sucesso conexão. Mas depois do túnel (com sucesso) eu tenho erro TNS e não conexão.

Este é o dnat make com firewalld

 forward-ports: port=1521:proto=tcp:toport=1521:toaddr=10.3.1.4
    port=1521:proto=udp:toport=1521:toaddr=10.3.1.4
    
por elbarna 16.11.2015 / 15:28

2 respostas

1

O problema é que o Oracle abre conexões adicionais, não para a porta 1521, após a conexão inicial, para que o seu túnel não funcione dessa maneira. Configure o Oracle Connection Manager no lado do servidor para que você possa conversar com ele e fazer várias conexões dentro da rede do servidor.

Documentos do Oracle (não públicos): link Abrir, uhh, espelho: link

    
por 09.10.2017 / 13:36
1
  • O protocolo TCP do Oracle não está conectado. Em algumas situações, ele se comporta de maneira semelhante ao FTP. e.i. ele pode abrir conexões TCP adicionais na porta alocada dinamicamente.

  • O protocolo TCP do Oracle usa o bit OOB no cabeçalho TCP. Isso às vezes pode causar problemas ao envolver o TCP no TCP.

Provavelmente você tem problemas com o 1º ponto. Use strace / tcpdump para descobrir se sqlplus está tentando abrir a segunda conexão.

    
por 16.11.2015 / 15:47