【发布时间】:2019-09-02 17:09:42
【问题描述】:
我正在尝试通过 SOCKS 代理使用 ojdbc 驱动程序连接到 Oracle 数据库。关于这是否可行,我无法在网上找到明确的答案。
Does Oracle jdbc driver support SOCKS5 proxy? 似乎暗示 18.1 版本应该添加 SOCKS 代理支持,但是,使用 ojdbc8-18.3,驱动程序似乎不支持代理设置,并且最新文档没有提及它。
这是与我尝试过的代码类似的代码(已编辑数据库详细信息)。
System.setProperty("socksProxyHost", "myProxy");
System.setProperty("socksProxyPort", "1080");
Class.forName("oracle.jdbc.driver.OracleDriver");
try (
Connection con = DriverManager.getConnection(
"jdbc:oracle:thin:@myServer:1521/mySID", "myUser", "myPwd"
);
)
{
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(" select * from my_table ");
while(rs.next())
System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getInt(3));
}
catch (Exception e)
{
System.out.println(e);
}
在这种情况下,连接成功,但是当我使用Wireshark检查传出流量时,我可以看到直接建立了连接。我可以通过将代理设置更改为...来进一步验证这一点。
System.setProperty("socksproxyHost", "should not resolve");
System.setProperty("socksproxyPort", "1080");
...并观察连接仍然建立并返回数据。
使用 Microsoft SQL Server 驱动程序执行相同操作时,我看到以下错误:
SQLServerException: 到主机的 TCP/IP 连接,端口 1433 失败。错误:“无法连接到 SOCKS 代理:不应该解决。
这显然是特定于 SQL Server 的,但我预计 Oracle 会看到类似的东西。
【问题讨论】: