Squid代理服務器
什麼是squid?
squid是一款代理的軟件,通過緩存的方式爲用戶提供Web訪問加速對用戶的Web訪問進行過濾控制,可以很好地實現HTTP和FTP,以及DNS查詢、SSL等應用的緩存代理,功能十分強大
squid代理作用:緩存加速、隱藏IP地址、應用層過濾ACL
Squid主要組成部分(默認情況)
服務名:squid
主程序:/usr/sbin/squid
主配置文件位置:/etc/squid/squid.conf
監聽tcp端口號:3128
默認訪問日誌文件:/var/log/squid/access.log
正向代理、反向代理以及透明代理的區別和特點:
正向代理:1.通過另一臺主機去訪問目的地址,提供一個更加有效的訪問路徑
2.可以起到一個緩衝的作用,提高網絡的使用效率
3.對外有着隱藏作用
反向代理:1.保證內網的安全,通常將反向代理作爲公網訪問地址
2.負載均衡,通過反向代理服務器來優化網站的負載
透明代理:1.客戶端根本不需要知道代理服務器的存在,多用於NAT轉發中
2.不用設置代理就可以通過代理服務器轉發到其他地址進行訪問,多用於網關防火牆服務器中
squid配置文件常用參數
http_port 3128 \\監聽的端口,還可以只監聽一個IP http_port 192.168.0.1:3128
cache_mem 64MB \\緩存佔內存大小
maximum_object_size 4096KB \\最大緩存塊
reply_body_max_size 1024000 allow all \\限定下載文件大小
access_log /var/log/squid/access.log \\訪問日誌存放的地方
visible_hostname diaodu.renjie.com \\可見的主機名
cache_dir ufs /var/spool/squid 100 16 256
#ufs:緩存數據的存儲格式
#/var/spool/squid 緩存目錄
#100:緩存目錄佔磁盤空間大小(M)
#16:緩存空間一級子目錄個數
#256:緩存空間二級子目錄個數
cache_mgr [email protected] \\定義管理員郵箱
http_access deny all \\訪問控制
傳統代理
1.服務端下載安裝squid並啓動服務
yum -y install squid
service squid start
查看端口使用情況是否啓動成功
2.配置客戶端的網卡使其不能正常上網
3.設置客戶端配置代理(網不通的主機瀏覽器設置代理上網)
設置好代理之後就又可以正常上網
補充:編譯安裝步驟
tar zxf squid-3.4.6.tar.gz
cd squid-3.4.6/
./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-poll --enable-gnuregex
--prefix=/usr/local/squid:安裝目錄
--sysconfdir=/etc:單獨將配置文件修改到其他目錄
--enable-arp-ad:可以在規則中設置爲直接通過客戶端MAC進行管理,防止客戶端使用IP欺騙
--enable-linux-netfilter:使用內核過濾
--enable-linue-tproxy:支持透明模式
--enable-async-io=值:異步I/O,提升存儲性能,相當於—enable-pthreads --enable-storeio=ufs,aufs // --with-pthreads --with-aufs-thread=值
--enable-err-language="Simplify_Chinese":錯誤信息的顯示語言
--enable-underscore:允許URL中有下劃線
--enable-poll:使用Poll()模式,提升性能
--enable-gnuregex:使用GNU正則表達式
useradd -M -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var
路徑優化:ln -s /usr/local/squid/sbin/* /usr/local/sbin/
透明代理
也就是在有防火牆的情況下,在網關服務器上安裝squid實現代理出去上網
代理防火牆網關服務器:eth0:192.168.0.21
eth1:192.168.1.1
web服務器:192.168.0.101
測試機:192.168.1.100
1.下載安裝squid
yum -y install squid
2.在網關服務器上配置iptables防火牆策略
iptables -t nat -I PREROUTING -i eth1 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
3.修改配置文件
vim /etc/squid/squid.conf
http_port 3128 transparent
注意:修改後重啓遇到下圖錯誤
解決方法:
編輯squid.conf配置文件添加
vim /etc/squid/squid.conf
visible_hostname squid.packet-pushers.net
重啓服務
訪問發現可以不用做SNAT策略就可以訪問外面的網頁
反向代理(cdn加速)
服務端:192.168.0.101
代理端:192.168.0.105
客戶端:192.168.0.100
1.服務端安裝好網頁
2.代理端下載安裝squid
yum -y install squid
3.修改配置文件,修改和添加下面參數
vim /etc/squid/squid.conf
http_access allow all
http_port 80 vhost vport
cache_peer 192.168.0.101 parent 80 0 no-query
cache_peer:緩存策略;172.25.254.4(服務端IP,緩存服務端讓客戶端查看); parent:沒有備用的代理;80:服務端端口爲80;0:沒有備用端口;no-query:沒有備用的代理
4.啓動服務用客戶端訪問代理服務器測試是否成功
service squid start
補充:能反向代理的常用軟件還有Varnish和nginx
squid的訪問控制
編輯squid.conf配置文件定義ACL列表
vim /etc/squid/squid.conf
格式:acl 列表名稱 列表類型 列表內容
對已定義的ACL列表進行限制
http_access allow deny 列表名稱
還可以允許多個局域網網段在工作時間上網
acl mylan src 192.168.100.0/24
acl worktime time MTWHF 08:30-17:30
http_access allow mylan worktime
http_access deny all
squid的調度器服務
代理端:192.168.0.105
服務端:192.168.0.101和192.168.0.102
客戶端:192.168.0.100
配置文件修改和添加下面參數
vim /etc/squid/squid.conf
http_access allow all
http_port 80 vhost vport
cache_peer 192.168.0.101 parent 80 0 no-query originserver round-robin name=web1
cache_peer 192.168.0.102 parent 80 0 no-query originserver round-robin name=web2
啓動或重啓服務測試
點擊刷新更換頁面