如何讓來自 LAMP 伺服器的外部請求繞過網路審查?

如何讓來自 LAMP 伺服器的外部請求繞過網路審查?

我還有另一個問題在askUbuntu站點,並從伺服器故障遷移了這個版本問題,因為我認為超級用戶是詢問它的最佳位置。

背景:

我有一個本地(Drupal)開發環境,由在虛擬化 Xubuntu 12.04 作業系統上運行的 LAMP 伺服器組成,主機作業系統為 Ubuntu 12.04。未啟用橋接網路。

我想開始嘗試 Drupal 的 Web 2.0 整合方面(即 Youtube 和 Facebook 整合),但這些網站都被大規模的過濾機制阻止,其中至少包括 IP 阻止、DNS 過濾、URL 過濾和資料包過濾——並使用連接重置資料包來執行這些規則。一些 ISP 似乎也使用深度資料包過濾來發現 ssh 隧道,而這些隧道的頻寬是有限的——幸運的是,我公寓的 ISP 目前似乎沒有這樣做。不禁止外國人使用代理/VPN/等。只要他們不利用這些來違法(即與中國公民分享受限制的材料)。

對於正常的網頁瀏覽和其他需要存取被封鎖內容的任務,我使用通往另一個國家/地區的伺服器(Ubuntu Server 10.04,僅啟用 ssh 和 openvpn)的 ssh 隧道作為ocks5代理。 Chromium 和 Firefox 都能夠透過socks5 代理本機發送 DNS 請求(前者預設情況下,後者透過更改組態設定)。此解決方案非常適合與受限網站的所有瀏覽器端連線。

然而,許多 Web 2.0 整合 Drupal 模組也要求伺服器本身請求受限制的外部網站。

我的問題是:

通過我的 ssh 隧道並通過過濾機制的最佳方法是什麼:

  • 來自我的 Apache2 伺服器的所有外部請求和 DNS 查找,

或者

  • 僅從我的 Apache2 伺服器到指定主機的請求(和 DNS 查找)?

考慮/嘗試的解決方案

  • 最簡單的解決方案是在過濾機制之外的電腦(我透過 ssh 存取的電腦)上使用 LAMP 伺服器。然而,出於多種原因,我不想這樣做(如果出現問題,則無法物理訪問這台機器,硬體較舊,如果我失去與該伺服器的連接,我將無法繼續開發等)
  • 使用全域代理設定 - 根據我的研究,Xubuntu 不具備全域 soks5 設定的功能。另外我不知道這是否會捕獲我的 DNS 查找。

  • use tsocks:這似乎是最好的候選者,但我有兩個問題:

    1. 啟動/重新啟動 Apache2 的腳本在哪裡,以便我可以在這些命令前面加上tsocks

    2. 如何透過socks5代理程式捕獲並重定向DNS查找?

      編輯/etc/hosts/文件提供了有限的解決方法,但像youtube.com 這樣的網站會從如此多的外部網站(以及URL)加載媒體和其他內容,因此跟踪所有這些(可能會重置連接)第三方URL 幾乎是不可能的。用於socat透過socks5代理程式擷取、轉換和發送UDP流量(如所述這裡)似乎是一個很好的解決方案,但我無法按照連結教程中的描述來實現它。 (如果socat確認使用是解決我的問題的正確方法,我可以發布我正在使用的命令以供審查)

答案1

Apache 並沒有真正建立出站連線; PHP 是。所以 PHP 需要與 SOCKS 代理程式通訊。

相關的:https://stackoverflow.com/questions/10490962/builting-socket-connection-in-php-using-socks-proxy

如果您有 HTTP 代理,那就更容易了,如果有 VPN,那就更簡單了。也許您應該再次嘗試設定 OpenVPN?

或者,您可以在伺服器上設定 Privoxy 以與 SOCKS 代理通信,然後配置 PHP 以使用 Privoxy 作為 HTTP 代理。

相關內容