1. 程式人生 > >squid傳統代理的另一形式----透明代理

squid傳統代理的另一形式----透明代理

rect 手動 策略 大對象 obj 顯示 process repl 技術分享

構建透明代理

安裝squid支持透明模式

  • squid透明代理本屬於squid標準傳統代理的一部分,本文特意將透明代理單獨寫出,是因為yum安裝的版本中沒有支持透明模式的模塊。
  • 因此,支持透明代理的模塊需要在手動編譯安裝時加入。

tar zxvf squid-3.4.6.tar.gz -C /opt/

cd /opt/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正則表達式

實驗環境

服務器 操作系統 IP地址 使用軟件
squid代理服務器 centos7.3 內192.168.100.1 外12.0.0.1 squid
外網web服務器 centos7.3 12.0.0.12 http
client windows7 192.168.100.100 IE瀏覽器

實驗拓撲展示

技術分享圖片

透明代理配置過程

squid代理服務器設置

1、添加網卡,內網卡ens33,外網卡ens37

  • 網卡添加完成後修改IP,此過程建立在已經安裝好squid緩存代理服務器基礎上。
  • 網卡配置如下圖所示:

技術分享圖片

  • 接著打開路由轉發功能:

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1   //添加打開路由轉發功能

sysctl -p //立即生效

  • 或者這樣打開路由轉發功能:

echo "1" > /proc/sys/net/ipv4/ip_forward

2、配置squid代理服務配置文件

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/squid.conf

# Squid normally listens to port 3128
http_port 192.168.100.1:3128  transparent  //設置為內網端口代理
cache_mem 64 MB                   #指定緩存功能所使用的內存空間大小,便於保持訪問較頻繁的WEB對象,容量最好為4的倍數,單位為MB,建議設為物理內存的1/4
reply_body_max_size 10 MB         #允許用戶下載的最大文件大小,以字節為單位。默認設置0表示不進行限制
maximum_object_size 4096 KB       #允許保存到緩存空間的最大對象大小,以KB為單位,超過大小限制的文件將不被緩存,而是直接轉發給用戶

...
cache_effective_user squid        #添加   指定程序用戶
cache_effective_group squid       #添加   指定賬號基本組
coredump_dir /usr/local/squid/var/cache/squid     #在這一行上方添加

systemctl restart squid.service

3、寫入防火墻nat策略

iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128   //允許http端口服務

iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128   //允許https端口服務

iptables -I INPUT -p tcp --dport 3218 -j ACCEPT  

4、外網web服務器配置

  • 將外網網卡IP設置為12.0.0.12,啟動HTTP服務即可。

5、客戶端訪問

  • 客戶端訪問時不需要通過在瀏覽器中設置代理功能,直接訪問IP地址即可。訪問結果如下:

技術分享圖片

squid傳統代理的另一形式----透明代理