歡迎您光臨本站 註冊首頁

代理伺服器(squid 3.0)的搭建

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

代理伺服器(squid 3.0)的搭建

一, 介紹代理伺服器
            代理伺服器英文全稱是ProxyServer,其功能就是代理網路用戶去取得網路信息。形象的說:它是網路信息的中轉站。在一般情況下,我們使用網路瀏覽器直接去連接其他Internet站點取得網路信息時,須送出Request信號來得到回答,然後對方再把信息以bit方式傳送回來。代理伺服器是介於瀏覽器和Web伺服器之間的一台伺服器,有了它之後,瀏覽器不是直接到Web伺服器去取回網頁而是向代理伺服器發出請求,Request信號會先送到代理伺服器,由代理伺服器來取回你所需要的信息並傳送給你的瀏覽器。而且,大部分代理伺服器都具有緩衝的功能,就好像一個大的緩衝池,它有很大的存儲空間,它不斷將新取得數據儲存到它本機的存儲器上,如果你的瀏覽器所請求的數據就在它本機的存儲器上而且是最新的,那麼它就不重新從Web伺服器取數據,而直接將存儲器上的數據傳送給用戶的瀏覽器。一般用戶的可用帶寬都較小,但是通過帶寬較大的代理伺服器與目標主機相連能大大提高瀏覽速度和效率。更重要的是它所提供的安全功能。通過代理伺服器訪問目標主機,可以將用戶本身的IP地址隱藏起來,目標主機能看到的只是代理伺服器的IP地址而已。很多網路黑客就是通過這種辦法隱藏自己的真實IP,從而逃過監視。
二, 介紹代理伺服器配置完成後所能達到的效果
1,能加快對網路的瀏覽速度    代理伺服器接收遠程伺服器提供的數據保存在自己的硬碟上,如果有許多用戶同時使用這                                 一個代理伺服器,他們對網際網路站點所有的要求都會經由這台代理伺服器,當有人訪問過某一站點         后,所訪問站點上的內容便會被保存在代理伺服器的硬碟上,如果下一次再有人訪問這個站點,這                             些內容便會直接從代理服務中獲取,而不必再次連接遠程伺服器。因此,它可以節約帶寬、提高訪問速度。
2、節省IP開銷
使用代理伺服器時,所有用戶對外只佔用一個IP,所以不必租用過多的IP地址,降低網路的維護成本。
3、可以作為防火牆
代理伺服器可以保護區域網的安全,起到防火牆的作用:對於使用代理伺服器的區域網來說,在外部看來只有代理伺服器是可見的,其他區域網的用戶對外是不可見的,代理伺服器為區域網的安全起到了屏障的作用。另外,通過代理伺服器,用戶可以設置IP地址過濾,限制內部網對外部的訪問許可權。同樣,代理伺服器也可以用來限制封鎖IP地址,禁止用戶對某些網頁的訪問。
4、提高訪問速度
通常代理伺服器都設置一個較大的硬碟緩衝區(可能高達幾個GB或更大),當有外界的信息通過時,同時也將其保存到緩衝區中,當其他用戶再訪問相同的信息時,則直接由緩衝區中取出信息,傳給用戶,以提高訪問速度。
5、方便對用戶的管理
通過代理伺服器,用戶可以設置用戶驗證和記帳功能,對用戶進行記帳,沒有登記的用戶無權通過代理伺服器訪問Internet網。並對用戶的訪問時間、訪問地點、信息流量進行統計。
(注意)下面以我們南陽理工學院區域網絡為例:
我們學校的代理伺服器ip為172.16.250.250,我們為了方便管理可以將代理設置為普通代理和透明代理,所謂普通代理也就是我們在上網時必須設置代理,同時透明代理就是我們上網時不用設置代理,但這並不說明我們不用代理就可以直接可以和外網連接。我們可以利用這兩種不同的技術分配不同的許可權。我們學校的電腦大約有5000多台,並且數量逐年增長。如果每個電腦分配一個ip那麼就需要5000多個ip,如果沒有代理,那麼就需要5000多個公用ip而不是現在的40多個ip。同時我們在代理伺服器中做一些配置,使同學們不能登陸一些不健康網站,觀看一些不合法的網頁,同時為了網路的暢通,禁止下載外網的資料。
二,安裝並配置代理伺服器
1,從http;//www.squid-cache.org下載squid-3.0.PRE4.tar.gz版本
2,製作腳本aa
tar –zxvf squid-3.0.PRE4.tar.gz
cd squid-3.0.PRE4
./configure--prefix=/usr/local/squid --enable-arp-acl --enable-auth="basic"    --enable-baisc-auth-helpers="NCSA
make all
make install
groupadd nogroup
cd /usr/local/
chown nobody.nogroupadd –R squid
cd squid/bin
/usr/local/squid/bin/squid –z
./squid
此時存檔退出
1. 賦予aa執行的許可權
       #chmod a+x aa
