squid代理服務器的搭建

軟件環境:squid3.0+iptables
實現網絡的透明代理與反向代理
第一、安裝
    低於3.0的包,與現在目前的有很多參數不一樣。
    yum -y install squid
源碼:
    1、調整內核參數(這是臨時性的,若要永久生效,可以寫在rc.local文件中)
    ulimit -n 顯示
    ulimit -HSn 8192 (改變用戶打開8192個文件)
    vim /etc/sysctl.conf(改變端口號的範圍)
    net.ipv4.ip_local_port_range=1024 61000
    net.ipv4.ip_forward=1    (打開轉發功能)
    sysctl -p
    2、安裝源碼包
    解壓到/usr/src下,進入相關目錄,進行配置編譯安裝。
/usr/local/squid/var/   <---存放日誌文件,磁盤緩存文件,需要佔用大量的磁盤空間。 --localdir=dir安裝參數
--enable-async-io  <---異部比同步快很多,是採用多線程工作,一般設置爲120就可以了。緩存文件存取的機制。
--enable-delay-pools  <--限制帶寬支持
--enable-useragent-log  <--記錄瀏覽器的相關信息
--enable-referer-log    <--引用日誌
--disable-wccp  --disable-wccpv2  <---一些關於路由器信息
--enable-snmp|| --disable-snmp  <---便於監控服務器
--enable-arp-acl  <---可以利用MAC地址進行限制
--enable-htcp    <---多臺squid服務器之間進行溝通
--enable-ssl      <---支持安裝套接字的代理
--enable-basic-auth-helpers="NCSA,multi-domain-NTLM,PAM"   在上網代理的時候驗證
--enable-auth=ntlm,basic
--with-large-files   <--大文件的支持,如果日誌文件超過2G,那麼可能掛掉,若啓用了這項,則不會,但不建議無限制的增大。
--enable-default-err-language="Simaplify_Chinese"
--enable-linux-tproxy  <--加此參數,在正常啓動的時候不會報一個透明代理不支持的警告(不加,不影響運行)

./configure --enable-async-io=120 --enable-delay-pools --enable-useragent-log --enable-referer-log --disable-wccp --disable-wccpv2  --enable-snmp --enable-arp-acl --enable-htcp --enable-ssl  --with-large-files --enable-default-err-language="Simplify_Chinese" --enable-basic-auth-helpers="NCSA,multi-domain-NTLM,PAM"  --enable-auth=ntlm,basic --enable-linux-tproxy

    3、正向代理
    打開路由轉發
    編輯配置文件(rpm):/etc/squid/squid.conf
    源碼包:/usr/local/squid/etc/squid.conf
    http_port 3128 || http_port 172.16.7.6:3128
    cache_mem 8 MB,若專門做代理服務器,沒有其他服務,那麼可以設置成內存的一半以上,如果有其他的服務,那麼不要超過物理內存的1/3。
    cache_dir ufs /usr/local/squid/var/cache 100 16 256(緩存的空間,第一個單位爲M,建議使用一個大一點的分區,來區分開。16在cache下生成16個文件夾,在其他再建立256文件夾)
     cache_store_log /usr/local/squid/var/logs/store.log 記錄緩存了哪些網站
    access_log /usr/local/squid/var/logs/access.log squid(3.0以前的版本參數爲cache_access_log,這個參數是指定存放記錄客戶端的訪問記錄的日誌文件路徑,squid是表示寫日誌時用什麼樣的身份進行寫入)
    cache_effective_user squid,(日誌文件的所有者指定,且要爲/usr/local/squid/var/logs/指定本擁有者)
    cache_effective_group squid(組身份)
    dns_nameservers 172.16.7.6 10.1.1.141(指定代理服務在解析的時候,用的DNS服務器地址,如果是上公網,一定設置一個公網的IP地址)
    visible_hostname station8.uplooking.com(主機名需寫到/etc/hosts和/etc/sysconfig/network中,這樣纔可以確切定位)
    http_access allow all(應用規則,在582行加入,這樣比較集中)
    4、第一次運行squid必須初始化緩存目錄,並確保緩存目錄的權限
    /usr/local/squid/sbin/squid -zX(創建緩存初始化)
    手工創建緩存目錄:mkdir /usr/local/squid/var/cache
            useradd -s /sbin/nologin squid
            chown -R squid:squid /usr/local/squid/var/cache(給緩存目錄和日誌目錄的權限squid用戶)
    5、運行
    /usr/local/squid/sbin/squid -N -d1 (-N運行在前臺,-d1把錯誤信息輸出到屏幕)
---------------------------------------------------------------------------------------------------------   
透明代理
    1.透明代理要設置路由轉發:echo "1" > /proc/sys/net/ipv4/ip_forward
     vim /etc/sysctl.conf    net.ipv4.ip_forwared = 1
    iptables -t nat -A POSTROUTING -p tcp --dport 80 -s 172.16.7.0/24 -o eth1 -j SNAT --to-source 10.1.1.86
    iptables -t nat -A POSTROUTING -p tcp --dport 53 -s 172.16.7.0/24 -o eth1 -j SNAT --to-source 10.1.1.86
    iptables -t nat -A POSTROUTING -p tcp --dport 53 -s 172.16.7.0/24 -o eth1 -j SNAT --to-source 10.1.1.86
    iptables -t nat -A POSTROUTING -p tcp -s 172.16.7.0/24 -j DROP
    設定squid服務器與DNS,由於squid開放了DNS請求,因此可以指定一個外網的DNS服務器。
    2.結合squid做透明代理,增加強大的過濾功能以及緩存功能。
    iptables -t nat -A PRETOUTING -i eth0 -s 172.16.7.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128(將以前的80端口轉發給3128squid服務器來處理)
    3.配置squid服務器
    在3.0的版本上只需要更改以下設置即可:http_port 3128 transparent

    在3.0版本以下的需要更改的設置:http_port 3128
                httpd_accel_port 80
                httpd_accel_host virtual
                httpd_accel_with_proxy on
                httpd_accel_uses_host_header on
