部署Squid 代理服务器(内含传统、透明代理服务器的配置、ACL访问控制、日志分析、反向代理)
標(biāo)題
- 一、Squid 代理服務(wù)器
- 代理的工作機(jī)制
- Squid 代理的類型
- 二、安裝 Squid 服務(wù)
- 1、編譯安裝 Squid
- 2、修改 Squid 的配置文件
- 3、Squid 的運(yùn)行控制
- 4、創(chuàng)建 Squid 服務(wù)腳本
- 三、構(gòu)建傳統(tǒng)代理服務(wù)器
- 環(huán)境配置
- 四、構(gòu)建透明代理服務(wù)器
- 1、環(huán)境配置
- 2、Squid服務(wù)器配置(192.168.80.10)
- 3、客戶機(jī)測試(12.0.0.100)
- 五、ACL訪問控制
- 1、環(huán)境配置
- 2、Squid配置(192.168.80.10)
- 3、Web1和web2的配置(192.168.80.20、192.168.80.30)
- 4、測試(192.168.80.100)
- 六、Squid日志分析
- 測試
- 添加計(jì)劃任務(wù),每天生成報(bào)告
- 七、反向代理
- 1、環(huán)境配置
- 2、Squid配置(192.168.80.10)
- 3、web1和web2配置(192.168.80.20、192.168.80.30)
- 4、客戶機(jī)的配置
- 5、驗(yàn)證
一、Squid 代理服務(wù)器
Squid 主要提供緩存加速、應(yīng)用層過濾控制的功能。
代理的工作機(jī)制
- 1、代替客戶機(jī)向網(wǎng)站請求數(shù)據(jù),從而可以隱藏用戶的真實(shí)IP地址。
- 2、將獲得的網(wǎng)頁數(shù)據(jù)(靜態(tài) Web 元素)保存到緩存中并發(fā)送給客戶機(jī),以便下次請求相同的數(shù)據(jù)時快速響應(yīng)。
Squid 代理的類型
傳統(tǒng)代理:適用于Internet,需在客戶機(jī)指定代理服務(wù)器的地址和端口。
透明代理:客戶機(jī)不需指定代理服務(wù)器的地址和端口,而是通過默認(rèn)路由、防火墻策略將Web訪問重定向給代理服務(wù)器處理。
反向代理:如果 Squid 反向代理服務(wù)器中緩存了該請求的資源,則將該請求的資源直接返回給客戶端;否則反向代理服務(wù)器將向后臺的 WEB 服務(wù)器請求資源,然后將請求的應(yīng)答返回給客戶端,同時也將該應(yīng)答緩存在本地,供下一個請求者使用。
二、安裝 Squid 服務(wù)
systemctl stop firewalld systemctl disable firewalld setenforce 01、編譯安裝 Squid
yum -y install gcc gcc-c++ make tar zxvf squid-3.5.28.tar.gz -C /opt/ cd /opt/squid-3.5.28./configure --prefix=/usr/local/squid \ --sysconfdir=/etc \ --enable-arp-acl \ --enable-linux-netfilter \ --enable-linux-tproxy \ --enable-async-io=100 \ --enable-err-language="Simplify_Chinese" \ --enable-underscore \ --enable-poll \ --enable-gnuregexmake && make install#--------模塊解釋-------------------------------------------------- --prefix=/usr/local/squid #指定安裝目錄路徑 --sysconfdir=/etc #指定配置文件路徑 --enable-arp-acl #MAC地址管控,防止客戶端使用ip欺騙 --enable-linux-netfilter #使用內(nèi)核過濾 --enable-linux-tproxy #支持透明模式 --enable-async-io=100 #異步1o,提升存儲性能 --enable-err-language="Simplify_Chinese" #錯誤信息的顯示語言 --enable-underscore #允許URL中有下劃線 --disable-poll \ #關(guān)閉默認(rèn)使用的poll 模式 --enable-epoll \ #開啟epoll模式,提升性能 --enable-gnuregex #使用GNU正則表達(dá)式 #----------------------------------------------------------------
2、修改 Squid 的配置文件
vim /etc/squid.conf 56行插入http_access allow all #放在 http_access deny all 之前,允許任意客戶機(jī)使用代理服務(wù) http_access deny all http_port 3128 #用來指定代理服務(wù)監(jiān)聽的地址和端口(默認(rèn)的端口號為 3128) 61行插入cache_effective_user squid #添加,指定程序用戶,用來設(shè)置初始化、運(yùn)行時緩存的賬號,否則啟動不成功 cache_effective_group squid #添加,指定賬號基本組coredump_dir /usr/local/squid/var/cache/squid #指定緩存文件目錄3、Squid 的運(yùn)行控制
檢查配置文件語法是否正確
squid -k parse啟動 Squid
squid -z #-z 選項(xiàng)用來初始化緩存目錄 squid #啟動 squid 服務(wù)netstat -anpt | grep "squid"4、創(chuàng)建 Squid 服務(wù)腳本
vim /etc/init.d/squid #!/bin/bash #chkconfig: 2345 90 25 PID="/usr/local/squid/var/run/squid.pid" CONF="/etc/squid.conf" CMD="/usr/local/squid/sbin/squid"case "$1" instart)netstat -natp | grep squid &> /dev/nullif [ $? -eq 0 ]thenecho "squid is running"elseecho "正在啟動 squid..."$CMDfi;;stop)$CMD -k kill &> /dev/nullrm -rf $PID &> /dev/null;;status)[ -f $PID ] &> /dev/nullif [ $? -eq 0 ]thennetstat -natp | grep squidelseecho "squid is not running"fi;;restart)$0 stop &> /dev/nullecho "正在關(guān)閉 squid..."$0 start &> /dev/nullecho "正在啟動 squid...";;reload)$CMD -k reconfigure;;check)$CMD -k parse;;*)echo "用法:$0{start|stop|status|reload|check|restart}";; esac#2345是默認(rèn)自啟動級別,如是-代表任何級別都不自啟動;90是啟動優(yōu)先級,25是停止優(yōu)先級,優(yōu)先級范圍是0-100,數(shù)字越大,優(yōu)先級越低。
chmod +x /etc/init.d/squid chkconfig --add squid chkconfig --level 35 squid on
三、構(gòu)建傳統(tǒng)代理服務(wù)器
環(huán)境配置
| Squid | CentOS7 | 192.168.172.10 | squid-3.5.28.tar.gz |
| Web1 | CentOS7 | 192.168.172.20 | httpd |
| 客戶機(jī) | Windows | 192.168.172.100 |
Squid(192.168.172.10)
vim /etc/squid.conf ...... http_access allow all http_access deny all http_port 3128 cache_effective_user squid cache_effective_group squid63行插入
cache_mem 64 MB #指定緩存功能所使用的內(nèi)存空間大小,便于保持訪問較頻繁的WEB對象,容量最好為4的倍數(shù),單位為MB,建議設(shè)為物理內(nèi)存的1/4 reply_body_max_size 10 MB #允許用戶下載的最大文件大小,以字節(jié)為單位,當(dāng)下載超過指定大小的Web對象時,瀏覽器的報(bào)錯頁面中會出現(xiàn)“請求或訪問太大”的提示默認(rèn)設(shè)置0表示不進(jìn)行限制 maximum_object_size 4096 KB #允許保存到緩存空間的最大對象大小,以KB為單位,超過大小限制的文件將不被緩存,而是直接轉(zhuǎn)發(fā)給用戶 service squid restart netstat -natp | grep squid生產(chǎn)環(huán)境中還需要修改防火墻規(guī)則
iptables -F iptables -I INPUT -p tcp --dport 3128 -j ACCEPT iptables -L INPUT客戶機(jī)的代理配置(192.168.172.100)
1、配置客戶端IP地址
2、打開瀏覽器,配置代理功能
Web1(192.168.172.20)
systemctl stop firewalld.service setenforce 0 yum -y install httpd systemctl start httpd netstat -natp | grep 80
檢測
在瀏覽器輸入Web服務(wù)器IP地址訪問,查看Web服務(wù)器訪問日志,顯示的是由代理服務(wù)器替客戶機(jī)在訪問
查看Web1訪問日志的新增記錄
tail -f /var/log/httpd/access_log四、構(gòu)建透明代理服務(wù)器
1、環(huán)境配置
| Squid-Server | CentOS7 | ens33:192.168.80.10 、 ens36:12.0.0.1 | squid-3.5.28.tar.gz |
| Web1 | CentOS7 | 192.168.80.20 | httpd |
| 客戶端 | Windows | 12.0.0.100 | —— |
2、Squid服務(wù)器配置(192.168.80.10)
網(wǎng)卡配置
關(guān)機(jī),添加一塊網(wǎng)卡,開機(jī),ifconfig查看新增網(wǎng)卡名稱,編輯網(wǎng)卡配置文件
重啟網(wǎng)卡,并查看
60行修改添加提供內(nèi)網(wǎng)服務(wù)的IP地址,和支持透明代理選項(xiàng) transparent
開啟路由轉(zhuǎn)發(fā)功能
修改防火墻配置規(guī)則
3、客戶機(jī)測試(12.0.0.100)
配置網(wǎng)卡IP
關(guān)閉代理服務(wù)
測試頁面出來了
動態(tài)檢測squid訪問日志(192.168.80.10)
Squid代理服務(wù)器則是檢測到客戶機(jī)訪問目標(biāo)網(wǎng)站
查看web服務(wù)器上的訪問日志(192.168.80.20)
可以看到是代理服務(wù)器外網(wǎng)口12.0.0.1訪問的12.0.0.12
五、ACL訪問控制
在配置文件 squid.conf 中,ACL 訪問控制通過以下兩個步驟來實(shí)現(xiàn):
(1)使用 acl 配置項(xiàng)定義需要控制的條件;
(2)通過 http_access 配置項(xiàng)對已定義的列表做“允許”或“拒絕”訪問的控制。
1.定義訪問控制列表
格式:acl 列表名稱 列表類型 列表內(nèi)容 …
1、環(huán)境配置
| Squid-Server | CentOS7 | 192.168.80.10 | squid-3.5.28.tar.gz |
| Web1 | CentOS7 | 192.168.80.20 | httpd |
| Web2 | CentOS7 | 192.168.80.30 | httpd |
| 客戶機(jī) | Windows | 192.168.80.100 | —— |
2、Squid配置(192.168.80.10)
iptables -F iptables -t nat -Fvim /dest.list 192.168.80.20vim /etc/squid.conf ...... acl destionhost dst "/dest.list" #調(diào)用指定文件中的列表內(nèi)容 ...... http_access deny destionhost #注意,如果是拒絕列表,需要放在http_access allow all前面http_port 3128systemctl restart squid
3、Web1和web2的配置(192.168.80.20、192.168.80.30)
systemctl stop firewalld.service setenforce 0 yum -y install httpd systemctl start httpd4、測試(192.168.80.100)
打開代理服務(wù)
訪問192.168.80.20和192.168.80.30
六、Squid日志分析
squid服務(wù)器(192.168.80.10)
安裝圖像處理軟件包
需要使用在線源,出現(xiàn)報(bào)錯,將網(wǎng)卡配置文件中的dns和網(wǎng)關(guān)修改回原樣即可
vim /etc/sarg/sarg.conf
添加不計(jì)入站點(diǎn)文件,添加的域名將不被顯示在排序中
touch /usr/local/sarg/noreportln -s /usr/local/sarg/bin/sarg /usr/local/bin/sarg --help
運(yùn)行
驗(yàn)證
yum install httpd -y systemctl start httpd
啟動服務(wù)
測試
瀏覽器訪問 http://192.168.80.10/squid-reports ,查看sarg報(bào)告網(wǎng)頁
添加計(jì)劃任務(wù),每天生成報(bào)告
vim /usr/local/sarg/report.sh
#/bin/bash #Get current date TODAY=$(date +%d/%m/%Y) #Get one week ago today YESTERDAY=$(date -d "1 day ago" +%d/%m/%Y) /usr/local/sarg/bin/sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports -z -d $YESTERDAY-$TODAY &> /dev/null exit 0 chmod +x /usr/local/sarg/report.shcrontab -e 0 0 * * * /usr/local/sarg/report.sh七、反向代理
如果 Squid 反向代理服務(wù)器中緩存了該請求的資源,則將該請求的資源直接返回給客戶端;否則反向代理服務(wù)器將向后臺的 Web 服務(wù)器請求資源,然后將請求的應(yīng)答返回給客戶端,同時也將該應(yīng)答緩存在本地,供下一個請求者使用。
工作機(jī)制:
●緩存網(wǎng)頁對象,減少重復(fù)請求
●將互聯(lián)網(wǎng)請求輪訓(xùn)或按權(quán)重分配到內(nèi)網(wǎng)Web服務(wù)器
●代理用戶請求,避免用戶直接訪問Web服務(wù)器,提高安全
1、環(huán)境配置
| Squid-Server | CentOS7 | 192.168.80.10 | squid-3.5.28.tar.gz |
| Web1 | CentOS7 | 192.168.80.20 | httpd |
| Web2 | CentOS7 | 192.168.80.30 | httpd |
| 客戶機(jī) | Windows | 192.168.80.100 | —— |
2、Squid配置(192.168.80.10)
清空防火墻
iptables -F #清空防火墻規(guī)則 iptables -t nat -Fvim /etc/squid.conf ......60行修改,插入
http_port 192.168.80.10:80 accel vhost vport cache_peer 192.168.80.20 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1 cache_peer 192.168.80.30 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2 cache_peer_domain web1 web2 www.chen.comhttp_port 80 accel vhost vport #squid從一個緩存變成了一個Web服務(wù)器使用加速模式,這個時候squid在80端口監(jiān)聽請求,同時和web server的請求端口(vhost vport)綁定,這個時候請求到了squid,squid是不用轉(zhuǎn)發(fā)請求的,而是直接要么從緩存中拿數(shù)據(jù)要么向綁定的端口直接請求數(shù)據(jù)。
| 80 | HTTP_PORT |
| 0 | ICP_PORT |
| no-query | 不做查詢操作,直接獲取數(shù)據(jù) |
| originserver | 指定是源服務(wù)器 |
| round-robin | 指定 squid 通過輪詢方式將請求分發(fā)到其中一臺父節(jié)點(diǎn) |
| max_conn | 指定最大連接數(shù) |
| weight | 指定權(quán)重 |
| name | 設(shè)置別名 |
關(guān)閉httpd服務(wù),在啟動squid服務(wù)。防止端口沖突
systemctl stop httpd systemctl restart squid3、web1和web2配置(192.168.80.20、192.168.80.30)
都有的操作
systemctl stop firewalld.service setenforce 0 yum install -y httpd systemctl start httpdweb1(192.168.80.20)
echo "this is chen" >> /var/www/html/index.htmlweb2(192.168.80.30)
echo "this is qian" >> /var/www/html/index.html4、客戶機(jī)的配置
修改 C:\Windows\System32\drivers\etc\hosts 文件 192.168.80.10 www.chen.com
客戶機(jī)的代理也要打開
5、驗(yàn)證
瀏覽器訪問www.chen.com
總結(jié)
以上是生活随笔為你收集整理的部署Squid 代理服务器(内含传统、透明代理服务器的配置、ACL访问控制、日志分析、反向代理)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存揭秘:8GB内存实际只有4GB?维修
- 下一篇: Rsync下行同步+inotify实时同