4. 執行腳本進行編譯安裝
       #./aa
2. 修改/usr/local/squid/etc/squid.conf使其能夠工作
http_access allow all

修改以下配置能使發生錯誤時,管理員的郵箱能出現在錯誤頁面中
Cache_mgr liangjunzheng102@126.com
         此時的代理伺服器已經配置好了,但只能夠訪問區域網。在/usr/local/squid/etc/squid.conf中添加以下內容就能訪問外網。即配置二級代理
         Cache_peer 172.16.250.250(區域網代理伺服器,此時是南陽理工學院的代理伺服器) parent 3128 3130 login=account:default no-query
         
        這是我們就能訪問外網了,但此時只是完成了代理伺服器搭建的一小部分。我們必須知道搭建代理伺服器的目的,即控制網路流量,同時控制區域網內的電腦所訪問的網頁,保證一些不健康的網頁不被訪問,保障網路道德。下面我們就配置/squid.conf中的訪問控制列表,使其成為一個真正的代理伺服器:
         acl badnet url_regex –i sex
         http_access deny badnet
         這句說明區域網內不能訪問含有sex的網頁
         acl qq dstdomain .tencent.com.cn
         http_access deny qq
          這句說明阻止區域網內使用tencent.com.cn域控制器內的資源,這樣就能阻止區域網內使用QQ聊天工具
          acl bad_mac arp 66:51:4A:3C:5D:31
          http_access deny bad_mac
          這句說明阻止區域網內mac地址為66:51:4A:3C:5D:31的用戶不能訪問外網
          acl bad_ip src172.19.3.125/32
          http_access deny bad_ip
          說明代理伺服器組織ip為172.19.3.125訪問網路
          acl mmxfile urlpath_regex .exe$ .rar$ .rm$ .wmv$ .mp3$
          http_access deny mmxfile
          這句說明阻止區域網內下載後綴為exe ,rar,rm,wmv,mp3的軟體
          如果想禁止對某個IP地址的訪問,如202.118.2.182,可以用dst來控制,代碼如下
          acl badaddr dst 202.118.2.182
          http_access deny badaddr
          在這句話中dst也可以是域名,由Squid查詢DNS伺服器將其轉換為IP。
          或者為了保證高級用戶的帶寬,希望每個用戶的併發連接不能太多,以免影響他人,也可以通過Squid控制,代碼如下:
acl conncount maxconn 3
http_access deny conncount normal
http_access allow normal
這樣,普通用戶在某個固定時刻只能同時發起三個連接,從第四個開始,連接將被拒絕。
          acl worktime time MTWSF 8:00-12:00 2:00-6:00
          http_access allow worktime
          這句說明代理伺服器允許每周一到周五的上午8:00-12:00和2:00-6:00能夠訪問網路,其它時間不能訪問網路
          acl normal src 172.19.3.0/255.255.254.0
          http_access allow normal
          這句說明代理伺服器所允許的網段為172.19.3.0,其它ip地址不能訪問網路,類似n下設置:
      
        當然,以上設置並沒有把代理伺服器完全解釋明白,還有許多沒有介紹,但有一部分不需要過多的介紹,只要保持默認即可,例如:網路介面。Squid緩存的文件系統,位置和緩存策略。我們還有許多squid的功能沒有介紹例如它的認證功能,它含有mysql,ncsa, ldap,smaba認證,下面我就介紹一下NCSA認證:
         用戶/密碼認證為Squid管理提供了更多便利,最常用的認證方式是NCSA。從Squid 2.版本開始,NCSA認證包含在了basic中,而非以前單獨的認證模塊,因此我們不必從網上下載了,但我們在編譯安裝apache時必須注意一些問題
