【问题标题】:Can ojdbc connect to an Oracle database via a SOCKS proxy?jdbc 可以通过 SOCKS 代理连接到 Oracle 数据库吗?
【发布时间】: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 会看到类似的东西。

【问题讨论】:

    标签: java oracle jdbc ojdbc


    【解决方案1】:

    要在 oracle JDBC 驱动程序中启用 socks 代理支持,您需要将 -Doracle.jdbc.javaNetNio=false 传递给 JVM 或在您的代码中相应地设置属性。

    【讨论】:

    • 这是正确的解决方案。我们有自己的 SOCKS 代理,通过它我们将所有流量从客户端路由到服务器。对于 oracle jdbc 18,这不再起作用,因为他们切换到 nio 库。使用这个 -D 选项切换回旧的实现。
    【解决方案2】:

    Does Oracle jdbc driver support SOCKS5 proxy? 似乎暗示 18.1 版本应该添加 SOCKS 代理 支持

    我不明白你是怎么理解的,因为它说:

    不,Oracle JDBC 驱动程序不支持 SOCKS5 代理。在即将发布的瘦驱动 18.1 版本中,将支持 HTTPS 代理websocket


    最新的文档没有提及

    当然可以,请参阅Oracle® Database, JDBC Developer's Guide, Release 18c
    具体部分8.2.2 Support for HTTPS Proxy Configuration

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      相关资源
      最近更新 更多