日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Squid代理服务器应用及配置(图文详解)

發布時間:2023/12/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Squid代理服务器应用及配置(图文详解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Squid緩存代理

  • Squid代理服務器
    • 代理的工作機制
    • 代理的基本類型
      • 傳統代理
      • 透明代理
      • 反向代理
    • 使用代理的好處
  • 實驗
    • 環境部署
    • squid代理安裝
      • 關閉防護墻
      • 安裝依賴環境
      • 編譯安裝Squid
      • 腳本解釋
      • 創建軟連接及用戶,改組
  • 修改Squid的配置文件
      • squid檢查啟動
    • 編寫Squid服務腳本
      • 服務啟動,檢查
  • 搭建傳統代理
    • 環境部署
    • squid服務器
      • 重啟squid服務
      • 修改防火墻規則
    • Web1配置
      • 關閉防火墻
      • 安裝httpd軟件包
    • 客戶端配置(添加代理)
      • 查看網絡是否通暢
    • 谷歌瀏覽器設置代理
    • 使用win10訪問web1IP
    • squid服務器查看訪問日志信息
    • web1服務器查看訪問日志信息
  • 透明代理
    • 環境部署
    • Squid服務器配置
      • 添加網卡并修改
  • 配置squid服務器
  • 重啟服務并查看
    • 開啟路由轉發
    • 添加防火墻規則
    • web1服務器添加一條靜態路由
    • 訪問web1服務器
  • ACL訪問控制
    • 定義訪問控制列表
    • ACL訪問控制配置方法一
    • 驗證
    • ACL訪問控制配置方法二
      • 啟動對象列表管理
    • 驗證
  • Squid 日志分析
    • 安裝圖像處理軟件包
      • 壓縮包上傳到/opt目錄下解壓編譯安裝
    • 修改sarg配置文件
      • 添加不計入站點文件,添加的域名將不被顯示在排序中
    • sarg命令
    • 驗證
    • 計劃性日志添加
  • 反向代理
    • 工作機制
  • 反向代理實操
    • 環境部署
    • 開啟防火墻、本地關閉HTTPD
    • 修改squid配置文件
      • 代碼解釋
      • 啟動squid服務
    • 后端web2節點服務器設置
      • 節點1 (web1)
      • 節點2(web2)
    • 客戶機的域名映射配置
      • 客戶機的代理配置

Squid代理服務器

Squid主要提供緩存加速、應用層過濾控制的功能。

代理的工作機制

代替客戶機向網站請求數據,從而可以隱藏用戶的真實IP地址。
將獲得的網頁數據(靜態Web元素)保存到緩存中并發送給客戶機,以便下次請求相同的數據時快速響應。

代理的基本類型

傳統代理

適用于Internet,需在客戶機指定代理服務器的地址和端口。

透明代理

客戶機不需指定代理服務器的地址和端口,而是通過默認路由、防火墻策略將Web訪問重定向給代理服務器處理。

反向代理

如果Squid反向代理服務器中緩存了該請求的資源,則將該請求的資源直接返回給客戶端;否則反向代理服務器將
向后臺的WEB服務器請求資源,然后將請求的應答返回給客戶端,同時也將該應答緩存(靜態)在本地,供下一個請求者使用。

使用代理的好處

1.提高Web訪問速度
2.隱藏客戶機的真實IP地址

實驗

環境部署

服務器系統IP軟件包
Squid服務器CENTOS 7192.168.154.30squid-3.5.28.tar.gz
web1服務器CENTOS 7192.168.154.40httpd
web2服務器CENTOS 7192.168.154.50httpd
客戶機Win10Windows 10192.168.154.128

squid代理安裝

關閉防護墻

systemctl stop firewalld systemctl disable firewalld setenforce 0

安裝依賴環境

yum -y install gcc gcc-c++ make

編譯安裝Squid

上傳軟件包squid-3.5.28.tar到/opt目錄下cd /opt tar zxvf squid-3.5.28.tar.gzcd 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-gnuregex make && make install



腳本解釋

./configure-prefix=/usr/local/squid ##安裝目錄 --sysconfdir=/etc/ ##單獨將配置文件修改到/etc目錄下 --enable-arp-acl ##可在ACL中設置通過MAC地址進行管理,防止IP欺騙 --enable-linux-netfilter ##使用內核過濾 --enable-linux-tproxy ##支持透明模式 --enable-async-io=100 ##異步I/O,提升儲存性能,值可修改 --enable-err-language="Simplify Chinese" ##錯誤信息的顯示語言 --enable-underscore ##允許URL中有下劃線 --enable-poll ##使用Poll()模式,提升性能 --enable-gnuregex ##使用GNU正則表達式 make && make install

創建軟連接及用戶,改組

ln -s /usr/local/squid/sbin/* /usr/local/sbin #創建鏈接文件,優化路徑 useradd -M -s /sbin/nologin squid #創建程序用戶、組 chown -R squid:squid /usr/local/squid/var/ #改變目錄屬主

修改Squid的配置文件

vim /etc/squid.conf -56--插入 http_access allow all #放在http_access deny all之前,允許任意客戶機使用代理服務,控制規則自,上而下匹配 http_access deny all http_port 3128 #用來指定代理服務監聽的地址和端口(默認的端口號為3128) 61--插入 cache_effective_user squid #添加,指定程序用戶,用來設置初始化、運行時緩存的賬號,否則啟動不成功 cache_effective_group squid #添加,指定賬號基本組 coredump_dir /usr/local/squid/var/cache/squid #指定緩存文件目錄

###_上述腳本解釋
visible hostname 192.168.226.129
設置squid主機名或者ip地址
cache_mem 64 MB
cache_swap_low 80
cache_swap_high 97
cache_dir_ufs /usr/local/squid/var/cache/squid 512 16 256
##配置硬盤緩存,打開#. 緩存目錄512M,其中一級目錄16個,二級256個
cache_effective_user squid
cache_effective_group squid

squid檢查啟動

squid -k parse ##檢查配置文件squid -k rec ##重新加載配置文件 squid -zX ##初始化緩存目錄 squid ##啟動squid服務 netstat -anpt | grep squid ##確認squid服務處于正常監聽狀態


編寫Squid服務腳本

vim /etc/init.d/squid #!/bin/bash #chkconfig: 35 90 25 #config:/etc/squid.conf #pidfile:/usr/local/squid/var/run/squid.pid # Description: Squid - Internet Object Cache 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 "正在關閉Squid.. . "$0 start &>/dev/nullecho "正在啟動Squid...";; reload)$CMD -k reconfigure;; check)$CMD -k parse;; *) echo "用法:{start|stop|restart|reload|check|status}" esac

服務啟動,檢查

chmod +x /etc/init.d/squid chkconfig --add squid chkconfig squid on chkconfig --list squid #查看squid服務在哪些級別中自啟 service squid restart ##測試正常


搭建傳統代理

案例:如上圖所示,在服務器B.上構建Squid代理服務器,允許客戶機指定squid代理服務器作為Web代理
訪問網站服務器,但禁止通過代理下載超過10MB的文件,超過4MB的文件不進行緩存

環境部署

主機系統IP軟件包
squid-servercentos 7192.168.154.30squid-3.5.28.tar.gz
webcentos 7192.168.154.40httpd
客戶機windows 10192.168.154.128

squid服務器

vim /etc/squid.conf http_access allow all http_access deny all http_port 3128 cache_effective_user squid cache_effective_group squid #63行插入 cache_mem 64 MB ---------------解釋--------------------------- #指定緩存功能所使用的內存空間大小,便于保持訪問較頻繁的WEB對象,容量最好為4的倍數,單位為MB,建議設為物理內存的1/4reply_body_max_size 10 MB ---------------解釋--------------------------- #允許用戶下載的最大文件大小,以字節為單位,當下載超過指定大小的web對象時,瀏覽器的報錯頁面中會出現“請求或訪問太大”的提示默認設置0表示不進行限制maximum_object_size 4096 KB ---------------解釋--------------------------- #允許保存到緩存空間的最大對象大小,以KB為單位,超過大小限制的文件將不被緩存,而是直接轉發給用戶

重啟squid服務

service squid restart 或 systemctl restart squid

修改防火墻規則

iptables -F iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

Web1配置

關閉防火墻

systemctl stop firewalld.service systemctl enable firewalld.service setenforce 0

安裝httpd軟件包

yum -y install httpd systemctl start httpd netstat -natp| grep 80

客戶端配置(添加代理)

查看網絡是否通暢

ping 192.168.154.30 ping 192.168.154.40

谷歌瀏覽器設置代理

設置–》高級–》系統–》打開代理設置–》設置代理

使用win10訪問web1IP

squid服務器查看訪問日志信息

tail -f /usr/local/squid/var/logs/access.log

web1服務器查看訪問日志信息

tail -f /var/log/httpd/access_log

透明代理

環境部署

主機系統ip軟件包
squid服務器centos 7192.168.154.30squid-3.5.28.tar.gz
web服務器centos 7192.168.154.30httpd
客戶機windows 10192.168.154.128

Squid服務器配置

添加網卡并修改

cd /etc/sysconfig/network-scripts/ cp ifcfg-ens33 ifcfg-ens37 vim ifcfg-ens37 systemctl restart network

配置squid服務器

#60行修改添加提供內網服務的IP地址,和支持透明代理選項transparent

vim /etc/squid.conf http_access allow all http_access deny allhttp_port 12.0.0.1:3128 transparent

重啟服務并查看

systemctl restart squid netstat -natp | grep squid

開啟路由轉發

vim /etc/sysctl.conf net.ipv4.ip_forward = 1 或 echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf sysctl -p

添加防火墻規則

將來源為12.0.0.0網段:80/443端口的流量重定向到3128端口

iptables -F iptables -t nat -Fiptables -t nat -I PREROUTING -i ens37 -s 12.0.0.0/24 -p tcp --dport 80 -j REDIRECT --to 3128 iptables -t nat -I PREROUTING -i ens37 -s 12.0.0.0/24 -p tcp --dport 443 -j REDIRECT --to 3128 #若進行重啟,則需要配置以下規則 iptables -I INPUT -p tcp --dport 3128 -j ACCEPTiptables -t nat -nvL iptables -nvL

web1服務器添加一條靜態路由

route add -net 12.0.0.0/24 gw 192.168.154.30

訪問web1服務器

客戶端關閉代理,修改win10地址為12.0.0.0網段

ACL訪問控制

在配置文件squid.conf中,ACL訪問控制通過以下兩個步驟來實現:
使用acl配置項定義需要控制的條件;
通過httpaccess配置項對已定義的列表做"允許”或“拒絕”訪問的控制。

定義訪問控制列表

格式
acl列表 名稱 列表類型 列表內容

acl列表說明
列表名名稱自定義,相當于給acl起個名字
列表類型必須使用squid預定義的值,對應不同類別的控制條件
列表內容是要控制的具體對象,不同類型的列表所對應的內容也不一樣,可以有多個值(以空格為分隔,為“或"的關系)

ACL訪問控制配置方法一

vim /etc/squid.conf acl localhost src 12.0.0.12/24 #源地址為12.0.0.12 acl MYLAN src 12.0.0.0/24 #客戶機網段 acl destinationhost dst 12.0.0.1/32 #目標地址為12.0.0.1 acl MC20 maxconn 20 #最大并發連接20 acl PORT port 21 #目標端口21 acl DMBLOCK dstdomain.qq.com #目標域,匹配域內所有站點 acl BURL url_regex -i ^rtsp://^emule:// #以rtsp://. emule://開頭的URL-i表示忽略大小寫 acl PURL urlpath_regex -i \.mp3$\.mp4$\.rmvb$ #以.mp3、.mp4、.rmvb結尾的URL路徑 acl WORKTIME time MTWHF 08:30-17:30 #時間為周一至周五8:30~17:30,"MTWHF"為每個星期的英文首字母第一條插入: http_access deny localhost

驗證

ACL訪問控制配置方法二

啟動對象列表管理

mkdir /etc/squid vim /etc/squid/dest.list 192.168.154.40/24 #目標服務器IP 192.168.154.0/24 #任意需要的網段 vim /etc/squid.conf acl destinationhost_dst "/etc/squid/dest.list" #調用指定文件中的列表內容 http_access deny (或allow) destinationhost #注意,如果是拒絕列表,需要放在http_access allow all前面 systemctl restart squid



驗證

Squid 日志分析

sarg ( Squid Analysis ReportGenerator),是一款squid日志分析工具,采用HTML格式,詳細列出每一位用戶訪問Internet的站點信息、時間占用信息、排名、連接次數、訪問量等

安裝圖像處理軟件包

yum install -y gd gd-devel pcre-devel mkdir /usr/local/sarg

壓縮包上傳到/opt目錄下解壓編譯安裝

cd /opt tar zxvf sarg-2.3.7.tar.gz cd /opt/sarg-2.3.7 ./configure --prefix=/usr/local/sarg \ --sysconfdir=/etc/sarg \ #配置文件目錄,默認是/usr/loca/etc --enable-extraprotection #額外安全防護./configure --prefix=/usr/local/sarg \ --sysconfdir=/etc/sarg \ --enable-extraprotection make && make install



修改sarg配置文件

vim /etc/sarg/sarg.conf --7--取消注釋 access_log /usr/local/squid/var/logs/access.log #指定訪問日志文件 -- 25--取消注釋 title "Squid User Access Reports" #網頁標題 --120--取消注釋,修改 output_dir /var/www/html/sarg #報告輸出目錄 --178--取消注釋 user_ip no #使用用戶名·顯示 --184--取消注釋,修改 topuser_sort_field connect reverse #top排序中,指定連接次數采用降序排列,升序是normal --190--取消注釋,修改 user_sort_field connect reverse #對于用戶訪問記錄,連接次數按降序排序 --206--取消注釋,修改 exclude_hosts /usr/local/sarg/noreport #指定不計入排序的站點列表的文件 --257--取消注釋 overwrite_report no #同名同日期的日志是否覆蓋 --289--取消注釋,修改 mail_utility mailq.postfix #發送郵件報告命令 --434--取消注釋, 修改 charset UTF-8 #指定字符集UTF-8 -518--取消注釋 weekdays 0-6 #top排行的星期周期 --525--取消注釋 hours 0-23 #top排行的時間周期 --633--取消注釋 www_document root /var/www/html #指定網頁根目錄








添加不計入站點文件,添加的域名將不被顯示在排序中

touch /usr/local/sarg/noreport ln -s /usr/local/sarg/bin/sarg /usr/local/bin/

sarg命令

sarg --help #獲取幫助 #運行 sarg #啟動一次記錄

驗證

yum install httpd -y systemctl start httpd在squid服務器上使用瀏覽器訪問http://192.168.154.30/squid-reports/ #查看sarg報告網頁。 /sarg


計劃性日志添加

date -s #添加計劃任務,執行每天生成報告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/sarg -z -d $YESTERDAY-$TODAY &> /dev/null exit 0chmod +x /usr/local/sarg/report.sh crontab -e 0 0 * * * /usr/1ocal/sarg/report.sh


反向代理

如果Squid反向代理服務器中緩存了該請求的資源,則將該請求的資源直接返回給客戶端;否則反向代理服務器將向后臺的Web服務器請求資源,然后將請求的應答返回給客戶端,同時也將該應答緩存在本地
,供下一個請求者使用。

工作機制

1.緩存網頁對象,減少重復請求
2.將互聯網請求輪詢或按權重分配到內網web服務器
3.代理用戶請求,避免用戶直接訪問Web服務器,提高安全

反向代理實操

環境部署

主機系統ip軟件包
Squid服務器CENTOS 7192.168.154.30squid-3.5.28.tar.gz
web1服務器CENTOS 7192.168.154.40httpd
web2服務器CENTOS 7192.168.154.50httpd
客戶機Windows 10192.168.154.128

開啟防火墻、本地關閉HTTPD

systemctl stop firewalld systemctl stop httpd iptables -F iptables -t nat -F iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

修改squid配置文件

vim /etc/squid.conf 64--修改,插入------- http_port 192.168.154.30:80 accel vhost vport cache_peer 192.168.154.40 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1 cache_peer 192.168.154.50 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2 cache_peer_domain web1 web2 www.sun.com #表示對www.sun.com的請求squid向192.168.154.40192.168.154.5080端口發出請求 http_port 80 accel vhost vport #squid從一個緩存變成了一個Web服務器反向代理加速模式,這個時候squid在80端口監聽請求,同時和web server的請求端口(vhostvport)綁定,這個時候請求到了squid, squid是不用轉發請求的,而是直接要么從緩存中拿數據要么向綁定的端口直接請求數據。

代碼解釋

代碼說明
accel反向代理加速模式
vhost支持域名或主機名來表示代理節點
vport支持IP和端口來表示代理節點
parent代表為父節點,上下關系,非平級關系
80代理內部web服務器的80端口
0沒有使用icp,表示就一臺squid服務器
no-query不做查詢操作,直接獲取數據
oriqinserver指定是源服務器
round-robin指定squid通過輪詢方式將請求分發到其中一臺父節點
max connn指定最大連接數
weight指定權重
name設置別名

啟動squid服務

systemctl stop httpd service squid reload

后端web2節點服務器設置

yum install -y httpd systemctl start httpd

節點1 (web1)

echo "this is web1" >> /var/www/html/index.html

節點2(web2)

echo "this is web2" >> /var/www/html/index.html

客戶機的域名映射配置

修改C:\Windows\System32\drivers\etc\hosts 文件
194.168.154.30 www.sun.com

客戶機的代理配置

打開瀏覽器,工具–>Internet選項–>連接–>局域網設置–>開啟代理服務器(地址: Squid服務器IP地址,端口: 80)
瀏覽器訪問http://www.sun.com

總結

以上是生活随笔為你收集整理的Squid代理服务器应用及配置(图文详解)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。