Centos7 下 squid安裝 以及 傳統代理和透明代理的部署
阿新 • • 發佈:2018-07-28
文件大小 cmd 過程 running useradd ply chm nologin 命令 Centos7 下 squid代理服務安裝
代理服務的工作機制
作為應用層的代理服務軟件, Squid主要提供緩存加速和應用層過濾控制的功能。
當客戶機通過代理來請求Web頁面時,指定的代理服務器會先檢查自己的緩存,
如果緩存中已經有客戶機需要訪問的頁面,則直接將緩存中的頁面內容反饋給客戶機
如果緩存中沒有客戶機需要訪問的頁面,則由代理服務器向 Internet發送訪問請求,
當獲得返回的Web頁面以後,將網頁數據保存到緩存中並發送給客戶機。
由於客戶機的Web訪問請求實際上是由代理服務器來代替完成的,從而可以隱藏用戶的真實IP地址,起到一定的保護作用。另一方面,代理服務器擔任著類似‘經紀人’的角色,所以有機會針對要訪問的目標,客戶機的地址、訪問的時間段等進行過濾控制
Squid 安裝過程
tar xzvf squid-3.4.6.tar.gz cd squid-3.4.6 ./configure --prefix=/usr/local/squid \ ##安裝目錄 --sysconfdir=/etc \ ##配置文件目錄 --enable-arp-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/ ##更改屬主屬組 vim /etc/squid.conf ## 添加下面兩行 cache_effective_user squid ##指定squid的程序用戶,用來設置初始化,運行時緩存的賬號 cache_effective_group squid ##squid指定賬號的基本組 squid -k parse ##檢查配置文件的語法是否正確 squid -z ##初始化緩存目錄 squid ##啟動squid服務 通過netstat -ntap |grep squid 發現3128端口的進程 squid服務開啟成功 接下來制作squid服務腳本 方便對squid服務的操作 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" in start) netstat -natp | grep squid &> /dev/null if [ $? -eq 0 ] then echo "squid is running" else echo "正在啟動 squid..." $CMD fi ;; stop) $CMD -k kill &> /dev/null rm -rf $PID &> /dev/null ;; status) [ -f $PID ] &> /dev/null if [ $? -eq 0 ] then netstat -natp | grep squid else echo "squid is not running" fi ;; restart) $0 stop &> /dev/null echo "正在關閉 squid..." $0 start &> /dev/null echo "正在啟動 squid..." ;; reload) $CMD -k reconfigure ;; check) $CMD -k parse ;; *) echo "用法:$0{start|stop|status|reload|check|restart}" ;; esac chmod +x squid chkconfig --add squid chkconfig --level 35 squid on 這樣就可以通過squid腳本來啟動停止重載服務了
代理的基本類型
根據實現的方式不同,代理服務可分為傳統代理和透明代理兩種常見的代理服務。
傳統代理:也就是普通的代理服務,首先必須在客戶機的瀏覽器、QQ聊天
工具、下載軟件等程序中手動設置代理服務器的地址和端口,然後才能使用
代理服務來訪問網絡。對於網頁瀏覽器,訪問網站時的域名解析請求也會發
送給指定的代理服務器。
透明代理:提供與傳統代理相同的功能和服務,其區別在於客戶機不需要指定
代理服務器的地址和端口,而是通過默認路由、防火墻策略將Web訪問重定向,
實際上仍然交給代理服務器來處理。重定向的過程對客戶機來說是“透明”的,
用戶甚至並不知道自己在使用代理服務,所以稱為“透明代理”。使用透明代
理時,網頁瀏覽器訪問網站時的域名解析請求將優先發給DNS服務器
傳統代理
vim /etc/squid.conf
http_access allow all ##allow 在deny上面
http_access deny all
http_port 3128
cache_mem 64 MB ##指定緩存功能所使用的內存空間大小,便於保持訪問較頻繁的WEB對象,容量最好為4的倍數,單位為MB,建議設為物理內存的1/4
reply_body_max_size 10 MB ##允許用戶下載的最大文件大小,以字節為單位。默認設置0表示不進行限制
maximum_object_size 4096 KB ##允許保存到緩存空間的最大對象大小,以KB為單位,超過大小限制的文件將不被緩存,而是直接轉發給用戶
iptables -F ##清除防火墻策略
iptables -I INPUT -p tcp --dport 3218 -j ACCEPT ##添加允許策略
service squid reload
squid -k reconfigure ##這兩條命令可以重載服務
在WINDOWS客戶機配置代理服務器
在IE 瀏覽器中
選擇 工具 - internet選項 - 連接 - 局域網設置
配置相應的 代理服務器設置 ,端口為 3128
在LINUX 客戶機中配置代理服務器
vim /etc/profile
HTTP_PROXY=http://192.168.x.x:3128 ##為使用HTTP協議指定代理
HTTPS_PROXY=http://192.168.x.x:3128 ##為使用HTTPS協議指定代理
FTP_PROXY=http://192.168.x.x:3128 ##為使用FTP協議指定代理
NO_PROXY=192.168.x. ##對局域網段不使用代理
export HTTP_PROXY HTTPS_PROXY
FTP_PROXY NO_PROXY
source /etc/profile
透明代理
在LINUX網關上
ens33網卡為內部局域網網關
ens36網卡為外部公網網關
vim /etc/squid.conf
http_port 192.168.x.x:3128 transparent ## 在IP地址上提供透明代理服務
service squid reload 重載服務
iptables -t nat -I PREROUTING -i ens33 -s 192.168.x.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -i ens33 -s 192.168.x.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
iptables -I INPUT -p tcp --dport 3218 -j ACCEPT
## 防火墻做重定向操作,將訪問本機80 443端口的請求重定向到3128端口
Centos7 下 squid安裝 以及 傳統代理和透明代理的部署