搭建squid代理服务器
准备环境:
客户机:192.168.118.4
squid代理服务器:192.168.118.3(内网IP)1.1.1.1(外网IP)
web服务器:1.1.1.2
实现目标:客户机通过squid代理服务器访问web服务器
一、普通代理
1.首先将各个主机的防火墙关闭,然后实现squid服务器分别与另外两台机器互通
2.给web服务器搭建HTTP服务
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# service httpd start
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# echo "it is work" > index.html
测试能否成功访问
[root@localhost html]# elinks --dump 1.1.1.2
3.squid在服务器上安装squid服务
[root@localhost ~]# yum -y install squid
[root@localhost ~]# service squid start
[root@localhost ~]# cd /etc/squid/
[root@localhost squid]# mv squid.conf squid.conf.bak
[root@localhost squid]# grep -vE "^$|^#" squid.conf.bak > suqid.conf
[root@localhost squid]# vim squid.conf
修改允许所有主机访问
http_access allow all
添加缓存目录和高级缓存目录
cache_dir ufs /var/spool/squid 100 16 256
cache_mem 64 MB
[root@localhost squid]# service squid restart
测试访问web服务器
[root@localhost squid]# elinks --dump 1.1.1.2
4.设置客户机的浏览器
以火狐浏览器为例
首选项—高级—网络—设置—手动配置代理—HTTP代理:192.168.118.3 端口:3128
然后用浏览器访问web服务器1.1.1.2
二、透明代理
1.必须是网络中的网关主机。
2.必须和防火墙服务运行在同一台服务器上。
3.修改squid服务器
[root@localhost squid]# vim /etc/squid/squid.conf
修改
http_port 3128 transparent
[root@localhost squid]# service squid restart
停止 squid:. [确定]
启动 squid:. [确定]
4.修改防火墙规则
[root@localhost squid]# service iptables start
[root@localhost squid]# iptables -t nat -A PREROUTING -s 192.168.118.0/24 -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
查看防火墙规则
[root@localhost squid]# iptables -t nat -L
保存防火墙规则
[root@localhost squid]# service iptables save
5.修改客户机
取消浏览器的代理
设置网关为squid服务器的Ip地址
[root@localhost ~]# route add default gw 192.168.118.3
[root@localhost ~]# route -n
测试访问web服务器
[root@localhost ~]# elinks --dump 1.1.1.2
三、访问控制列表
1.在透明传输的基础上实现
2.修改squid服务器主机的配置文件
3.[root@localhost ~]# vim /etc/squid/squid.conf
添加以下
acl pc22 src 192.168.118.22/32 //声明一个源地址为192.168.118.22的地址
acl no_time time MTWHF 09:00-18:00 //声明一个时间段为周一到周五每天的9点到18点
acl no_nodamin dstdomain baidu.com qq.com //声明两个域
acl no_url urlpath_regex -i \.mp3$ \.mp4$ //声明两个url地址,分别是音乐和电影地址
acl mynet src 192.168.118.0/24 //定义一个网段
http_access deny pc22 //拒绝192.168.118.22访问外网
http_access deny mynet no_time no_nodamin no_url//拒绝192.168.118.0网段在规定时间内访问指定网站和范围内的网址
http_access allow mynet //允许所有该网段所有主机访问
修改
http_access deny all //拒绝所有主机访问
[root@localhost ~]# service squid restart
4.内网的客户端验证
[root@localhost ~]# elinks --dump 1.1.1.2
修改IP地址
[root@localhost ~]# ifconfig eth0 192.168.118.22
[root@localhost ~]# elinks --dump 1.1.1.2
发现访问出错
可以得出squid的acl配置生效
四、反向代理
将内网主机作为web服务器供外网主机访问
1.在内网客户端IP地址为192.168.1.4的主机上配置以下
安装HTTP服务
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
添加以下基于域名虚拟主机
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.tarena.com
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
ServerName bbs.tarena.com
DocumentRoot /bbs
</VirtualHost>
建立虚拟主机主页
[root@localhost ~]# echo "<center><h1>inside-web</h1></center>" > /var/www/html/index.html
[root@localhost ~]# mkdir /bbs
[root@localhost ~]# echo "bbs.tarena.com" > /bbs/index.html
重启服务
[root@localhost ~]# service httpd restart
添加域名解析
[root@localhost bbs]# vim /etc/hosts
添加
192.168.118.4 www.tarena.com www
192.168.118.4 bbs.tarena.com bbs
验证能否正确访问虚拟主机
[root@localhost bbs]# elinks --dump www.tarena.com
inside-web
[root@localhost bbs]# elinks --dump bbs.tarena.com
bbs.tarena.com
2.修改squid主机配置文件
[root@localhost ~]# vim /etc/squid/squid.conf
修改
http_access allow all
http_port 80 vhost
添加
cache_peer 192.168.118.4 parent 80 0 originserver
重启服务
[root@localhost ~]# service squid restart
3.修改外网IP地址为1.1.1.2的主机
添加域名解析
[root@localhost ~]# vim /etc/hosts
添加
1.1.1.1 www.tarena.com www
1.1.1.1 bbs.tarena.com bbs
验证
[root@localhost ~]# elinks --dump www.tarena.com
inside-web
[root@localhost ~]# elinks --dump bbs.tarena.com
bbs.tarena.com
能否成功访问内网主机的web