我試圖通過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