我們使用基於 dns 的代理系統,該系統根據 dns 條目代理某些位址,例如,對於 website1.com,如果代理,則 dns 傳回 IP,並且透過該代理程式傳送請求,但對於 website2.com,dns 傳回常規位址並直接發送請求。那沒問題
但是,這僅適用於基於名稱的呼叫。我們也需要能夠對某些 IP 位址執行相同的操作,但是有什麼辦法可以做到這一點嗎?
例如,使用者瀏覽到 IP 1.2.3.4 的網站,但沒有 DNS 項目,既沒有 A 也沒有 PTR。然後,我們需要呼叫的不是 IP 1.2.3.4,而是我們的伺服器 10.0.0.4。有什麼辦法可以做到這一點嗎?我們意識到這需要在客戶端電腦上進行設置,但是仍然有什麼方法可以做到這一點?
客戶端可以是任何東西,Windows、Mac、Linux、Android,等等…可能不可能在所有客戶端上都可以,但是在其中任何一個上都可以嗎?
答案1
當您指定網路時,網路層級有一個選項,我在下面提供了一個帶有 NETWORK 標記的網路解決方案。只有少數協定通常被代理,但大多數都可以很好地與 NAT(網路解決方案)配合使用。 HTTP 和 HTTPS 通常是代理的,所以這是我的第一個回應。
我對你對基於 DNS 的代理的描述感到困惑。 DNS 為不同的位址指定不同的 IP 位址,或為相關網站指定相同的 IP 位址是很常見的。當您指定網站為主機名稱時,我相信我們可以假設您想要代理網站。我相信您正在尋找的術語是“基於名稱的虛擬主機”或“基於名稱的代理”
對於 HTTP 或 HTTPS,許多伺服器可以根據 IP 位址和/或 HOST 標頭中指定的名稱來代理流量。 Apache Web 伺服器使用 VirtualHosts 來分隔網站。其他可以代理流量的軟體具有相同或相似的功能。在 Apache 中,要對相同網站執行基於 ip 和基於 ip 的代理,您需要為該 IP 位址建立 VirtualHost,並將所需名稱新增至該虛擬主機。然後,您可以設定該 VirtualHost 來代理整個網站或其中的一部分。
網路:如果想要將 IP 位址重新導向到不同的位址,可以透過路由器來完成。使用的機制稱為 NAT(網路位址轉換)。在這種情況下,您將需要 DNAT(目標網路位址轉換)。在這種情況下,您可能會想要相關 DNS 項目傳回正在轉換的 IP 位址。
編輯:附加評論提供附加資訊。據我了解要求: - 代理僅適用於來自某些位址/位址範圍的用戶,並非所有到該名稱/IP 的流量都會被代理。
- 代理請求必須看起來源自代理程式而不是原始主機。 - 目前的解決方案根據請求的來源提供不同的地址記錄。 (我相信現有的解決方案在這裡被破壞了。DNS 請求源自客戶端正在使用的DNS 伺服器,該伺服器可能不是客戶端的裝置。DNS 回應被緩存,因此您不能依賴該請求之前的DNS 請求。 )
我認為最有可能有效的解決方案是在伺服器和代理程式前面的裝置上使用 NAT 規則來處理此問題。這將根據原始 IP 位址將您想要代理的所有流量 NAT 到您的代理設備,並將其他流量直接傳遞到伺服器。