项目里不能通过VPN访问外网数据库

首先声明这个是我从别人的回答中复制过来的,保存一份以备后用:

我也碰到了跟你一模一样的问题!我的解决了,原因是VPN管理功能中少开放了通讯协议;具体过程如下:

服务器为A,我的本机为B,Oracle跑在A:1521端口上。在B电脑上安装深信服VPN客户端EasyConnect,使用网管分配给我的VPN连接帐号(vpnuser2)建立与A的连接,这时,
从B电脑作如下操作:
1.ping A的VPN网卡IP(192.168.1.22),能通
2.telnet 192.168.1.22 1521,能通
3.mstsc远程桌面连接192.168.1.22,能进入
4.打开Navicat或PL/SQL Developer通过Thin方式(非TNS)连接192.168.1.22:1521数据库,能通
唯独这一项不通:
在B电脑的eclipse或Idea的开发IDE中,将连接参数配置到DataSource属性文件,启动应用,日志总是在建立数据库连接处报"网络拒绝连接"
排查过程:
1 排除jdk32位与64位的区别带来的影响,将jdk换成32位版本,还是老样子,不通
2 排除jdbc驱动包版本问题带来的影响,class12.jar\class14.jar\ojdbc6\ojdbc7换了一个遍,还是老样子,不通
3 开始怀疑是vpnuser2这个帐号的网络访问权限问题,找网管要来了他自己使用的最大权限VPN连接帐号vpnuser1,连接上测试,问题解决,IDE中启动的java应用ds成功建立.
4 对比vpnuse1和vpnuser2这2个VPN帐号的网络访问权限差异:vpnuser1开放了目标地址的所有通讯协议(tcp/udp/icmp/ftp/...),而vpnuser2仅开放了tcp和udp这两种网络协议的所有端口访问,将vpnuser2这个帐号的网络访问权限更改为所有协议,所有端口,再用vpnuser2连接测试,发现ds也是能成功建立的,由此推断出:
   A、jdbc驱动包ojdbc6.jar(测通时是使用的这个),不仅仅只依赖于TCP和UDP这两种网络通讯协议,还有其他
   B、具体还依赖哪几个网络协议,由于网管有事出去了,没人配合,没有进一步配合验证,无法精确定位出来
   C、ojdbc6.jar的源码无法从maven仓库下载下来,只能自行反编译断点调试跟踪去查证,这个包到底走了哪些协议哪些端口

猜你喜欢

转载自blog.csdn.net/u012310865/article/details/80257607