1. 安裝 Squid
|
sudo apt-get update sudo apt-get upgrade sudo apt-get install squid |
或者
2. 配置 HTTP 代理
注意,在 Ubuntu 下配置文件的默認(rèn)位置可能是 /etc/squid3/,下面均用 CentOS 的 /etc/squid/ 舉例,請(qǐng)自行替換。
基礎(chǔ)設(shè)置:
首先設(shè)置允許訪問(wèn)該代理的 IP 列表:
|
# /etc/squid/squid.conf acl client src 12.34.56.78 #客戶端1 IP 地址 acl client src 21.43.56.78 #客戶端2 IP 地址 ... http_access allow client |
注意這幾行要加在配置文件原有的
之前,不然不會(huì)生效。
然后重啟 squid 服務(wù),讓配置生效。
|
service squid restart #CentOS service squid3 restart #Ubuntu |
注意!非常不建議使用 http_access allow all,你的代理一定會(huì)被別人掃到用來(lái)干壞事!
高級(jí)驗(yàn)證:
如果想使用用戶名密碼來(lái)做權(quán)限控制,則需要進(jìn)行一些額外的配置:
首先,我們需要安裝 htpasswd,這個(gè)工具集成在 apache httpd 的 tools 里面
|
apt-get install apache2-utils yum install httpd-tools |
安裝完成之后執(zhí)行 htpasswd,如果沒(méi)有提示找不到命令,則說(shuō)明安裝成功。
接下來(lái)創(chuàng)建保存用戶名密碼的文件:
|
touch /etc/squid/squid_passwd chown squid /etc/squid/squid_passwd |
注意授權(quán)的時(shí)候要弄清楚 squid 運(yùn)行時(shí)的用戶名,一般是 squid 或者 proxy。
然后執(zhí)行:
|
htpasswd /etc/squid/squid_passwd username New password: Re-type new password: Adding password for user username |
注意把 username 換成你想要的用戶名。
如果想要繼續(xù)添加用戶,請(qǐng)多次執(zhí)行這條命令。
接下來(lái)修改 /etc/squid/squid.conf 文件,在 http_access deny all 之前加上下面幾句:
|
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours auth_param basic casesensitive off |
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
這里要注意,如果你的系統(tǒng)是 64 位的,那么 /usr/lib/squid/ncsa_auth 這個(gè)模塊的地址應(yīng)該是 /usr/lib64/squid/ncsa_auth。設(shè)置之前建議用這個(gè)命令來(lái)檢查一下:
dpkg -L squid | grep ncsa_auth
rpm -ql squid | grep ncsa_auth
下面說(shuō)說(shuō)這幾個(gè)選項(xiàng)的含義:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd : 指定密碼文件和用來(lái)驗(yàn)證密碼的程序
auth_param basic children 5 : 鑒權(quán)進(jìn)程的數(shù)量
auth_param basic realm Squid proxy-caching web server : 用戶輸入用戶名密碼時(shí)看到的提示信息
auth_param basic credentialsttl 2 hours : 用戶名和密碼的緩存時(shí)間,也就是說(shuō)同一個(gè)用戶名多久會(huì)調(diào)用 ncsa_auth 一次。
auth_param basic casesensitive off : 用戶名是否需要匹配大小寫(xiě)
acl ncsa_users proxy_auth REQUIRED : 所有成功鑒權(quán)的用戶都?xì)w于 ncsa_users 組
http_access allow ncsa_users : 允許 ncsa_users 組的用戶使用 Proxy
配置完成后重啟 Squid 就可以啦!
3. 匿名
默認(rèn)情況下,Squid 會(huì)添加很多和客戶信息相關(guān)的 HTTP 頭,如 X-Forwarded-For 這類。如果想要做到高度匿名,需要將這些頭去掉。在 squid.conf 里面添加如下的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
forwarded_for off request_header_access Allow allow all request_header_access Authorization allow all request_header_access WWW-Authenticate allow all request_header_access Proxy-Authorization allow all request_header_access Proxy-Authenticate allow all request_header_access Cache-Control allow all request_header_access Content-Encoding allow all request_header_access Content-Length allow all request_header_access Content-Type allow all request_header_access Date allow all request_header_access Expires allow all request_header_access Host allow all request_header_access If-Modified-Since allow all request_header_access Last-Modified allow all request_header_access Location allow all request_header_access Pragma allow all request_header_access Accept allow all request_header_access Accept-Charset allow all request_header_access Accept-Encoding allow all request_header_access Accept-Language allow all request_header_access Content-Language allow all request_header_access Mime-Version allow all request_header_access Retry-After allow all request_header_access Title allow all request_header_access Connection allow all request_header_access Proxy-Connection allow all request_header_access User-Agent allow all request_header_access Cookie allow all request_header_access All deny all |
然后重啟就可以啦!
默認(rèn)情況下,Squid 會(huì)把主機(jī)相關(guān)的信息發(fā)送出去,并顯示在錯(cuò)誤頁(yè)面。加上下面兩句去掉這些信息:
|
# add this to /etc/squid/squid.conf visible_hostname mybogusproxyhostname.local # and while we are at it stop squid blabbing about it's version aswell httpd_suppress_version_string on |
最后說(shuō)一個(gè)小坑,apache httpd 2.2 版本和 2.4 版本的 htpasswd 生成的密碼文件格式是不一樣的。只有 2.2 版本的能用。
如果按照教程設(shè)置成功以后發(fā)現(xiàn)用戶名密碼死活不對(duì),文件權(quán)限也沒(méi)有問(wèn)題的話,那就要看一下是不是 htpasswd 的問(wèn)題了。
直接輸入 /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd 然后輸入 username passwd 可以手動(dòng)運(yùn)行一下 ncsa_auth 程序,看看是否是密碼文件的問(wèn)題。
如果提示 OK 那么說(shuō)明沒(méi)有問(wèn)題,提示 ERR Wrong password 則說(shuō)明要么是密碼輸錯(cuò)了,要么是密碼文件的格式有問(wèn)題。
PS:放出一個(gè)最簡(jiǎn)單的 PAC 文件,用來(lái)做代理的按需訪問(wèn):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
function FindProxyForURL(url, host) { if(ProxyDomain(url, host)) { return "PROXY 1.2.3.4:8080"; } else { return "DIRECT"; } } function ProxyDomain(url, host) { if( shExpMatch(host, "*.") || shExpMatch(host, "*.baidu.com") ) { return true } return false; } |
PS:
編譯安裝的時(shí)候要注意一點(diǎn),從 3.2 開(kāi)始,編譯使用的參數(shù)有了一點(diǎn)小變化,原先的:
|
--enable-auth="basic" --enable-baisc-auth-#helpers="NCSA" |
變成了
|
--enable-auth \ --enable-auth-basic=NCSA \ |
同時(shí)配置文件里的 /usr/lib/squid/ncsa_auth 模塊可能會(huì)變成 /usr/bin/basic_ncsa_auth ,需要注意。
https://www./docs/networking/squid/squid-http-proxy-ubuntu-12-04
搭建需要身份認(rèn)證的 Squid 代理 by 桔子小窩 is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|