這裡示範在 Ubuntu Linux 中安裝與整合 Squid、Privoxy 與 Tor,架設一個匿名的網頁代理伺服器。

Squid 是一套很普遍被使用的代理伺服器(proxy server),若想要讓 Squid 提供匿名上網的功能,可以在後端接上 Privoxy 與 Tor,透過洋蔥路由達到匿名上網的功能,以下是在一台 Ubuntu Linux 中安裝與整合 Squid、Privoxy 與 Tor 的步驟。


這是系統的架構圖:

Squid + Privoxy + Tor 系統架構

安裝 Tor 與 Privoxy 伺服器

請參考使用 Tor 與 Privoxy 架設匿名網頁代理伺服器的說明,將 Tor 與 Privoxy 伺服器架設起來,然後調整一下伺服器的設定,方便介接 Squid。

Tor 設定

Tor 一樣是使用預設的設定,所以不用特別更動,只要確認 Tor 服務有正常啟動即可。

service tor status

Privoxy 設定

設定與 Tor 整合的部分,讓所有的對外連線導向至 Tor 的連接埠,預設是本機的 9050

# 對外透過 Tor 連線
forward-socks5t   /               127.0.0.1:9050 .

傾聽的連接埠只需要開一個本機連接埠就夠了(保持預設狀態):

# 僅允許來自於本機的連線
listen-address  127.0.0.1:8118

設定好之後,重新啟動 Privoxy:

sudo service privoxy restart

安裝 Squid

使用 apt 安裝 Squid 伺服器:

sudo apt-get install squid

編輯 /etc/squid3/squid.conf 設定檔,調整一些設定。首先隱藏 Squid 的版本資訊:

# 在 HTTP 表頭與錯誤訊息頁面中隱藏 Squid 版本資訊
httpd_suppress_version_string on

刪除 X-Forwarded-For 這一個 HTTP 表頭欄位,讓使用者的 IP 位址不要暴露出去:

# 讓 HTTP 表頭的 X-Forwarded-For 不要顯示使用者的 IP 位址
forwarded_for delete

讓 FTP 的連線不要透過 Privoxy 與 Tor:

# 讓 FTP 直接連線
always_direct allow ftp

一般的連線全部都透過 Privoxy 與 Tor 匿名上網:

# 一般連線皆透過 Privoxy 與 Tor 上網
never_direct allow all

透過 cache_peer 連接至本機的 Privoxy:

# 連接至 Privoxy
cache_peer 127.0.0.1 parent 8118 7 no-query no-digest

設定允許使用 Squid 伺服器的的使用者來源:

# 設定允許的使用者來源
#http_access allow localhost
#http_access deny all
http_access allow all

測試

在瀏覽器中將代理伺服器設定為這裡的 Squid 伺服器。

Firefox 連覽器

開啟 Tor 的檢測網頁,測試看看瀏覽器是否真的有使用 Tor 上網:

Tor 檢測網頁

參考資料:squid-cache wikivpsgetHowtoForge