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


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

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

 

構建透明代理服務器

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

一台Linux主機作為Internet上的web服務器(CentOS7 192.168.94.22 NAT),啟動httpd服務

一台Linux主機作為局域網網關服務器(CentOS7 192.168.111.11 VMnet3),並構建Squid服務(192.168.94.11 NAT)提供代理服務

一台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 

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

開啟路由轉發

[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

 

測試成功 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM