歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

用Squid實現代理上網及計費

  ---- 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 [email protected]   #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




Copyright © Linux教程網 All Rights Reserved