这篇文章给大家聊聊关于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

squid服务器 Linux系统下配置squid代理服务器的过程详解

# 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

现在就可以访问了