(1) 在編譯安裝路徑是必須寫入以下兩句
#--enable-auth="basic" --enable-basic-auth-helpers="NCSA"
(2) 在確定好安裝路徑后,必須寫make all,而不能寫make ,否則就不能在squid-3.0.PRE4 /helpers/basic_auth/NCSA/目錄中產生ncsa-auth
      在安裝后我們把ncsa-auth拷貝到用戶可執行的目錄中,如/usr/local/squid/bin中,然後我們利用apache的密碼管理程序htpasswd產生用戶名/密碼對應的文件,就像以下幾句:
        #cd /usr/local/apache/bin/
        #./htpassswd -c /usr/local/squid/etc/password ljz
        Newpasswd:111111
        Secondpasswd:111111
        在輸入兩遍密碼后就能在/usr/local/squid/etc/password文件中產生與用戶ljz相對應的密碼,如果以後需要添加用戶,把上面的命令去掉-c參數再運行即可。
        下面我們修改一下squid.conf,在squid.conf中添加以下幾句:
           auth_param basic program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/password
           auth_param basic realm My Proxy Caching Domain
           acl normal proxy_auth REQUIRED
http_access allow normal
           http_access deny all
    然後存檔退出
        注意:以上幾句必須寫在一起,否則就不能達到認證的目的
        當我們重起squid代理伺服器后,伺服器就能工作了,此時就是一個完整的帶有認證的代理伺服器了。
       在客戶端將代理設置成squid代理伺服器的ip後上網時,就出現一個需要輸入用戶名和密碼的對話框,當客戶輸入用戶名ljz和密碼111111后,就能上網了,否則不能上網。
      注意:每開一個進程就必須輸入一次用戶名和密碼。

  
到此區域網的代理伺服器就設置成功了
《解決方案》

我的安裝筆記 可能有誤差 手寫的

Wget www.squid-chache.org/....tar.bz
Tar jxvf xxx.tar.bz
Cd
./configure –prefix=/usr/local/squid
–enable-dlmalloc
–enable-pthreads
–enable-poll
--disable-internal-dns
–enable-stacktrace
–enable-removal-policies=」heap,lru」
–enable-daley-pools
–enable-storeio=」aufs,coss,diskd,ufs」
–enable-arp-acl
--enable-auth="basic" --enable-basic-auth-helpers="NCSA"
Make
Make install
Cd /usr/local/squid
Mkdir cache
Touch /usr/local/squid/var/log/{cache.log,access.log,store.log}
Chown squid.squid *
Vi etc/squid.conf
Acl our_clients src 192.168.1.0/255.255.255.0
Acl other_clients src 0.0.0.0/0.0.0.0
http_access allow our_clients
http_access deny other_clients
acl badnet url_regex –i sex
http_access deny badnet
acl OverConnLimit maxconn 16
http_access deny OverConnLimit
cache_effective_user squid
cache_effective_group squid
visible_hostname ab67
error_directory /usr/local/squid/share/errors/Simplify_Chinese
access_log none          # should be add later
cache_store_log none      # should be add later

bin/squid –z              # create cache
bin/squid –NCd1          #debug module , u find the 「Ready to serve requests」,that』s ok
/usr/local/squid/sbin/squid   # start
/usr/local/squid/sbin/squid –k shutdown #shutdown
/usr/local/squid/sbin/squid –k reconfig   #reload
《解決方案》

出錯了。。

$ ./squid -z
2008/04/10 12:26:31| parseConfigFile: 'squid.conf' line 1 unrecognized: 'Acl our_clients src 192.168.0.0/255.255.0.0'
2008/04/10 12:26:31| parseConfigFile: 'squid.conf' line 2 unrecognized: 'Acl other_clients src 0.0.0.0/0.0.0.0'
2008/04/10 12:26:31| aclParseAccessLine: ACL name 'our_clients' not found.
FATAL: Bungled squid.conf line 3: http_access allow our_clients
Squid Cache (Version 3.0.RC1): Terminated abnormally.
CPU Usage: 0.006 seconds = 0.004 user + 0.002 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0

[火星人 ] 代理伺服器(squid 3.0)的搭建已經有388次圍觀

http://coctec.com/docs/service/show-post-31256.html