這篇談到的是正向 Proxy,用於正向 Proxy 常用的就是 squid,squid 無庸置疑的是一個功能非常強大的 Proxy,功能齊全,不過對於管理者來說,如果你想要使用的功能沒有那麼複雜,只是單純想做 Proxy,那 squid 不但無法發揮他強大的功能以外,還有可能造成許多漏洞。
Tinyproxy 是一個輕量級的 Proxy,專用於 HTTP、HTTPS 代理,他的優點在於快而小,而且簡單,非常適合用於小規模的網路環境使用。
Ubuntu 16.04 安裝 Tinyproxy
使用前查看官方 Documentation
Step 1. 用 apt 安裝 tinyproxy
$ sudo DEBIAN_FRONTEND=noninteractive apt-get -y install tinyproxy
Step 2. 設定 tinyproxy.conf
$ sudo tee /etc/tinyproxy.conf <<EOF # Allow 192.168.0.0/24 Allow 127.0.0.0/8 ConnectPort 443 DefaultErrorFile "/usr/share/tinyproxy/default.html" FilterDefaultDeny Yes Filter "/etc/tinyproxy.d/trust-domain" FilterExtended On Group nogroup Logfile "/var/log/tinyproxy/tinyproxy.log" LogLevel Info MaxClients 32 MaxRequestsPerChild 0 MaxSpareServers 128 MinSpareServers 32 PidFile "/var/run/tinyproxy/tinyproxy.pid" Port 3128 StartServers 32 StatFile "/usr/share/tinyproxy/stats.html" Timeout 600 User nobody ViaProxyName "tinyproxy" EOF
上面的設定是採用 “白名單(FilterDefaultDeny)” 的方式來開放,然後透過 Filter 來開放允許訪問的位置
- MaxClients 32
- MaxRequestsPerChild 0
- MaxSpareServers 128
- MinSpareServers 32
這幾個參數關係到可以連接 Tinyproxy 的 process
Step 3. 設定 trust 的 domain
$ sudo tee /etc/tinyproxy.d/trust-domain <<EOF \.google\.com$ ^shazi\.info$ EOF
Step 4. 啟動 Tinyproxy
$ sudo systemctl enable tinyproxy $ sudo systemctl start tinyproxy
啟動服務後就會 Listen 3128 port
Client 可以透過 export http_proxy、export https_proxy 來通過 proxy 訪問外部網路
$ export http_proxy=http://proxy.com:3128 $ export https_proxy=http://proxy.com:3128