标签:netmask set 正则表达式 返回 repo 聊天工具 反向代理 lse 内核
一、代理服务器(缓存)正向代理:部署在企业内部,实现企业内部客户端访问公网加速(ACL、缓存)
>传统代理:需在客户端指向正向代理服务器的IP及端口,方可正常使用
>透明代理:将正向代理服务器作为网关,客户端只需指明网关地址即可
反向代理:部署在企业内部,实现公网客户端访问内部服务器加速
硬盘:速度慢、缓存时间长
第一种情况:Squid服务器中有缓存
第二种情况:Squid服务器中没有缓存
根据实现方式不同,代理服务可分为传统代理和透明代理两种常见的代理服务
a.传统代理:也就是普通的代理服务,首先必须在客户机的浏览器、QQ聊天工具、下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理来访问网络。对于网页浏览器,访问网站时的域名解析请求也会发给指定的代理服务器
实际应用中,传统代理多见于Internet环境,如为QQ程序使用代理可以隐藏本机真实IP地址,为下载工具使用多个代理可以规避服务器的并发连接限制。而透明代理多见于局域网环境,如在Linux网关中启用透明代理后,局域网主机无需进行额外设置就可以享受更好的上网速度
两台,一台linu作为squid代理及网关(两块网卡,第一块vmnet1、第二块桥接),另一台windows客户端(vmnet1)
1.IP配置
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
/etc/init.d/network restart
2.开启路由功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.13.206
1.编译安装Squid
配置Squid的编译选项时,将安装目录设为/usr/local/squid,其他具体选项根据实际需求来定,配置前可参考“./configure --help”给出的说明
tar -zxvf squid-3.4.6.tar.gz -C /usr/src/
cd /usr/src/squid-3.4.6/
./configure --prefix=/usr/local/squid --sysconfdir=/etc/ --enable-linux-netfilter --enable-arp-acl --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll
选项详解
--prefix=/usr/local/squid #安装目录
--sysconfdir=/etc/ #单独将配置文件修改到其他目录
--enable-arp-acl #可以在规则中设置直接通过客户端MAC进行管理,防止客户端使用IP欺骗
--enable-linux-netfilter #使用内核过滤
--enable-linux-tproxy #支持透明模式
--enable-async-io=值 #异步I/O,提升存储性能
--enable-err-language="Simplify_Chinese" #错误信息的显示语言
--enable-underscore #允许URL中有下划线
--enable-poll #使用Poll()模式,提升性能
--enable-gnuregex #使用GNU正则表达式--enable-gnuregex
make && make install
echo "PATH=$PATH:/usr/local/squid/sbin" >>/etc/profile && source /etc/profile
useradd -M -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var/
2.更改配置
vim /etc/squid.conf
56 http_access allow all #允许所有访问
61 cache_effective_user squid #指定运行用户
62 cache_effective_group squid #指定运行组
63 visible_hostname xueluo.org #指定当前主机名
65 cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256 #启用缓存
68 #coredump_dir /usr/local/squid/var/cache/squid #注释改行
squid -k parse #检测配置文件(/etc/squid.conf)是否有问题
squid -z #创建缓存目录
3.启动服务
vim /etc/init.d/squid
#!/bin/bash
#\ chkconfig: 2345 90 25
#\ config: /etc/squid.conf
#\ pidfile: /usr/local/squid/var/run/squid.pid
#\ Description: Squid - Internet Object Cache
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in
start)
netstat -utpln | grep squid &>/dev/null
if [ $? -eq 0 ]
then
echo "Squid is running"
else
$CMD
fi
;;
stop)
$CMD -k kill &>/dev/null
rm -rf $PID &>/dev/null
;;
status)
[ -f $PID ] &>/dev/null
if [ $? -eq 0 ]
then
netstat -utpln | grep squid
else
echo "Squid is not running"
fi
;;
restart)
$0 stop &>/dev/null
echo "正在关闭Squid..."
$0 start &>/dev/null
echo "正在启动Squid..."
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "用法:{ start | stop | restart | reload | check | status}"
;;
esac
chmod +x /etc/init.d/squid
chkconfig --add squid
/etc/init.d/squid start
netstat -utpln | grep 3128
4.验证
IE-->代理服务器(192.168.1.1 3128) --> 119.75.213.61
tail -f /usr/local/squid/var/logs/access.log //查看代理访问日志
两台,一台linu作为squid代理及网关(两块网卡,第一块vmnet1、第二块桥接),另一台windows客户端(vmnet1)
1.IP配置
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
/etc/init.d/network restart
2.开启路由功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.13.206
1.编译安装Squid
配置Squid的编译选项时,将安装目录设为/usr/local/squid,其他具体选项根据实际需求来定,配置前可参考“./configure --help”给出的说明
tar -zxvf squid-3.4.6.tar.gz -C /usr/src/
cd /usr/src/squid-3.4.6/
./configure --prefix=/usr/local/squid --sysconfdir=/etc/ --enable-linux-netfilter --enable-arp-acl --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll
选项详解
--prefix=/usr/local/squid #安装目录
--sysconfdir=/etc/ #单独将配置文件修改到其他目录
--enable-arp-acl #可以在规则中设置直接通过客户端MAC进行管理,防止客户端使用IP欺骗
--enable-linux-netfilter #使用内核过滤
--enable-linux-tproxy #支持透明模式
--enable-async-io=值 #异步I/O,提升存储性能
--enable-err-language="Simplify_Chinese" #错误信息的显示语言
--enable-underscore #允许URL中有下划线
--enable-poll #使用Poll()模式,提升性能
--enable-gnuregex #使用GNU正则表达式--enable-gnuregex
make && make install
echo "PATH=$PATH:/usr/local/squid/bin:/usr/local/squid/sbin" >>/etc/profile
source /etc/profile
useradd -M -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var/
2.更改配置
vim /etc/squid.conf
56 http_access allow all #允许所有访问
60 http_port 192.168.1.1:3128 transparent
61 cache_effective_user squid #指定运行用户
62 cache_effective_group squid #指定运行组
63 visible_hostname xueluo.org #指定当前主机名
65 cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256 #启用缓存
68 #coredump_dir /usr/local/squid/var/cache/squid #注释改行
iptables -t nat -I PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
squid -k parse #检测配置文件(/etc/squid.conf)是否有问题
squid -z #创建缓存目录
3.启动服务
vim /etc/init.d/squid
#!/bin/bash
#\ chkconfig: 2345 90 25
#\ config: /etc/squid.conf
#\ pidfile: /usr/local/squid/var/run/squid.pid
#\ Description: Squid - Internet Object Cache
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in
start)
netstat -utpln | grep squid &>/dev/null
if [ $? -eq 0 ]
then
echo "Squid is running"
else
$CMD
fi
;;
stop)
$CMD -k kill &>/dev/null
rm -rf $PID &>/dev/null
;;
status)
[ -f $PID ] &>/dev/null
if [ $? -eq 0 ]
then
netstat -utpln | grep squid
else
echo "Squid is not running"
fi
;;
restart)
$0 stop &>/dev/null
echo "正在关闭Squid..."
$0 start &>/dev/null
echo "正在启动Squid..."
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "用法:{ start | stop | restart | reload | check | status}"
;;
esac
chmod +x /etc/init.d/squid
chkconfig --add squid
/etc/init.d/squid start
netstat -utpln | grep 3128
4.测试
IE --> 119.75.213.61
tail -f /usr/local/squid/var/logs/access.log
Squid提供了强大的代理控制机制,通过合理设置ACL(Access Control List,访问控制列表)并进行限制,可以针对源地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤
每一行acl配置可以定义一条访问控制列表,格式如下所示
acl 列表名称 列表类型 列表内容 ...
其中,“列表名称”由管理员自行指定,用来识别控制条件;“控制类型”必须使用Squid预定义的值,对应着不同类别的控制条件;“列表内容”是要控制的具体对象,不同类型的列表所对应的内容也不一样,可以有多个值(以空格分割,为“或”的关系)
列表类型 | 列表内容示例 | 含义/用途 |
---|---|---|
src | 192.168.1.168192.1681.0/24192.168.1.0-192.168.3.0/24 | 源IP地址、网段、IP地址范围 |
dst | 216.163.137.361.135.167.0/24www.playboy.com | 目标IP地址、网段、主机名 |
port | 80 443 8080 20 21 | 目标端口 |
dstdomain | .qq.com .msn.com | 目标域,匹配域内所有站点 |
time | MTWHF 8:30-17:3012:00-13:00AS | 字母表示一星期天中各天的缩写M--MondayT--TuesdayW--WednesdatH--ThursdayF--FridatA--SaturdatS--Sunday |
maxconn | 20 | 每个客户机的并发连接数 |
url_regex | url_regex -i ^rtsp://url_regex -i ^emule:// | 目标资源的URL地址,-i表示忽略大小写 |
urlpath_regex | urlpath_regex -i sex adulturlpath_regex -i .mp3$ | 目标资源的整个URL路径,-i表示忽略大小写 |
[root@localhost ~]# vim /etc/squid.conf
......
acl localhost src 127.0.0.1/255.255.255.255 //源地址为127.0.0.1
acl MYLAN src 192.168.1.0/24 192.168.4.0/24 //客户机网段
acl to_localhost dst 127.0.0.0/8 //目标地址为127.0.0.0/8网段
acl MC20 maxconn 20 //最大并发连接20
acl BlankURL url_regex -i ^rtsp:// ^emule:// //以rtsp://等开头的URL
acl MEDIAFILE urlpath_regex -i .mp3& .mp4& .rmvb& //以.mp3、.mp4等结尾的URL路径
acl WORKTIME time MTWHF 08:30-17:30 //时间为周一至周五08:30-17:30
[root@localhost ~]# mkdir /etc/squid
[root@localhost ~]# cd /etc/squid/
[root@localhost squid]# vim ipblock.list //建立目标IP地址名单
61.135.167.36
125.39.127.25
60.28.14.0/24
[root@localhost squid]# vim dmblock.list //建立目标域地址名单
.qq.com
.msn.com
.live.com
.verycd.com
[root@localhost ~]# vim /etc/squid.conf
......
acl IPBLOCK dst "/etc/squid/ipblock.list" //调用指定文件中的列表内容
acl DMBLOCK dstdomain "/etc/squid/dmblock.list"
定义好各种访问控制列表以后,需要使用http_access配置项来进行控制。必须注意的是,http_access配置行必须放在对应的acl配置行之后。每一行http_access配置确定一条访问控制规则。格式如下所示
http_access allow或deny 列表名 ......
在每一条http_accsess规则中,可以同时包含多个访问控制列表名,各个列表之间以空格分隔,为“与”的关系,表示必须满足所有访问控制列表对应的条件才会进行限制。需要使用取反条件时,可以在访问控制列表前添加“!”符号
[root@localhost ~]# vim /etc/squid.conf
......
http_access deny MYLAN MEDIAFILE //禁止客户机下载MP3、MP4等文件
http_access deny MYLAN IPBLOCK //禁止客户机访问黑名单中的IP地址
http_access deny MYLAN DMBLOCK //禁止客户机访问黑名单中的网站域
http_access deny MYLAN MC20 //客户机的并发连接超过20时将被阻止
http_access allow MYLAN WORKTIME //允许客户机在工作时间上网
http_access deny all //默认禁止所有客户机使用代理
执行访问控制时,Squid将按照各条规则的顺序依次进行检查,如果找到一条相匹配的规则就不再向后搜索(这点与iptables的规则匹配类似)。因此,规则的顺序安排是非常重要的,以下两种默认情况需要我们注意
没有设置任何规则时:Squid服务将拒绝客户端的请求
有规则但找不到相匹配的项:Squid将采用最后一条规则相反的权限,即如果最后一条规则时allow,就拒绝客户机的请求,否则允许该请求
yum -y install gd httpd
yum -y localinstall gd-devel-2.0.35-11.el6.x86_64.rpm
mkdir /var/log/sarg
tar zxvf /root/sarg-2.3.7.tar.gz
cd sarg-2.3.7
./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
//--enable-extraprotection添加额外的安全保护
make && make install
vim /etc/sarg/sarg.conf
access_log /usr/local/squid/var/logs/access.log //第7行
title "Squid user Access reports" //第25行
output_dir /var/www/html/sarg/ //第120行
overwrite_report no //第257行
mail_utility mailx //第289行
topsites_num 100 //第294行
max_elapsed 28800000 //第324行
charset UTF-8 //第434行
topuser_sort_field connect reverse bytes reverse //第184行
user_sort_field connect reverse BYTES reverse //第190行
resolve_ip no //第153行
user_ip no //第178行
weekdays 0-6 //第518行
hours 0-8,9-12,13-23 //第523行
echo "PATH=$PATH:/usr/local/sarg/bin" >>/etc/profile
sarg //执行启动记录一次
/etc/init.d/httpd start
chkconfig httpd on
crontab -e
0 0 * * * /usr/local/sarg/bin/sarg
标签:netmask set 正则表达式 返回 repo 聊天工具 反向代理 lse 内核
原文地址:http://blog.51cto.com/13770206/2163491