这篇文章给大家聊聊关于squid服务器,以及Linux系统下配置squid代理服务器的过程详解对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
一、Linux系统下配置squid代理服务器的过程详解
简单记录一下Squid透明代理服务器的配置
环境:VirtualBox+ CentOS 6.0+ squid-3.1.4-1.el6.i686
0、检查squid是否默认安装,没有安装的先安装
代码如下:
[root@Slyar~]# rpm-qa squid
squid-3.1.4-1.el6.i686
1、虚拟机添加双网卡,全部设置桥接,配置IP,eth0作为外网,eth1作为内网,注意配置文件里的网卡MAC要和设备匹配!
代码如下:
[root@Slyar~]# vim/etc/sysconfig/work-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT=yes
TYPE=Ether
HWADDR=08:00:27:BC:6A:0D
IPADDR=172.17.1.221
PREFIX=24
GATEWAY=172.17.1.254
DNS1=172.16.5.133
NAME="System eth0"
p[root@Slyar~]# vim/etc/sysconfig/work-scripts/ifcfg-eth1
DEVICE="eth1"
ONBOOT=yes
TYPE=Ether
HWADDR=08:00:27:20:52:B2
IPADDR=192.168.1.254
PREFIX=24
NAME="System eth1"
p[root@Slyar~]#/etc/init.d/work restart#重新启动网卡
配置之后无法上网的,注意用route命令看一下默认路由。建议eth1就不要设置网关了,省的麻烦,当然如果你愿意配置默认路由也没所谓。
2、配置squid及透明模式
代码如下:
[root@Slyar~]# cp/etc/squid/squid.conf/etc/squid/squid.conf.bak
[root@Slyar~]# vim/etc/squid/squid.conf
为了省事,我把下面这行改成 _aess allow all,读者可以自行修改允许范围。
代码如下:
# And finally deny all other aess to this proxy
_aess deny all
切记一定要在配置文件最下方增加下面这条语句,否则squid无法启动!
代码如下:
visible_hostname localhost
如果你要使用透明模式,在端口后面增加关键字"transparent"。
不使用透明模式的话,这行不用改,进行第3步之后可以跳到第7步测试了。
代码如下:
# Squid normally listens to port 3128
_port 3128 transparent
3、启动squid
代码如下:
[root@Slyar~]# service squid restart
4、为透明代理配置iptables,设置转发
为了省事,创建一个shell脚本,开启网卡间流量*,开启NAT,设置DNS转发,设置80端口流量全部转发到3128端*给squid处理。
代码如下:
[root@Slyar~]# vim squid.sh#创建脚本文件
代码如下:
#!/bin/bash
echo"1"/proc/sys//ipv4/ip_forward
modprobe iptable_nat
/sbin/iptables-t nat-A POSTROUTING-j MASQUERADE
iptables-t nat-A PREROUTING-p udp--dport 53-j DNAT--to 172.16.5.133
iptables-t nat-A PREROUTING-i eth1-p tcp-s 192.168.1.0/24--dport 80-j REDIRECT--to-ports 3128
p[root@Slyar~]# chmod o+x squid.sh#给脚本执行权限
[root@Slyar~]#./squid.sh#启动脚本
5、将iptables指定保存到配置文件
代码如下:
[root@Slyar~]# service iptables s*e
6、重新启动iptables
代码如下:
[root@Slyar~]# service iptables restart
7、测试squid透明代理
客户端设置IP:192.168.1.x/24
网关:192.168.1.254
DNS服务器:192.168.1.254
8、打开IE,不用设置代理(因为是透明代理),输入如果能打开就成功。
9、补充非透明代理测试方法:打开IE-工具- Inter选项-连接-局域网设置-代理服务器,设置服务器IP为192.168.1.254,端口3128,确定。
二、squid可以代理多少台机器上网
500台机器上网,使用Rehl 4+squid+iptables透明代理上网
_port 3128
cache_mem 512 M
cache_swap_low 75
cache_swap_high 95
maximum_object_size 1024 KB
cache_dir ufs/usr/local/squid/cache 60000 16 256
cache_aess_log/var/squid/logs/aess.log
cache_log/dev/null
cache_store_log none
acl 1 src 192.168.1.0/24
acl 2 src 192.168.2.0/24
acl 4 src 192.168.4.0/24
acl 5 src 192.168.5.0/24
acl 13 src 192.168.13.0/24
acl 16 src 192.168.16.0/24
# And finally deny all other aess to this proxy
_aess allow localhost
_aess allow 1
_aess allow 2
_aess allow 4
_aess allow 5
_aess allow 13
_aess allow 16
_aess deny all
visible_hostname proxy
d_ael_port 80
d_ael_host virtual
d_ael_with_proxy on
d_ael_uses_host_header on
#acl acl_type_deny urlpath_regex-i\.rm$
#acl acl_type_deny urlpath_regex-i\.mp3$
#acl acl_type_deny urlpath_regex-i\.wma$
#acl acl_type_deny urlpath_regex-i\.asf$
#acl acl_type_deny urlpath_regex-i\.*i$
#acl acl_type_deny urlpath_regex-i\.ram$
#acl acl_type_deny urlpath_regex-i\.mpeg$
#acl acl_type_deny urlpath_regex-i\.torrent$
#禁止以上类型文件IPtables配置:
QUOTE:
#/etc/sysconfig/iptables文件
IPtables配置:
#/etc/sysconfig/iptables文件
#
#=======================开始=======================
#
# mangle段
*mangle
REROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
#
#
# nat段
*nat
REROUTING ACCEPT [0:0]
OSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
#
#为使用 SQUID作“透明代理”而设定!
#开放DNS
#[0:0]-A FORWARD-p udp--dport 53-j ACCEPT
#允许TELNET
#[0:0]-A INPUT-i eth0-s 192.168.16.254-d 192.168.2.253-p tcp--dport 23-j ACCEPT
#没有指定网卡、:
#[0:0]-A PREROUTING-p tcp-m tcp--dport 80-j REDIRECT--to-ports 3128
#指定网卡、:
[0:0]-A PREROUTING-s 192.168.0.0/255.255.0.0-i eth0-p tcp-m tcp--dport 80-j REDIRECT--to-ports 3128
[0:0]-A POSTROUTING-s 192.168.0.0/255.255.0.0-o eth0-j SNAT--to 211.57.143.190
[0:0]-A PREROUTING-i eth0-p tcp-s 192.168.0.0/255.255.0.0--sport 443-j REDIRECT--to-port 3128
#将对于 80、443端口的访问重定向到 3128端口。
#
#这些机器可以走这个机器做网关上 Inter网。
#需要在/etc/sysctl.conf文件里面修改成 .ipv4.ip_forward= 1
#或者 echo 1>/proc/sys//ipv4/ip_forward
#由于利用 SQUID实现了“透明代理”,Masq取消相应的客户。
#若你的公网的 IP是固定的,使用这个语句似乎更好些:
#[0:0]-A POSTROUTING-s 192.168.0.0/255.255.0.0-j SNAT--to 211.57.143.190
COMMIT
#
#
# filter段
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
#
#
#防止IP*:
#所谓的IP*就是指在IP*存在着不可能的IP源或目标。
# eth1是一个与外部Inter相连,而192.168.0.0则是内部网的网络号,
#也就是说,如果有一个包从eth1进入主机,而说自己的源是属于
# 192.168.0.0网络,或者说它的目标是属于这个网络的,那么这显
#然是一种IP*,所以我们使用DROP将这个包丢弃。
#[0:0]-A INPUT-d 192.168.0.0/255.255.0.0-i eth1-j DROP
#[0:0]-A INPUT-s 192.168.0.0/255.255.0.0-i eth1-j DROP
#
#同样的,如果有包要通过eth1向Inter,而且它的源或目标是属于
#网络192.168.0.0,那么显然也是不可能的。我们仍然使用DROP将它丢弃。
[0:0]-A OUTPUT-d 192.168.0.0/255.255.0.0-o eth1-j DROP
[0:0]-A OUTPUT-s 192.168.0.0/255.255.0.0-o eth1-j DROP
#
#防止广播包从IP代理服务器进入局域网:
[0:0]-A INPUT-s 255.255.255.255-i eth0-j DROP
[0:0]-A INPUT-s 224.0.0.0/224.0.0.0-i eth0-j DROP
[0:0]-A INPUT-d 0.0.0.0-i eth0-j DROP
#当包的源是255.255.255.255或目标是0.0.0.0,则说明它是一个
#广播包,当广播包想进入eth0时,我们就应该DENY,丢弃它。而240.0.0.0/3
#则是国际标准的多目广播,当有一个源是属于多目广播的包,
#我们将用DROP策略,丢弃它。
#
#屏蔽 windows xp的 5000端口(这个端口是莫名其妙的!)
[0:0]-A INPUT-p tcp-m tcp--sport 5000-j DROP
[0:0]-A INPUT-p udp-m udp--sport 5000-j DROP
[0:0]-A OUTPUT-p tcp-m tcp--dport 5000-j DROP
[0:0]-A OUTPUT-p udp-m udp--dport 5000-j DROP
#
#防止 Inter网的用户访问 SAMBA服务器:
[0:0]-A INPUT-s 211.57.143.177-i eth1-p tcp-m tcp--dport 137:139-j DROP
[0:0]-A INPUT-s 211.57.143.177-i eth1-p udp-m udp--dport 137:139-j DROP
[0:0]-A INPUT-s 211.57.3.177/255.255.255.240-i eth1-p tcp-m tcp--dport 137:139-j DROP
[0:0]-A INPUT-s 211.57.143.177/255.255.255.240-i eth1-p udp-m udp--dport 137:139-j DROP
[0:0]-A INPUT-p tcp-m tcp--dport 137:139-j DROP
[0:0]-A INPUT-p udp-m udp--dport 137:139-j DROP
#
#允许本地网的用户访问 SAMBA服务器:
[0:0]-A INPUT-s 192.168.0.0/255.255.255.0-i eth0-p tcp-m tcp--dport 137:139-j ACCEPT
[0:0]-A INPUT-s 192.168.0.0/255.255.255.0-i eth0-p udp-m udp--dport 137:139-j ACCEPT
#
#对于本局域网用户不拒绝访问:
[0:0]-A INPUT-s 192.168.0.0/255.255.0.0-i eth0-p tcp-j ACCEPT
[0:0]-A INPUT-s 192.168.0.0/255.255.0.0-i eth0-p udp-j ACCEPT
#
#
[0:0]-A INPUT-i eth1-p udp-m udp--dport 3-j DROP
[0:0]-A INPUT-i eth1-p tcp-m tcp--dport 3-j DROP
[0:0]-A INPUT-i eth1-p tcp-m tcp--dport 111-j DROP
[0:0]-A INPUT-i eth1-p udp-m udp--dport 111-j DROP
#
[0:0]-A INPUT-i eth1-p udp-m udp--dport 587-j DROP
[0:0]-A INPUT-i eth1-p tcp-m tcp--dport 587-j DROP
#
#防止 Inter用户访问 SQUID的 3128端口:
[0:0]-A INPUT-s 211.57.143.177-i eth1-p tcp-m tcp--dport 3128-j DROP
[0:0]-A INPUT-s 192.168.0.0/255.255.0.0-i eth0-p tcp-m tcp--dport 3128-j ACCEPT
[0:0]-A INPUT-s 211.57.143.177/255.255.255.240-i eth1-p tcp-m tcp--dport 3128-j ACCEPT
[0:0]-A INPUT-p tcp-m tcp--dport 3128-j DROP
#
#让人家 ping不通我!
[0:0]-A INPUT-i eth1-s 192.168.0.0/16-p icmp-m icmp--icmp-type 8-j ACCEPT
[0:0]-A INPUT-i eth1-s 211.57.143.177/28-p icmp-m icmp--icmp-type 8-j ACCEPT
[0:0]-A INPUT-i eth1-p icmp-m icmp--icmp-type 8-j DROP
#
COMMIT
#=======================结束=======================#=======================结束=======================
三、搭建squid代理服务器
搭建squid代理服务器,让内网用户上网的速度更快更安全
配置防火墙的IP
配置web服务器的IP
因为squid服务器必须要有一个可以解析的域名才可以成功启动服务
安装squid服务软件包
配置squid服务器的侦听端口和允许所有访问
在客户机上填上代理服务器的IP和端口号
测试访问外网服务器
查看squid服务的端口
把代理服务器的模式改成透明模式
在防火墙的nat表里的PREROUTIG链里设置当100.0网段有80端口的请求过来就统统交给eth0(192.168.100.254)的3128处理
开启iptables的路由转发功能
设置100.0网段的流量除了80和443端口流量不走SNAT出私网以外,其他的都走SNAT出私网
因为透明模式是靠网关来和squid服务沟通才能提供代理服务的所以客户机必须指定默认网关
测试访问外网web服务器
更改squid服务器的配置文件,限制用户最多能够在缓存服务器上缓存4M的数据,用户能够的文件最大不能超过10M
创建两个文件一个为80M,一个为120M
现在在客户机测试file1.tgz,因为这个文件是80M的所以不能
现在把file1.gtz改为1M
现在就可以访问了