CentOS 7 Squid代理服務器正向代理-透明代理

Squid是Linux系統中最經常使用的一款開源代理服務軟件,主要提供緩存加速和應用層過濾控制的功能,能夠很好的實現HTTP、FTP、DNS查詢以及SSL等應用的緩存代理

透明代理:提供與傳統代理相同的功能和服務,多見於局域網環境,其區別在於客戶機不須要指定代理服務器的地址和端口,而是經過默認路由、防火牆策略將Web訪問重定向,實際上仍然交給代理服務器處理  網頁瀏覽器訪問網站時的域名解析請求會優先發給DNS服務器

 

構建透明代理服務器

基於局域網主機經過Linux網關訪問Internet的環境html

一臺Linux主機做爲Internet上的web服務器(CentOS7 192.168.94.22 NAT),啓動httpd服務linux

一臺Linux主機做爲局域網網關服務器(CentOS7 192.168.111.11 VMnet3),並構建Squid服務(192.168.94.11 NAT)提供代理服務web

一臺windows主機(192.168.111.22 VMnet3)做爲局域網的客戶機,只需正確設置IP地址、默認網關正則表達式

網關服務器添加網卡,內網卡ens37 192.168.111.0/24 ,外網卡ens33 192.168.94.0/24

安裝squid支持透明模式

[root@squid ~]# rz     # 上傳源碼包

[root@squid ~]# tar xf squid-4.2-20180806-r6d8f397.tar.gz 
[root@squid ~]# mv squid-4.2-20180806-r6d8f397 /opt/squid
[root@squid ~]# cd /opt/squid
[root@squid squid]# ./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 -j 4 && make -j 4 install
--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正則表達式

編譯有點慢 , 先配置web服務器
[root@web ~]# yum -y install httpd
[root@web ~]# echo "<h1>Squid-Web1</h1>" > /var/www/html/index.html
[root@web ~]# systemctl start httpd

再配置Windows網絡 IP和內網一個網段 , 網關指定內網網卡IP vim

編譯的很慢 , 先把後續的準備工做作了 , 在squid上再開一個終端 windows

開啓路由轉發瀏覽器

[root@squid squid]# vim /etc/sysctl.conf
# 添加 net.ipv4.ip_forward = 1 
[root@squid squid]# sysctl -p
# 或者臨時開啓
[root@squid squid]# echo "1" > /proc/sys/net/ipv4/ip_forward

 

寫入防火牆nat策略

[root@squit squid]# iptables -F
[root@squit squid]# iptables -F -t nat
[root@squit squid]# iptables -t nat -I PREROUTING -i ens37 -s 192.168.111.0/24 -p tcp --dport 80 -j REDIRECT --to 3129  # 後期配置squid配置文件裏的監聽端口爲3129
[root@squit squid]# iptables -t nat -I PREROUTING -i ens37 -s 192.168.111.0/24 -p tcp --dport 443 -j REDIRECT --to 3129
[root@squit squid]# iptables -I INPUT -p tcp --dport 3219 -j ACCEPT

配置squid配置文件緩存

以前用3.6版本的squid作透明代理 監聽的端口就是IP:3128  這個4.2新版本可能默認監聽端口就是3128因此可能端口衝突 , 可是也沒有提示 , 官方手冊也沒找到具體緣由 , 弄了兩天 , 不是服務起不來就是跑起來了沒效果 , 果斷換端口服務器

 

[root@squid squid]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/
[root@squid squid]# useradd -M -s /sbin/nologin squid [root@squid squid]# chown -R squid.squid /usr/local/squid/var/ [root@squid squid]# vim /etc/squid.conf # 在 http_port 3128 這行的下面添加 http_port 192.168.111.11:3129 transparent cache_mem 64 MB           # 指定緩存功能所使用的內存空間大小,便於保持訪問較頻繁的WEB對象,容量最好爲4的倍數,單位爲MB,建議設爲物理內存的1/4 maximum_object_size 4096 KB    # 容許保存到緩存空間的最大對象大小,以KB爲單位,超過大小限制的文件將不被緩存,而是直接轉發給用戶 # 在 coredump_dir /usr/local/squid/var/cache/squid 這一行上方添加 cache_effective_user squid # 指定程序用戶 cache_effective_group squid # 指定帳號基本組 # 在 http_access deny all 這行上面添加 http_access allow all # 把 cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256 這行的註釋去

 

 

 

 

開啓squid服務網絡

[root@squit squid]# squid -z
[root@squit squid]# squid 
[root@squit squid]# netstat -antup|grep squid
tcp        0      0 192.168.111.11:3129     0.0.0.0:*               LISTEN      49263/(squid-1)          
tcp6       0      0 :::3128                 :::*                    LISTEN      49263/(squid-1)     
udp        0      0 0.0.0.0:55297           0.0.0.0:*                           49263/(squid-1)     
udp6       0      0 :::37642                :::*                                49263/(squid-1)     

測試

查看squid代理服務器日誌

 

查看Web服務器日誌

顯示的是squid服務器的IP , 並不能看到用戶IP

 

測試成功 

相關文章
相關標籤/搜索