GB | BIG5
|
| 首頁 > 應用技術 > Squid > 正文 |
 |
| 用Squid實現代理上網及計費 |
| 本文出自:不詳 作者: 陳征 周春琦 (2002-01-31 09:17:57) |
---- (作者地址:上海大學信息中心,200000)
---- IP緊缺是高速發展的網絡面臨的現實問題,我們該如何解決這 一問題?將只有內
部IP的計算機通過一台具有標準IP作為代理服務器 的計算機連接到Internet上是解決此
問題的一種絕妙手段。代理服務 器是數據的中轉站,它可以將經過代理服務器的數據記
錄下來,為 繼的數據分析和計費提供服務與幫助。另外,借助代理服務器軟件 (比
如Squid)可以建立訪問站點的緩存,從而讓再次訪問的用戶能 夠直接從緩存中調用數據,
加快訪問速度,減少重復的網絡數據流 量。
---- 由Squid具有權限管理靈活、性能高和效率快等特點,應用較 為廣泛,因此,我
們將就代理服務器軟件Squid在Linux、FreeBSD和 Unix應用中的認証問題進行討論,同時
還將介紹關利用Squid輔助 軟件實現代理上網與計費的具體方法。
一、 獲取Squid及相關的軟件
---- 從http://squid-cache.org/上獲取Squid軟件,從http:// web.onda.com.br/orso/
上獲取htpasswd_plus和SQMGRLOG,並將它們 保存在/tmp目錄下。
二、在Linux下編譯並安裝Squid
---- 我們假設軟件環境為Redhat Linux 7.x,編譯和安裝Squid的操 作步驟如下。
---- 1.下載最新版本的源文件Squid-2.3.STABLE4.src.tar.gz,並 將它放置在/tmp目
錄下。
---- 2.以root身份創建用戶squidadmin#adduser squidadmin
---- 在缺省的情況下,同名組squidadmin已經被建立。Squid因為考 慮到安全問題,不
能以root身份運行,所以從一開始就使用新建的用 戶進行安裝管理。
---- 3.以squidadmin登錄,對Squid源文件解包和安裝。
$cd /tmp
$tar -zxvf squid*
$cd squid*
$./configure --prefix=/usr/local/squid
進入Squid目錄進行編譯,考慮的選項是安裝路徑
--prefix=/usr/local/squid。
$make
$make install
---- 4.進入/usr/local/squid/bin目錄,執行$./squid -z,創建 cache交換目錄。至此,
Squid已經安裝在用戶的系統上了。然而,要 讓Squid正常運轉,用戶還需要做一些基本設
置。Squid的運轉只與/ usr/local/squid/etc/squid.conf有關,所有設置均在此文件中完
成。
三、Squid基本設置
#Defaults:
acl all src 0.0.0.0/0.0.0.0
設置的規則在此處加入。
http_access deny all
---- 在缺省的情況下,有以上2條規則。當有請求未能匹配任何一條 用戶定義的規則時,
http_access deny all規則將被應用,這 樣,http請求將被拒絕。
---- 那如何在Linux中設置Squid的用戶認証存取控制呢?Squid用 access control list
(縮寫為acl)來管理規則。例如:
acl aclname acltype string1 ...
acl aclname acltype "file"
---- aclname為用戶定義規則的名字,acltype是可被Squid識別的類 別(主要有src、
dst、proxy_auth、port和time...),string為用 戶的設置,可以用"file"從外部文件
調入設置。
---- 1.如果用戶喜歡彈出輸入用戶名及密碼的方式,首先需要安裝 認証程序。Squid
的源文件包自帶了幾種認証程序,都在/tmp/squid- 2.3.STABLE4/auth_modules目錄下。
(1)$ cd /tmp/squid-2.3.STABLE4/auth_modules/NCSA
$ make ncsa_auth
(2)將生成的執行文件ncsa_auth拷貝到squid執行文件目錄中。
$ cp ncsa_auth /usr/local/squid/bin
(3)用htpasswd_plus生成供Squid利用的用戶名和密碼認証數據文 件。
$htpasswd_plus -c /usr/local/squid/etc/passwd
passwd的格式如下。
username1:SilykvIBT46C.:977867617:*
username2:tV.8XcR8tgIqw:*:192.168.1.0
username3:密碼:失效時間:可以登錄的IP
若為*,則說明任何項都能與其匹配。另外還可以增加其他更多的用 戶。
$ htpasswd_plus /usr/local/squid/etc/passwd newusername
(4)修改squid.conf設置
authenticate program /usr/local/squid/bin/ncsa_auth
/usr/local/squid/etc/passwd指定認証身份的內部程序。添加規則 如下。
acl alloweduer proxy_auth username1 username2或者
acl alloweduser proxy_auth REQUIRED http access allow alloweduser
---- 關鍵字REQUIRED意味著任何合法的用戶都可以認証身份,在其 他的acltype中也
起同樣的作用。
---- 2.用IP限制Squid proxy的使用,設置內容如下。
acl manager proto HTTP FTP …
acl safeports port 80 21 443 563 70 210 1025-65535 …
acl connect method CONNECT
acl allowedIP src 202.120.x.x/255.255.255.224
acl denyIP src 202.96.x.x/255.255.255.224
acl allowedusers proxy_auth REQUIRED
http_access deny !safeports
#禁止來自!safeports的HTTP請求。
http_access deny denyIP
http_access allow allowedIP
http_access allow allowedusers
---- 這樣,除了拒絕及允許的IP,其他的請求都將通過輸入用戶名 及密碼來認証。
如果用戶不希望內部計算機訪問某些網站(比如暴力 或色情網站),可以通過如下
設置屏蔽這些站點。
---- acl badip dst "/usr/local/squid/etc/somebadip"
---- http_access deny badip
---- 此處被拒絕的不是來源src的IP地址,而是目的dst的IP地址。 在文件somebadip
中存儲如下格式的一批IP地址:
---- 24.244.192.0/255.255.240.0
---- 61.128.0.0/255.252.0.0
---- 請大家特別注意http語句的順序,正是通過不同的次序,使得 我們可以進行靈活
的配置,得到相應的服務。
---- 3.其他的一些設置如下所示,其中的大多數可以不做修改,只 使用缺省值即可。
http port 3128
#HTTP協議的默認代理端口。
cache mem 42MB
#用一塊內存作為緩沖。
cache dir ufs /home/squid/cache 1024 16 256
---- #硬盤緩沖區的大小,大小為1GB,一級目錄16個,二級目錄256 個。
---- cache access log /var/log/squid/access.log
---- #該log文件是用來描述每次客戶請求HTTP內容時高速緩存命中 或未命中的項目,同
時還描述提出請求的主機身份及它們所需要的內 容,它是用SQMGRLOG等軟件分析記費的
基礎。
---- cache log /var/log/squid/cache.log
---- #用描述當Squid守護進程啟動時可以看到的內存容量、交換 空間的大小、高速緩
存目錄的位置、所接受的連接類型以及接受連接 的端口。
---- cache_store_log /var/log/squid/store.log
---- #用描述頁面從高速緩存中被調入調出的情況。
pid filename /var/run/squid.pid
#Squid進程的進程號。
dns nameservers 192.x.x.1
#定義域名解析服務器的地址。
cache_mgr squidadmin@your.domain
#cache管理員的郵件箱地址。
reference age 1 week
#設置緩沖區的更新周期。
maximum object size 4096 KB
#設置允許被緩存的一次性最大請求。
cache_effective_user squidadmin squidadmin
#以用戶squidadmin的身份運行。
四、用SQMGRLOG實現計費
$cd /tmp
$tar -zxvf sqmlog*
$cd sqm*
$./configure --enable-config=/usr/local/squid/
的選項主要有以下2項。
---- 1. 語言
---- 該語言不包含中文。事實上,它的語言部分是由English.h控制 的,可以漢化
對其進行編譯和安裝。
---- --enable-language=English, Bulgarian_windows1251, Czech, Dutch, French,
German, Hungarian, Indonesian, talian, apanese, Portuguese, Russian_Koi8,
Russian_windows1251, Serbian, Spanish, Turkish default: English
---- 2.安裝目錄
---- --enable-config=/usr/local/squid/etc
---- #筆者將SQMGRLOG的配置文件sqmgrlog.conf 放在與Squid的配 置文件相同的目錄下。
--enable-prefix=/usr/local/squid/bin
#最終編譯生成的運行文件sqmgrlog的放置目錄。
$make
$make install
最,我們還要配置sqmgrlog.conf。
access log /usr/local/squid/logs/access.log
#設置Squid的使用記錄文件access.log的所在地。
output dir /home/squidadmin/public_html/squid-reports
#生成report的輸出目錄。
password /usr/local/squid/etc/passwd
#只生成此passwd文件中指明的用戶report。
$./sqmgrlog
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
代理接入服務器(七)ISDN撥號 (2002-02-17 07:20:00) 代理接入服務器(六)Modem撥號 (2002-02-16 07:20:00) 代理接入服務器(五)Squid代理服務器 (2002-02-15 07:15:00) 代理接入服務器(四)IP偽裝 (2002-02-15 06:15:00) 代理接入服務器(三)DHCP服務器 (2002-02-14 07:15:01) 代理接入服務器(二)雙網卡 (2002-02-14 06:15:00) 代理接入服務器(一)單網卡 (2002-02-13 07:15:01) 用Squid實現代理上網及計費 (2002-01-31 09:17:57) IMP 與 Proxy Server 代理伺服主機 (2001-06-07 10:08:00) 使用反向代理技術保護Web服務器 (2001-05-10 11:06:43)
|
===更多相關=== |
|
|
 |
★ 樊強制作 歡迎分享 ★ |