SSHトンネルとOracle

SSHトンネルとOracle

Oracleサーバーでは明確に接続できます

sqlplus  user/pass@hostremote/SID

トンネルを作ったら

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

私に与える

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

なぜ?

通常、私は直接接続されたサーバーでSSHトンネルを使用します。

ORACLESERVER=192.168.0.15
CLIENT=192.168.0.4

クライアントはトンネルを確立し、localhostのsqlplusに接続します。簡単です。

今は状況が少し異なり、より複雑になりました。

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

仮想マシンでDNATを実行し、仮想マシンでtelnet 1521を使用でき、tcptraceroute 1521は正常な接続を返します。ただし、トンネリングに成功すると、TNSエラーが発生し、接続できません。

これはファイアウォールを使用して作成することです。

 forward-ports: port=1521:proto=tcp:toport=1521:toaddr=10.3.1.4
    port=1521:proto=udp:toport=1521:toaddr=10.3.1.4

答え1

問題は、Oracleが初期接続後にポート1521の代わりに追加の接続を開くため、トンネルがそのように機能しないことです。すべての会話を共有し、サーバー・ネットワーク内で複数の接続を確立できるように、サーバー側にOracle Connection Managerを設定します。

Oracleドキュメント(プライベート):https://support.oracle.com/rs?type=doc&id=参考:361284.1 さて、ミラーを開いてみてください:http://blog.itpub.net/161195/viewspace-1053131/

答え2

  • Oracle TCPプロトコルは接続されていません。場合によっては、FTPと同様に動作します。 ei動的に割り当てられたポートで追加のTCP接続を開くことができます。

  • Oracle TCPプロトコルはTCPヘッダーのOOBビットを使用します。これはTCPをTCPにカプセル化するときに問題を引き起こすことがあります。

最初のポイントについて質問がある可能性が高いです。strace/を使用して2番目の接続を開こうとしているかどうかをtcpdump確認してください。sqlplus

関連情報