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