配置普通 HTTP正向代理
安裝
| $sudo apt-get install squid squid |
配置 squid3
|
$sudovim/etc/squid3/squid.conf
|
搜索此句
修改爲
啓動/重啓 squid3
| $sudo service squid3 restart |
注意: squid的 http默認代理端口爲 3128
解決方法:
這是由於代理服務器機器的DNS配置問題,代理服務器機器不能找到指定url的ip地址導致。檢查/etc/resolv.conf文件配置是否正確,如不正確添加正確的配置信息,比如說:
nameserver ###.###.###.###
nameserver ###.###.###.###
可以配置多個DNS server。
重新啓動squid服務。
配置HTTPS正向代理(單向認證)
由於 Ubuntu 12.04/14.04默認安裝的 squid版本是不支持 SSL的,因此只能重新編譯支持 SSL.
1.安裝編譯依賴
|
$cd~
$mkdirsquid_src
$cdsquid_src
$sudo
apt-get
install
build-essential
fakeroot
devscripts
gawk
gcc-multilib
dpatch
$sudoapt-getbuild-depsquid3
$sudoapt-getbuild-depopenssl
$sudoapt-getsourcesquid3
$sudoapt-getinstalllibssl-dev
$sudoapt-getinstallopenssl
|
2.修改默認的編譯選項,增加 SSL支持
Ubuntu 12.04
| $vim squid3-3.1.19/debian/rules |
在 DEB_CONFIGURE_EXTRA_FLAGS字段中增加 --enable-ssl
|
...
DEB_CONFIGURE_EXTRA_FLAGS:=--datadir=/usr/share/squid3\
--sysconfdir=/etc/squid3\
--mandir=/usr/share/man\
--with-cppunit-basedir=/usr\
--enable-inline\
--enable-ssl\
...
|
Ubuntu 14.04
| $vim squid3-3.3.8/debian/rules |
對於 Ubuntu 14.04來說,除了要在 DEB_CONFIGURE_EXTRA_FLAGS字段中增加 --enable-ssl外,由於 squid3-3.3.8默認去掉了對於 NCSA的支持,而我們下面認證密碼的配置是基於 NCSA算法的,因此需要在 DEB_CONFIGURE_EXTRA_FLAGS的 --enable-auth-basic字段中增加對於 NCSA的支持,否則無法使用 NCSA算法進行賬號認證,修改後的樣子如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
...
DEB_CONFIGURE_EXTRA_FLAGS:=--datadir=/usr/share/squid3\
--sysconfdir=/etc/squid3\
--mandir=/usr/share/man\
--enable-inline\
--enable-ssl\
--enable-async-io=8\
--enable-storeio="ufs,aufs,diskd,rock"\
--enable-removal-policies="lru,heap"\
--enable-delay-pools\
--enable-cache-digests\
--enable-underscores\
--enable-icap-client\
--enable-follow-x-forwarded-for\
--enable-auth-basic="NCSA,DB,fake,getpwnam,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB"\
...
|
注意,這樣修改後 squid3-3.3.8版本編譯出來的在 /usr/lib/squid3/下的ncsa_auth被重命名成了 basic_ncsa_auth,因此配置文件中制定認證應用的時候要修改一下。
3.配置編譯
Ubuntu 12.04
| $cd squid3-3.1.19/ $debuild -us -uc -b |
Ubuntu 14.04
|
$cdsquid3-3.3.8/
$debuild-us-uc-b
|
4.安裝(編譯後的文件存在在上層的 squid_src目錄下面)
Ubuntu 12.04
| $cd .. $sudo dpkg -i squid3_3.1.19-1ubuntu3.12.04.2_amd64.deb squid3-common_3.1.19-1ubuntu3.12.04.2_all.deb squid3-dbg_3.1.19-1ubuntu3.12.04.2_amd64.deb |
Ubuntu 14.04
|
$cd..
$sudodpkg-isquid3-common_3.3.8-1ubuntu6.6_all.debsquid_3.3.8-1ubuntu6.6_amd64.debsquid3_3.3.8-1ubuntu6.6_amd64.debsquid3-dbg_3.3.8-1ubuntu6.6_amd64.deb
|
5.驗證安裝後的版本是否支持 SSL
| $squid3 -v |grep enable-ssl |
如果看到 enable-ssl輸出,則說明編譯成功。
6.生成自簽名證書
|
$opensslreq-new-keyoutkey.pem-nodes-x509-days365-outcert.pem
|
7.移動服務器證書到 squid3配置目錄
| $sudo mv cert.pem /etc/squid3/cert.pem $sudo mv key.pem /etc/squid3/key.pem |
8.配置 squit3
|
$sudovim/etc/squid3/squid.conf
|
搜索 https_port,如果搜索到,則在搜索到的位置增加,搜索不到則在文件的最後增加
| https_port 443 cert=/etc/squid3/cert.pem key=/etc/squid3/key.pem |
9.驗證配置文件是否配置正確
10.啓動/重啓 squid
| $sudo service squid3 restart |
11.安裝stunnel,配置安裝目錄下的 stunnel.conf,把原來的內容都刪掉,粘貼下面的內容
|
client=yes
[https]
accept=127.0.0.1:8080
connect=www.mobibrw.com:443
|
12.設置瀏覽器代理服務器地址
13.重新啓動 stunnel。
注意,如果只支持 Https協議,可以註釋掉原來的
配置 Squid3用戶名密碼認證
1. 安裝 htpasswd(如果裝了 apache就省掉這一步)
(這個是用來產生密碼的)
|
$sudoapt-getinstallapache2-utils
|
也可以
| $sudo apt-get install mini-httpd |
2.生成密碼文件
|
$htpasswd-c/etc/squid3/passwduser1
|
會讓你輸入 user1的密碼
3.改一下權限,確保 squid能夠讀出密碼文件
| $sudo chmod o+r /etc/squid3/passwd |
4.修改 squid.conf,增加或修改成下面的樣子
對於 Ubuntu 12.04版本上編譯出來的的 Squid3-3.1.19,執行如下配置:
|
auth_parambasicprogram/usr/lib/squid/ncsa_auth/etc/squid3/passwd
aclncsa_usersproxy_authREQUIRED
http_accessallowncsa_users
|
對於 Ubuntu 14.04版本上編譯出來的的 Squid3-3.3.8,由於驗證程序的名字被修改成了 basic_ncsa_auth,因此執行如下配置:
| auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid3/passwd acl ncsa_users proxy_auth REQUIRED http_access allow ncsa_users |
簡單的修改可以在 VIM中查詢 " auth_param basic program /usr/lib/squid/ncsa_auth" 找到後修改一下即可.
然後搜索 " http_access allow all" 找到後替換爲 " http_access allow ncsa_users"
在" http_access allow all" 上面就是 acl控制部分,直接增加" acl ncsa_usersproxy_auth REQUIRED"
如果配置文件是從 Squid3-3.1.19升級到 Squid3-3.3.8版本的,那麼根據如下兩個鏈接的描述:
http://wiki.squid-cache.org/SquidFaq/ConfiguringSquid
https://forums.gentoo.org/viewtopic-t-952948-start-0.html
|
3.2furtherconfigurationcleanupshavebeendonetomakethingseasierandsafer.Themanager,localhost,andto_localhostACLdefinitionsarenowbuilt-in.
|
這兩個鏈接上的信息,從 Squid3-3.2版本開始,原來配置文件中的 acl控制信息已經不需要再從配置文件中讀取了,這部分的功能已經集成進入應用內部了。
因此需要註釋掉下面這幾句話,否則無法正常啓動 Squid3.
| # Recommended minimum configuration: # acl manager proto cache_object acl localhost src 127.0.0.1/32 ::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 |
5.重啓 squid3
|
$sudoservicesquid3restart
|