我试图通过SOCKS代理连接到oracle数据库,因为我没有直接访问oracle服务器。 所以,我打开我的4000端口的代理,并添加这些选项到我的应用程序:Java socks代理使用本地DNS
-DsocksProxyHost=localhost -DsocksProxyPort=4000
现在,如果我在连接字符串中使用Oracle服务器的主机名启动我的应用程序,然后我得到指定的“未知主机”。 如果我使用IP地址而不是主机名,则连接成功。 我猜java正在尝试使用我的本地DNS而不是远程DNS来解析主机名。我如何使用远程DNS?
它是什么客户? SOCKS的一个结构问题(例如,如果它位于客户端下方的库中),通常客户端在建立连接之前先解析DNS,而使用SOCKS时,解析和连接是在同一请求中一起完成的。各种auto-SOCKS客户端通过钩住DNS查找并返回伪造地址(当它们在SOCKS中看到连接请求时用来识别原始目的地名称)来解决这个问题。 – Adrien