Vpn

如何通過 VPN 發送 cURL 發出的 HTTP 請求?

  • April 25, 2013

請原諒我(可能)這個菜鳥問題,但我對 Linux 網路非常陌生。我已經花了幾天時間在網際網路上搜尋我的問題的答案,但找不到答案,所以我決定在這裡發布一個問題,因為我知道很多熟練的專業人士訪問這個網站。

無論如何,關於實際問題:我有兩台伺服器可用。我們稱它們為 Server-A 和 Server-B。我已經使用 OpenSWAN 在伺服器 A 和伺服器 B 之間建立了 VPN 隧道。我已分配源 IP:192.168.2.1 用於伺服器 A,172.16.2.1 用於伺服器 B。我能夠成功地從伺服器 A ping 172.16.2.1 並從伺服器 B ping 192.168.2.1,所以我假設我已經正確設置了 VPN 並且兩台伺服器都能夠通信。

現在,在 Server-A 上,我希望能夠做到這一點:

當我像這樣通過 libcurl 發出 HTTP 請求時:

捲曲http://checkip.dyndns.com/

我希望看到請求通過 Server-A 的公共 IP 地址發出。

但是,當我發出:

curl –interface 192.168.2.1 same_url_as_in_the_above_request

我希望請求通過 VPN,以便使用 Server-B 的 Internet 訪問,因此我希望在 checkip 響應中看到 Server-B 的公共 IP 地址。

現在,當我發出這樣的請求時,我收到以下錯誤:

curl(7) : 無法連接到主機

我該怎麼做才能實現這一目標,還是我完全走錯了路?我想要做的就是使用伺服器-B 從伺服器-A 的 Internet 訪問來僅訪問某些網站,或者當伺服器-A 的 ISP 由於某種原因而關閉時。我不需要自動化,只希望能夠在需要時手動執行此操作。

我想我需要做一些路由或 NAT,但我不知道具體該怎麼做 - 我在過去幾天閱讀了很多資料,但我很難弄清楚是什麼確切的 iptables 和/或 route 命令應該看起來像,如果設置 VPN 是正確的解決方案。

我真的希望這裡有人能給我一個建議,如果我用這樣的菜鳥問題讓你們都笑了,我真的很抱歉。

最好的祝福!

僅用於訪問某些網站

實際上,最簡單的方法是通過 HTTP 代理 - 並通過 PAC 文件將路由選擇推送到瀏覽器。

或者當伺服器 A 的 ISP 因某種原因而關閉時

這需要一個非常不同的解決方案 - 使用路由(在 iptables 中或通過 iproute2)。

VPN 實際上不是必需的- 但是如果你想執行一個遠端 HTTP 代理並且不讓每個可以找到它的欺詐者使用它 () 那麼你必須*有一些方法來限制客戶端訪問服務 - 一個 VPN是實現這一目標的好方法。

*) 我現在看到在我照看的盒子上尋找開放網路代理的嘗試比開放 SMTP 中繼的嘗試更多

引用自:https://serverfault.com/questions/502493