linux 代理缓存服务squid(正向代理(标准、透明)、反向代理)

正向代理模式:让用户通过squid服务程序获取网站页面资源,以及基于访问控制列表(ACL)功能对用户访问网站行为进行限制,在具体服务方式上又分为标准代理模式和透明代理模式。

标准正向代理模式是把网站数据缓存到服务器本地,提高数据资源再次被访问时的效率,但是用户在上网时必须在浏览器等软件中填写代理服务器的IP地址和端口号信息,否则不可以使用服务。

透明正向代理模式的作用与标准正向代理模式相同,区别在于用户无需配置,基本感知不到代理服务器的存在。

反向代理是用多台节点主机反向缓存网站数据,从而加快用户访问速度。

一. 标准正向代理

    1. 在代理服务器添加一块网卡,桥接模式,使得服务器可以上网,ping www.baidu.com

    2. 安装代理缓存服务器squid;yum install squid

    3. 清空防火墙,否则客户端无法使用代理服务器上网。iptables -F; service iptables save;

    4. 重启服务。systemctl restart squid; systemctl enable squid;

    5. 进入客户端主机。仅主机模式按说无法上网,现在设置浏览器,使用标准正向代理模式上网。打开浏览器,internet的话---工具---internet选项----连接----局域网设置----地址192.168.10.10----端口3128

    6. 如果是linux系统,使用firfox浏览器,edit---proference----advanced-----network----setting

    7. 设置完成后,客户端就可以使用服务器代理上网了。

    8. 因为squid默认使用3128、3401、4827等端口号,所以并不安全,如果想隐藏的话,可以在主配置文件中修改vim /etc/squid/squid.conf; 参数http_port 10000,保存退出后重启服务,在客户端浏览器再修改一下配置即可生效使用。

 

二. ACL访问控制

ACL是由多个策略组成的,策略匹配规则和防火墙类似,自上而下匹配。

1. 禁止特定IP客户端使用代理服务器

    1.1 修改配置文件 vim /etc/squid/squid.conf 在30行左右添加

          acl client src 192.168.10.20  # client只是一个别名

          http_access allow client        # 只允许client使用代理

          http_access deny all             # 禁止所有的情况

    1.2 重启squid服务 systemctl restart squid

    1.3 切换到客户端,修改IP地址为20,记得重启网卡服务,即可上网了。

2. 禁止网址中包含关键字的网站

    2.1 与上一节实验唯一不同的地方就是配置文件的内容

          acl deny_keyword url_regex -i linux    # 参数-i表示关键字linux,没有此参数后接具体网址

          http_access deny deny_keyword       # 表示禁止以上的关键字别名

3. 禁止具体网址

    3.1 修改配置文件内容:

          acl deny_url url_regex http://www.baidu.com

          http_access deny deny_url

4. 禁止下载带有某些后缀的文件

    4.1 修改配置文件内容

        acl badfile urlpath_regex -i \.rar$ \.avi$

        http_access deny badfile

三. 透明正向代理

  1. 通过配置firewall-config的方式

1.1 客户端设置网管为代理服务器IP地址,DNS使用8.8.8.8和114.114.114.114

1.2 firewall-config打开配置,勾选zones----Masquerading----Masquerade zones选项。

1.3 切换到客户端主机,直接可以上网,这种配置方法非常简单。

    2. 通过纯命令行的iptables来配置

2.1 第一步和1.1一样。

2.2 如果想上外网,首先应该知道对方网站的IP地址,这就通过DNS地址解析服务

# 通过iptables实现DNS地址解析服务53端口数据转发功能
iptables -t nat -A POSTROUTING -p udp -dport 53 -o eno33554968 -j MASQUERADE
# 允许squid服务转发ipv4数据包
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf 
#使参数立即生效
sysctl -p

 2.3 现在安装squid服务 yum install squid

2.4 编辑服务配置文件

59 http_port 3128 transparent
62 chache_dir ufs ...

2.5 检查主配置文件是否有错 squid -k parse

2.6 初始化透明正向代理服务 squid -z

2.7 重启服务 systemctl restart squid

2.8 SNAT数据转发功能,SNAT技术其实就是ip转化技术。在这里使用iptables将客户机对网站80端口的请求全部发送到squid本地服务器3128端口上。

# 数据转发端口映射
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
# 地址伪装,10段的地址统统伪装成192.168.0.103,这是可上网网卡地址
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eno33554968 -j SNAT --to 192.168.0.103
# 最后保存iptables的策略
service iptables save

2.9 切换到客户端,只要客户端网址是10网段的,应该都可以正常上网了

四. 反向代理

反向代理原理是把一部分原本向网站源服务器发起的用户请求交给squid服务器缓存节点来处理。

4.1 首先找一个网站使用域名和IP地址都可以访问,也就是未禁止反向代理功能的网站。我们使用我们自己的服务器去代理他,也就是访问我们自己服务器IP地址和访问他们源网站是一样的页面,以58.247.138.211为例 。

4.2 安装squid服务。

4.3 编辑主配置文件vim /etc/squid/squid.conf

http_port 192.168.0.103:80 vhost

cache_peer 58.247.138.211 parent 80 0 originserver

4.3 重启squid服务,在浏览器输入本地服务器IP地址192.168.0.103也可以访问58.247.138.211的网站。

 

 

 

 

 

 

 

你可能感兴趣的:(linux笔记,linux运维汇总)