Squid是一种在Linux系统下使用的优秀的代理服务器软件。Squid与其他linux代理软件相比下载安装简单,配置简单灵活,支持缓存和多种协议。同时用ipchains+Squid的解决方案,就可以获得通过缓存高性能的同时能够无缝的访问Internet。一次Squid被广泛的应用 。
Squid基础知识
Squid 基本配置
squid的配置文件 /etc/squid/squid.conf 基本配置如下:
http_port 3128 //设置监听的IP与端口号
cache_mem 64 MB //设置内存缓冲的大小
cache_dir ufs /var/spool/squid 2000 16 256 //设置硬盘缓冲大小
cache_effective_user squid //设置缓存的有效用户
cache_effective_group squid //设置缓存的有效用户组
dns_nameservers 192.168.0.254 //设置DNS服务器地址,一般可以不设置,默认使用服务器自己设置的dns
cache_access_log /var/log/squid/access.log //设置访问日志文件
cache_log /var/log/squid/cache.log //设置缓存日志文件
visible_hostname 192.168.0.20 //设置squid主机名称
squid的用户上网控制规则如下:
禁止IP地址为192.168.16.200的客户机上网
acl badip src 192.168.16.200 (/255.255.255.255)
http_access deny badip
禁止子网为192.168.1.0的客户机上网
acl badnet src 192.168.1.0/24
http_access deny badnet
禁止用户方位IP为210.21.118.68的网址
acl badip1 dst 210.21.118.68
http_access deny badnet
禁止访问域名为www.163.com的网站
acl baddomain dstdomain www.163.com
http_access deny baddomain
禁止用户访问域名含有163.com的网站
acl badurl url_regex -i 163.com -i 不区分大小写
http_access deny badurl
禁止用户访问含有sex关键字的url
acl badurl2 url_regex -i sex
http_access deny badurl2
限制IP地址为192.168.16.200 的客户机的并发连接数为5
acl clientip src 192.168.16.200
acl conn5 maxconn5
http_access deny clientip conn5
禁止192.168.2.0 子网的客户机在周一到周五的8:00 18:00上网
acl clientip src 192.168.2.0/255.255.255.0
acl worktime time MTWHF 8;00-20:00
http_access deny clientip worktime
禁止客户下载*.mp3 *.exe *.zip *.rar的文件
acl badfile1 urlpath_regex -i \.mp3$ \.exe$ \.zip$ \.rar$
http_access deny badfile
禁止qq通过squid代理上网
acl qq url_regex -i tencent.com
http_access deny qq
Squid 基本命令
1、初始化你在 squid.conf 里配置的 cache 目录
#squid/sbin/squid -z //第一次启动squid服务时必须输入此命令
如果有错误提示,请检查你的 cache目录的权限。
2、对你的squid.conf 排错,即验证 squid.conf 的 语法和配置。
#squid/sbin/squid -k parse
如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,恭喜,可以尝试启动squid。
3、在前台启动squid,并输出启动过程。
#squid/sbin/squid -N -d1
如果有到 ready to server reques,恭喜,启动成功。
然后 ctrl + c,停止squid,并以后台运行的方式启动它。
4、启动squid在后台运行。
#squid/sbin/squid -s
这时候可以 ps -A 来查看系统进程,可以看到俩个 squid 进程。
5、停止 squid
#squid/sbin/squid -k shutdown
实例
squid的正向代理
实例1
配置squid代理服务器实现IP为192.168.2.100的客户机上网,其中squid服务器的eth0
IP为 192.168.101.135 连接外网 ,eth1 IP 为192.168.2.1 连接内网客户机.
安装squid
[root@mail ~]# mount /dev/cdrom /mnt/cdrom
[root@mail ~]# rpm -ivh /mnt/cdrom/Server/squid-2.6.STABLE21-3.el5.i386.rpm
配置squid 实现简单代理 编辑配置文件 修改如下内容
637 http_access allow all
919 http_port 192.168.2.1:3128
778 reply_body_max_size 1024 allow all
1575 cache_mem 64 MB
2994 visible_hostname proxy.my.com
查看监听地址和端口
[root@mail ~]# netstat -tupln |grep 3128
tcp 0 0 192.168.2.1:3128 0.0.0.0:* LISTEN 6002/(squid)
设置客户机
客户机只需设置IP ,网关,和浏览器的代理服务器的地址和端口
修改IP
设置代理
测试如下:
实例 2
接上一实验 使用squid+iptables 实现透明代理IP为192.168.2.100 的客户机上网
编辑squid配置文档修改如下:
919 http_port 192.168.2.1:3128 transparent
开启转发功能
[root@mail ~]# echo "01" /proc/sys/net/ipv4/ip_forward
01 /proc/sys/net/ipv4/ip_forward
设置iptables 端口重定向和DNS的NAT转换
[root@mail ~]# iptables -t nat -A PREROUTING -s 192.168.2.0/24 -i eht1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
[root@mail ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -p udp --dport 53 -o eth0 -j MASQUERADE
客户机设置
客户机只需设置IP,子网掩码,网关,DNS 对于http使用代理 对于DNS查询使用转发功能
测试
squid的反向代理
实例 3
内网有意web服务器 配置squid代理服务器 实现反向代理以提高web服务器的处理能力. 内网web服务器IP为192.168.2.100 与squid的IP为192.168.2.1 的eth1 相连,eth0 IP为192.168.101.135 连接外网.
配置Apache服务器 实现简单web站点
略
编辑squid 配置文档 ,修改如下:
919 http_port 192.168.101.132:80 vhost
1186 cache_peer 192.168.3.100 parent 80 0 originserver
测试如下:
注释:使用单网卡也可以配置正,反向代理。配置同双网卡。
转载于:https://blog.51cto.com/zyfhlegend/685251