搭建squid服务器
安装环境
操作系统: CentOS release 5.2 (Final)
Kernel: 2.6.18-92.el5PAE
软件列表
squid-2.6.STABLE22.tar.gz
软件存放位置
/data/software
安装过程
#/usr/sbin/groupadd squid -g 610
#/usr/sbin/useradd -u 610 -g squid squid
#mkdir /srv/scache
#chmod +w /var/vcache
#chown -R squid.squid /srv/scache
#mkdir /var/log/squid
#chmod +w /var/log/squid
#chown -R squid.squid /var/log/squid
#cd /data/software/pkg
#tar zxvf ../squid-2.6.STABLE22.tar.gz
#cd squid-2.6.STABLE22
#./configure --prefix=/usr/local/squid
#make && make install
编辑Squid配置文件
#vi /usr/local/squid/etc/squid.conf
-------------------------华丽的分割线,以下都是配置文件内容----------------------------
#定义acl项名称
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
acl Safe_ports port 80
acl safeprotocol protocol HTTP
acl test dstdomain .test.com
acl CONNECT method CONNECT
#定义acl规则
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny to_localhost
http_access allow safeprotocol Safe_ports test
http_access deny all
icp_access allow all
#squid监听端口
http_port 80 accel defaultsite=59.151.32.58 vhost
always_direct allow all
#后端服务器
cache_peer 10.10.10.8 parent 80 0 no-query originserver
hierarchy_stoplist cgi-bin ?
#内存cache大小
cache_mem 2048 MB
#内存cache中最大的object大小(超过这个值则不进入内存cache)
maximum_object_size_in_memory 8 KB
#内存cache的替换规则
memory_replacement_policy lru
#硬盘cache的替换规则
cache_replacement_policy lru
#磁盘cache目录(文件类型 cache目录路径 cache目录大小 二级目录个数 每个二级目录下的三级目录个数)
cache_dir ufs /srv/scache 40000 16 256
#磁盘cache中最小的object的大小(低于这个值则不缓存)
minimum_object_size 0 KB
#磁盘cache中最大的object的大小(超过这个值则不缓存)
maximum_object_size 2048 KB
cache_swap_low 90
cache_swap_high 95
#定义日志格式
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %h" "%{User-Agent}>h" %Ss:%Sh
#记录相关日志
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
#日志rotate(24则后缀从.0到.23)
logfile_rotate 24
emulate_httpd_log on
#如果你的URL里面带有?,这两行一定要注销掉
#acl QUERY urlpath_regex cgi-bin \?
#cache deny QUERY
#配置自动更新(关于后面的三个值请参考Squid配置手册)
refresh_pattern -i \.jpg$ 60 80% 1440
refresh_pattern -i \.png$ 60 80% 1440
refresh_pattern -i \.gif$ 60 80% 1440
quick_abort_min 16 KB
quick_abort_max 16 KB
quick_abort_pct 95
request_header_max_size 10 KB
reply_header_max_size 10 KB
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
#相关timeout设置
forward_timeout 4 minutes
connect_timeout 3 minutes
peer_connect_timeout 30 seconds
read_timeout 15 minutes
request_timeout 1 minute
persistent_request_timeout 3 minutes
half_closed_clients off
pconn_timeout 1 minute
#cache管理员邮箱
cache_mgr [email protected]
cache_effective_user squid
cache_effective_group squid
#squid服务器的visible_hostname,此处指定的值显示在Squid响应的Header里面的X-Cache项中
visible_hostname squidserver
coremp_dir /var/log/squid/cache
------------------------华丽的分割线,以上都是配置文件内容-----------------------------
初始化squid缓存目录
#/usr/local/squid/sbin/squid -z
启动squid
#/usr/local/squid/sbin/squid -sD
配置完成以后,最重要最重要的一点,修改Squid服务器的hosts文件,将需要Cache的域名指向到后端的服务器IP上
相关命令
停止squid
/usr/local/squid/sbin/squid -k shutdown
启用新配置
/usr/local/squid/sbin/squid -k reconfig
通过crontab每小时截断/轮循日志
59 * * * * /usr/local/squid/sbin/squid -k rotate
查看squid运行状况
/usr/local/squid/bin/squidclient -p 80 mgr:info
/usr/local/squid/bin/squidclient -p 80 mgr:5min
查看squid内存使用情况
/usr/local/squid/bin/squidclient -p 80 mgr:mem
查看squid磁盘使用情况
/usr/local/squid/bin/squidclient -p 80 mgr:diskd
查看squid已缓存列表(小心使用,可能会导致crash)
/usr/local/squid/bin/squidclient -p 80 mgrbjects
强制更新某个url
/usr/local/squid/bin/squidclient -p 80 -m PURGE http://img.test.com/h/a.jpg
查看squid缓存到内存cache中并返回给访问用户的项
#cat /var/log/squid/access.log | grep TCP_MEM_HIT
查看squid缓存到磁盘cache中并返回给访问用户的项
#cat /usr/local/squid/var/logs/access.log | grep TCP_HIT
查看没被squid缓存住,直接从原始服务器获取并返回给访问用户的项
#cat /usr/local/squid/var/logs/access.log | grep TCP_MISS
② 如何在Linux上用Squid搭建代理服务器
yum install squid
安装配置 /etc/squid/squid.conf 启服务
配置单网卡代理服务器
安装squid代理服务器需要设置Linux主机名FQDN格式并且要保证能够解析
首先运行squid -z进行初始化要修改squid配置文件:/etc/squid/squid.conf
加入条目:
acl mynet 192.168.1.0/24
http_access allow mynet
启服务:service squid start
图形化工具尝试webmin
③ 搭建squid代理服务器流程
1.购买一个服务器:腾讯云全球购 https://curl.qcloud.com/kvN3CHB1
2.安装基本的服务:
安装java服务:yum install java-1.8.0-openjdk* -y
telnet命令: yum install telnet 查看安装效果:rpm -qa telnet
修改root用户密码:passwd
新增:useradd XXX用户 设置密码: passwd XXX
限制root用户远程登陆:
打开/etc/ssh/sshd_config文件,找到PermitRootLogin参数,将yes改为no,不同系统版本可能这个PermitRootLogin参数的位置不一样,不过操作是一样的,都是改为no。
vim /etc/ssh/sshd_config
修改完/etc/ssh/sshd_config记得要重启sshd服务,重启服务之后修改的配置才生效
systemctl restart sshd
3.安装squid
安装:yum install squid
修改配置文件,让squid可以公网访问,并修改默认端口,添加密码:vim /etc/squid/squid.conf
启动:systemctl restart squid
查看日志:tail -f /var/log/squid/access.log
④ 如何在Linux上用Squid搭建代理服务器
squid是所有服务里面最简单的我觉得
以RHEL7为例,它分成了正向代理和反向代理,正向代理里又分“标准正向代理”,“ACL访问控制”以及“透明正向代理”。下面是标准正向代理
16.3 正向代理
16.3.1 标准正向代理
Squid服务程序软件包在正确安装并启动后默认就已经可以为用户提供标准正向代理模式服务了,而不需要单独再去修改配置文件或者其他操作,咱们可以立即在Windows7系统的客户端主机上面打开任意一款浏览器,然后点击Internet选项标签,如图16-4所示:
[root@linuxprobe ~]# systemctl restart squid
[root@linuxprobe ~]# systemctl enable squid
ln -s '/usr/lib/systemd/system/squid.service' '/etc/systemd/system/multi-user.target.wants/squid.service'
用户要想使用Squid服务程序提供的标准正向代理模式服务就必须在浏览器中填写服务器的IP地址以及端口号信息,因此咱们还需要依次点击连接标签后点击局域网设置选项,如图16-5与图16-6所示填写服务器信息后保存退出配置向导。
用户只需要在浏览器中简单的填写配置信息就可以开始享用Squid服务程序提供的代理服务了,此时作为一个网卡为仅主机模式(Hostonly)的虚拟机,开始也奇迹般的能够上网浏览了,这一切都是托代理服务器转发的功劳哦~
如此公开而没有密码验证的代理服务终归觉得不放心,万一有其他人也来“蹭网”咱们的代理服务怎么办呢?Squid服务程序默认的会占用3128、3401与4827等端口号,咱们可以将默认占用的端口号修改成其他值,这样应该能起到一定的保护作用吧~同学们都知道在Linux系统配置服务程序就是在修改该服务的配置文件,因此直接在/etc目录中找到和squid服务程序同名目录中的配置文件,把其中http_port参数后面原有3128修改为10000,这样即是将Squid服务程序的代理服务端口修改成了新值,当然最后不要忘记再重启下服务程序哦~:
[root@linuxprobe ~]# vim /etc/squid/squid.conf
………………省略部分输出信息………………
45 #
46 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
47 #
48
49 # Example rule allowing access from your local networks.
50 # Adapt localnet in the ACL section to list your (internal) IP networks
51 # from where browsing should be allowed
52 http_access allow localnet
53 http_access allow localhost
54
55 # And finally deny all other access to this proxy
56 http_access deny all
57
58 # Squid normally listens to port 3128
59 http_port 10000
60
http_port 10000
………………省略部分输出信息………………
[root@linuxprobe ~]# systemctl restart squid
[root@linuxprobe ~]# systemctl enable squid
ln -s '/usr/lib/systemd/system/squid.service' '/etc/systemd/system/multi-user.target.wants/squid.service'
同学们有没有突然觉得这一幕似曾相识?在前面的第十章10.5.3小节咱们学习过基于端口号来部署httpd服务程序的虚拟主机功能,当时在编辑完配置文件后重启服务程序时被直接提示报错了,虽然现在重启服务程序并没有直接报错,但其实客户并不能使用代理服务呢,SElinux安全子系统认为Squid服务程序使用3128端口号是理所应当的,默认策略规则中也是允许的,但现在却在尝试使用新的10000端口号,这是原本并不属于Squid服务程序应该使用的系统资源,因此咱们需要手动把新的端口号添加到squid服务程序在SElinux域的允许列表中即可:
[root@linuxprobe ~]# semanage port -l | grep -w -i squid_port_t
squid_port_t tcp 3128, 3401, 4827
squid_port_t udp 3401, 4827
[root@linuxprobe ~]# semanage port -a -t squid_port_t -p tcp 10000
[root@linuxprobe ~]# semanage port -l | grep -w -i squid_port_t
squid_port_t tcp 10000, 3128, 3401, 4827
squid_port_t udp 3401, 4827
更多的图文信息以及其他的代理方式你可以看下http://www.linuxprobe.com/chapter-16.html#161这篇,讲的非常详细,相信能解决你的问题
⑤ 如何在linux上用squid搭建代理服务器
linux搭建squid 代理服务器,其实是非常简单的,建议参考《linux就该这样学》,试试吧,就是安装,配置,测试。
[root@linuxprobe ~]# yum install squid
[root@linuxprobe ~]# systemctl restart squid
[root@linuxprobe ~]# systemctl enable squid
测试,这个最简单。试试吧
⑥ 搭建Squid3 密码账号IP代理
上文中,说明了 Squid3 IP Proxy 隐藏原IP ,这里就搭建Squid 3密码账号IP代理进行整理,涉及环境 Ubuntu 18.04。
htpasswd和htdigest工具是用于生成Squid密码的,直接安装命令
安装完成后,使用命令如下所示
创建的密码在/etc/squid/.squid_users里面存储,我们可以再增加一个用户
这里可以“查看”一下刚才创建的2个账号
验证账号密码用这个脚本–防止我们遗忘密码账号
basic_ncsa_auth 配置密码文件路径 /etc/squid/.squid_users
auth_param basic children 5 指明了这里最多开放5个账号
auth_param basic casesensitive off 大小写不明感
acl auth_users proxy_auth xifarm runwulink
开启Squid测试
wget命令为例
这里会报407错误:密码账号没有设置原因。
⑦ 如何在Linux上用Squid搭建代理服务器
可以配置单网卡代理服务器。
安装squid代理服务器之后,需要设置Linux的主机名为FQDN的格式,并且要保证能够解析出来。
首先运行squid -z进行初始化,然后要修改squid的配置文件:/etc/squid/squid.conf
加入如下条目:
acl mynet 192.168.1.0/24
http_access allow mynet
启动服务:service squid start
图形化的工具可以尝试webmin
⑧ 如何在Linux上用Squid搭建代理服务器
安装步骤:
./configure --prefix=/usr/local/squid
make all
sudo make install(因为要拷贝到系统目录,需要root权限,所以sudo了,你也可以root登录执行,我是Ubuntu的系统,所以用sudo,有root权限就行)
检查配置文件:
sudo vi /usr/local/squid/etc/squid.conf
配置项1:
# Squid normally listens to port 3128
http_port 3128
配置项2:
acl localnet src 192.168.0.0/16
http_access allow localnet
配置项3:
# Uncomment and adjust the following to add a disk cache directory.
cache_dir ufs /usr/local/squid/var/cache/squid 100 16 128
cache_mem 32 MB (这一条必须配置)
否则你就会遭遇报错: 2013/10/12 16:16:55 kid1| WARNING cache_mem is larger than total disk cache space!
安装好了以后,系统中新建了一个用户squid,在组中一查,发现属于nobody组的:
cat /etc/passwd|grep squid
cat /etc/group|grep 65534
安装squid的所在目录是:/usr/local/squid
我闲得没事干,直接改了所属用户为squid:nobody
sudo chown -Rf squid:nobody /usr/local/squid
建立cache的时候,对下面目录需要nobody用户权限,这个是网上没有说的很清楚的地方,折腾了我半天:
sudo chown -Rf nobody /usr/local/squid/var/cache/
sudo chown -Rf nobody /usr/local/squid/var/logs/
⑨ 基于Squid和TinyProxy搭建代理集群
架设一台 master 代理主机,由这台机器统筹管理多台子代理机器,这样客户端只需要统一维护一个 master 机器即可。
Squid是一款出色的缓存代理服务器,也用作正向和反向代理,同时支持横向分布式扩展,所以在这里选择squid作为master搭建代理集群
在ubuntu下,squid的安装十分简单,只需要执行下面这个命令即可:
Squid的配置在 /etc/squid/squid.conf 下面,只需要改变下面几个配置即可。
如果要为你的代理服务器设置访问权限(用户名和密码验证),那么添加以下配置:
生成密钥文件:
启动服务:
到此为止, master 机器已经配置好了,接下来在所有的从属机器执行下面命令:
最后,在 master 机器配置集群,在 squid 的配置文件中添加以下配置,注意 name 不能重复:
重启squid服务:
我们统一使用唯一的IP作为代理即可,比如:
通过结合squid和tinyproxy,轻松的搭建一个代理池集群服务,客户端只需要维护一个master地址即可,而不必每次都获取一套新的代理地址。
⑩ 如何在linux上用squid搭建代理服务器
安装步骤:
./configure --prefix=/usr/local/squid
make all
sudo make install(要拷贝系统目录需要root权限所sudoroot登录执行我Ubuntu系统所用sudoroot权限行)
检查配置文件:
sudo vi /usr/local/squid/etc/squid.conf
配置项1:
# Squid normally listens to port 3128
http_port 3128
配置项2:
acl localnet src 192.168.0.0/16
http_access allow localnet
配置项3:
# Uncomment and adjust the following to add a disk cache directory.
cache_dir ufs /usr/local/squid/var/cache/squid 100 16 128
cache_mem 32 MB (条必须配置)
否则遭遇报错: 2013/10/12 16:16:55 kid1| WARNING cache_mem is larger than total disk cache space!
安装系统新建用户squid组查发现属于nobody组:
cat /etc/passwd|grep s