------------------------------------------------------------------------------------------------------------
訪問控制列表
    1.定義acl規則:
        acl rule_name

    2.應用acl規則:
        http_access deny|allow rule_name[ rule2 rule3]
-----------------------------------------------------------------
針對以下內容定義規則:
    acl lunch_time time MTWHF 12:00-13:30
    acl class_off  time MTWHF 17:00-20:00
    acl bad_post urlpath_regex -i \.exe$ \.rar$ \.rm$ \.rmvb$ \.avi$ \.mp3$
    acl bad_site url_regex -i sex sexy movie news sport
    acl weeken time SA 00:00-23:59
    acl vip arp 00:1E:90:E5:78:38
    acl bad_list dstdoman "/usr/local/squid/etc/bad_list"
    >>>>>>>>>>>>>>>>>>
    vim /usr/local/squid/etc/bad_list
    .youku.com
    .qq.com
    .mop.com
    .163.com
    <<<<<<<<<<<<<<<<<<
針對以下定義的規則,合理放置:
    http_access allow vip
    http_access deny bad_post
    http_access deny bad_site
    http_access deny bad_list
    http_access allow all lunch_time
    http_access allow all class_off
    http_access allow all weeken
    http_access deny all
        3.只允許在中午休息時間上網:週一至週五中午12:00-13:30分
    4.只允許下午休息時間上網:週一至週五17:00-20:00
    5.禁止下載附件.exe .rar .rm .rmvb .avi .mp3 .mp4
    6.禁止訪問網址中包含如下關鍵字:sex sexy movie news sport
    7.週末全天候開放上網時間,限制依舊。
    8.VIP無限制上網(使用MAC地址過濾)
    9.在黑名單的網站不允許訪問.youku.com .mop.com .qq.com
--------------------------------------------------------------------------------------------
3.0反向代理
    F5調度是在IP網絡層
    vim /usr/local/squid/etc/squid.conf
    http_access allow all
    http_port 80 vhost vport(設置偵聽的端口)
    cache_peer 192.168.1.2 parent 80 0 no-query originserver name=web(局域網真實的WEB服務器,後面跟的是工作端口,0是否打開ICP-port端口,squid與squid通過ICP-port協議來進行共享緩存)
    cache_peer_domain web www.upl.com(2.6不存在此參數)
-----------------------------------------------------------   
3.0以前的版本配置反向代理
http_port 80 <--- squid本身監聽的端口
httpd_accel_port 80 <---原來的真實web監聽的端口
httpd_accel_host 10.1.1.20   <---原來的真實web的ip地址
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
真實web服務器的需要配置網關:
route add default gw 10.1.1.21
在沒有配置DNS的情況下測試
在squid服務器上添加記錄
# vim /etc/hosts
10.1.1.20 www.upl.com
在測試的客戶端機器上也必須寫一條
# vim /etc/hosts
192.168.20.2 www.upl.com
squid -z生成
/sbin/squid -k reconfig(重新啓動)
---------------------------------------------------
Squid安裝設試命令:
1,初始化你在 squid.conf 裏配置的 cache 目錄
#/usr/local/squid/sbin/squid -z     //初始化緩存空間
如果有錯誤提示,請檢查你的 cache目錄的權限。
2,對你的squid.conf 排錯,即驗證 squid.conf 的 語法和配置。
#/usr/local/squid/sbin/squid -k parse
如果squid.conf 有語法或配置錯誤,這裏會返回提示你,如果沒有返回,恭喜,可以嘗試啓動squid。
3,在前臺啓動squid,並輸出啓動過程。
#/usr/local/squid/sbin/squid -N -d1
如果有到 ready to server reques,恭喜,啓動成功。
然後 ctrl + c,停止squid,並以後臺運行的方式啓動它。
4,啓動squid在後臺運行。
#/usr/local/squid/sbin/squid -s
這時候可以 ps -A 來查看系統進程,可以看到倆個 squid 進程。
5,停止 squid
#/usr/local/squid/sbin/squid -k shutdown
這個不用解釋吧。
6,重引導修改過的 squid.conf
#/usr/local/squid/sbin/squid -k reconfigure //載入新的配置文件
這個估計用的時候比較多,當你發現你的配置有不盡你意的時候,可以隨時修改squid.conf,然後別忘記對你的 squid.conf排錯,然後再執行此指令,即可讓squid重新按照你的 squid.conf 來運行。
7./usr/local/squid/sbin/squid -k rotate 輪循日誌
8,把squid添加到系統啓動項
編輯 /etc/rc.d/rc.local
添加如下行: /usr/local/squid/sbin/squid -s
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章