首页 > 代码库 > 搭建squid代理服务器

搭建squid代理服务器

搭建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



搭建squid代理服务器