SQUID是linux下的代理服务器软件
添加用户
#groupadd squid
#useradd squid -g squid
安装 squid,rpm安装只有缺省功能,如果要自定义还是源码编译吧
#export CFLAGES='-O2 -mcpu=pentium4 -march=pentium4 -mmmx -msse -msse2'
可以根据你的CPU选择相应的参数
GCC-3.1以上可針對CPU最佳化:
Pentium2: -O2 -mcpu=i686 -march=i686 -mmmx
Pentium3: -O2 -mcpu=pentium3 -march=pentium3 -mmmx -msse
Pentium4: -O2 -mcpu=pentium4 -march=pentium4 -mmmx -msse -msse2
#./configure --prefix=/usr/local/squid --enable-gnuregex --enable-async-io=80 --enable-icmp --enable-kill-parent-hack --enable-snmp --disable-ident-lookups --enable-cahce-digests --enable-arp-acl --enable-err-language="Simplify_Chinese" --enable-default-err-languages="Simplify_Chinese" --enable-poll --enable-linux-netfilter --enable-underscore --enable -icap -support
#make
#make install
--prefix=/usr/local/squid :指定软件的安装路径
--enable-gnuregex :由于Squid大量使用字符串处理做各种判断,加入此项能更好的处理。
--enable-async-io=80 :这个主要是设置async模式来运行squid,我的理解是设置用线程来运行squid,如果服务器配置很不错,有1G以上内存,cpu使用SMP的方式的话可以考虑设成160或者更高。如果服务器比较糟糕就根据实际情况设了。另外此项还另cache文件支持aufs
--enable-icmp :加入icmp支持
--enable-kill-parent-hack :关掉suqid的时候,要不要连同父进程一起关掉,这个当然要啦
--enable-snmp :此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid支持SNMP接口。
--disable-ident-lookups :防止系统使用RFC931规定的身份识别方法。
--enable-cahce-digests :加快请求时,检索缓存内容的速度。
--enable-arp-acl :可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗。
--enable-err-language="Simplify_Chinese" 和
--enable-default-err-languages="Simplify_Chinese" :指定出错是显示的错误页面为简体中文
--enable-poll :应启用Poll()函数而不是select()函数,通常而言poll(轮询)比select要好,但configure(脚本程序)已知Poll在某些平台下失效, 若你认为你比configure编译配置脚本程序要聪明的话,可以用这个选项启用Poll。总之就是用这个可以提升性能就是啦。
--enable-linux-netfilter :可以支持透明代理
--enable-underscore :允许解析的URL中出现下划先,因为默认squid会认为带下划线的URL地址是非法的,并拒绝访问该地址。
修改squid.conf
# NETWORK OPTIONS(有关的网络选项)
# -----------------------------------------------------------------------------
http_port 3128 #代理端口
icp_port 3130 #icp端口
# OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM(作用于邻居选择算法的有关选项)
#-----------------------------------------------------------------------------
#禁止缓存
hierarchy_stoplist cgi-bin ?
hierarchy_stoplist -i ^https:\\ ?
acl QUERY urlpath_regex -i cgi-bin \? \.asp \.php \.jsp \.cgi
acl denyssl urlpath_regex -i ^https:\\
no_cache deny QUERY
no_cache deny denyssl
#上面几个就是说遇到URL中有包含cgi-bin和以https:\\开头的都不要缓存,
#还有asp、cgi、php等动态脚本也不要缓存,
#因为这些脚本通常都是动态更新的,这样数据不同步。
#还有https://开通的不缓存是因为一般我们进行电子商务交易,
#例如银行付款等都是采用这个的,如果把信用卡号什么缓存那不是很危险。
# OPTIONS WHICH AFFECT THE CACHE SIZE(定义cache大小的选项)
# -----------------------------------------------------------------------------
cache_mem 8 MB #额外使用内存量,可根据你的系统内存在设定,一般为实际内存的1/3
cache_swap_low 90 #最低缓存百分比
cache_swap_high 95 ##最高缓存百分比,就是上面那个额外内存的使用百分比
maximum_object_size 4096 KB #单个文件最大缓存大小,超过这个大小将不缓存
maximum_object_size_in_memory 8 KB #在内存中单个文件最大缓存大小,超过这个大小将不缓存到内存中
#有DNS正反解所得到的IP存在缓存区的大小,这样可以加快解析速度
ipcache_size 1024
ipcache_low 90
ipcache_high 95
fqdncache_size 1024
# LOGFILE PATHNAMES AND CACHE DIRECTORIES(定义日志文件的路径及cache的目录)
# -----------------------------------------------------------------------------
# ; ; ; ; ; ;
# 那个 aufs 只有在编译的时候加入 --enable-async-io 那个选项才有支持,
# 至于目录所在地与所占用的磁盘大小则请视您的主机情况而定,
# 而后面 dir1, dir2 则是两个次目录的大小,通常 16 256 或 64 64 皆可,
# 一般来说,数字最好是 16 的倍数,据说性能会比较好啦!
cache_dir ufs /usr/local/squid/cache 100 16 256
#日志存放位置
cache_access_log /usr/local/squid/var/logs/access.log
cache_log /usr/local/squid/var/logs/cache.log
# TAG: cache_store_log
cache_store_log /usr/local/squid/var/logs/store.log
# TAG: pid_filename
pid_filename /usr/local/squid/var/logs/squid.pid
# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS(外部支持程序选项)
# -----------------------------------------------------------------------------
#用代理登陆匿名ftp服务选项
# TAG: ftp_user
ftp_user Squid@ #用户名
ftp_passive on #被动模式
#认证
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
#auth_param basic casesensitive off
# OPTIONS FOR TUNING THE CACHE(调整cache的选项)
# -----------------------------------------------------------------------------
# TAG: refresh_pattern Cache更新时间设置
#; ; ; ; ;
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
#上面第一行如果网址开头是 ftp 的话,那么在一天(1440分钟)后,
#如果proxy 再次取用这个档案时,则 cache 内的数据会被更新!
# TIMEOUTS (超时)
# -----------------------------------------------------------------------------
#连接到其他机器的最大尝试时间
connect_timeout 1 minute
#连接到上层代理的超时时间
peer_connect_timeout 30 seconds
#返回超时
request_timeout 2 minutes
#持续连接时间
persistent_request_timeout 1 minute
# ACCESS CONTROLS(访问控制)
# -----------------------------------------------------------------------------
# TAG: acl
#Examples:
#acl myexample dst_as 1241
#acl password proxy_auth REQUIRED
#acl fileupload req_mime_type -i ^multipart/form-data$
#acl javascript rep_mime_type -i ^application/x-javascript$
#
#Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl inside src 192.168.1.0/24 #内部网IP段
acl localmac arp "/usr/local/squid/localmac" #mac地址文件
# TAG: http_access
http_access allow inside #允许inside规则通过
http_access allow localmac #允许localmac里面有登记的mac地址通过
#
#Recommended minimum configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
#
#http_access deny to_localhost
#
# And finally deny all other access to this proxy
http_access deny all
# TAG: http_reply_access
http_reply_access allow all
# TAG: icp_access
#icp_access allow all
# TAG: cache_peer_access
# ADMINISTRATIVE PARAMETERS(管理参数)
# -----------------------------------------------------------------------------
# TAG: cache_mgr
cache_mgr webmaster@localhost #管理员信箱
# TAG: cache_effective_user
cache_effective_user squid #运行squid时的用户
cache_effective_group squid #运行squid时的组
# TAG: visible_hostname
visible_hostname ProxyServer #代理服务器名称
# OPTIONS FOR THE CACHE REGISTRATION SERVICE(cache注册服务选项)
# -----------------------------------------------------------------------------
# HTTPD-ACCELERATOR OPTIONS(HTTPD加速选项)
# -----------------------------------------------------------------------------
#设定透明代理
httpd_accel_host ProxyServer #主机名
httpd_accel_port 80 #透明代理端口
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
# MISCELLANEOUS(杂项)
# -----------------------------------------------------------------------------
# TAG: logfile_rotate
#squid会定期的将日志文件更名并打包。
#比如正在使用的日志文件为access.log,squid会将其更名并打包为 access.log.1.gz;
#过了一定时间后,squid又会将access.log.1.gz更名为access.log.2.gz
#并将当前的日志文件更名并打包为access.log.1.gz,以此循环。
#logfile_rotate指定的数字即为打包并备份的文件的数量,当达到这一数目时,
#squid将删除最老的备份文件。默认值为1 0。如果想手动来进行这些操作,
#可以用logfile_rotate 0来取消自动操作。
logfile_rotate 4
# TAG: forwarded_for on|off
#关闭此项将在访问某些论坛时显示的IP是unknown,
#如果打开则显示的是你client的内网IP
forwarded_for off
#图标文件目录
# icon_directory /usr/local/squid/share/icons
#错误提示文件目录
# error_directory /usr/local/squid/share/errors/Simplify_Chinese
# TAG: snmp_port
# Squid can now serve statistics and status information via SNMP.
# By default it listens to port 3401 on the machine. If you don't
# wish to use SNMP, set this to "0".
#
#Default:
# snmp_port 3401
# TAG: snmp_access
# Allowing or denying access to the SNMP port.
#
# All access to the agent is denied by default.
# usage:
#
# snmp_access allow|deny [!]aclname ...
#
#Example:
# snmp_access allow snmppublic localhost
# snmp_access deny all
#
#Default:
# snmp_access deny all
# DELAY POOL PARAMETERS (all require DELAY_POOLS compilation option)(延时池参数)
# -----------------------------------------------------------------------------
# TAG: coredump_dir
#当squid突然挂掉的时候,或者突然出现什么故障的时候,将squid在内存中的资料写到硬盘中
coredump_dir /usr/local/squid/var/cache
设置iptables支持透明代理
设置squid+iptables支持透明代理前请先设置好NAT,可以使用下面的简单语句
echo "1" >; /proc/sys/net/ipv4/ip_forward #设置转发
/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE #设置nat功能
iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-ports 3128
#将所有80端口的请求都转发到suqid的3128端口上
.启动,关闭squid
a.将cache目录的所有者更改为squid
#chown -R squid:squid /usr/local/squid/cache
b.对cache目录进行初始化
#/usr/local/squid/sbin/squid -z
c.启动squid
/usr/local/squid/bin/RunCache &
d.关闭squid
#/usr/local/squid/sbin/squid -k shutdown
要执行两次才能正常关闭suqid
e.重新读取squid.conf文件
#/usr/local/squid/sbin/squid -k reconfigure
需要执行两次才能重新读取squid.conf文件
squid通过localmac文件来限制访问,把允许的mac地址添加到此文件中
如
00:00:00:00:00
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com