squid网络代理

一、squid简介

Squid 是一个流行的自由软件(GNU 通用公共许可证)的代理服务器和 Web 缓存服务器。Squid 有广泛的用途,最初是网页服务器的前置 cache 服务器缓存相关请求来提高 Web 服务器的速度,然后是共享网络资源而缓存万维网,域名系统和其他网络搜索,接下来是过滤流量帮助网络安全,最后是目前的局域网通过代理上网。Squid 主要设计用于在 Unix 一类系统运行。Squid 的发展历史相当悠久,功能也相当完善,支持FTP、gopher、HTTP和HTTPS协议。

1. squid的功能

(1)代理服务:可以作为代理服务器,接收客户端请求并代理转发请求到目标服务器,能够隐藏客户端的真实IP地址,提高网络安全性。

(2)缓存功能:能够将常用的网络资源缓存到本地,当下次有客户端请求相同的资源时,可以直接从缓存中提供,减少对目标服务器的访问,提高访问速度。

(3)访问控制:可以通过配置文件对客户端的访问进行控制,包括IP地址控制、用户认证、访问限制等,可以有效管理和保护网络资源的访问权限。

(4)日志记录:可以记录访问日志,包括客户端IP地址、请求时间、URL地址等信息,方便网络管理和安全审计。

(5)带宽控制:可以根据配置的规则对流量进行限制和控制,例如限制特定用户或IP地址的带宽使用量,避免网络拥塞和滥用。

(6)加速网站访问:通过将常用的网页内容缓存在本地,Squid可以提高网站的访问速度,减少带宽使用。 总结来说,Squid是一个功能强大的代理缓存服务器,可以通过配置文件进行灵活的设置,满足不同的网络需求。

2. squid代理

代理服务器是一个位于客户端和原始(资源)服务器之间的服务器,为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定目标原始服务器,然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端。正向代理是客户端的代理,隐藏了客户端地址;反向代理是服务器的代理,隐藏了服务器端地址。

Squid代理的类型:

(1)传统代理: 适用于Internet,需在客户机指定代理服务器的地址和端口。

(2)透明代理: 客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将web访问重定向给代理服务器处理。

(3)反向代理: 如果Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端; 否则反向代理服务器将向后台的WEB服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。

Squid透明代理的优点:

(1)无需用户配置:透明代理不需要用户手动配置代理服务器,减少了用户的操作复杂性。

(2)透明性:用户无法察觉到代理服务器的存在,所有的网络请求都会被自动转发,提供了更好的用户体验。

(3)网络安全:透明代理可以拦截和过滤用户的网络请求,提供了一定程度的网络安全保护。

Squid透明代理的缺点:

(1)配置复杂:设置透明代理需要对网络环境进行一定的配置,包括路由器设置、防火墙配置等,相对于普通代理服务器来说,配置更加复杂。

(2)隐私问题:透明代理可以拦截和记录用户的网络请求,可能会涉及到用户隐私的问题,需要谨慎使用。

(3)性能影响:透明代理需要对网络流量进行拦截和转发,可能会对网络性能产生一定的影响,特别是在高负载情况下。

综合Squid透明代理的优缺点,我们决定使用Squid透明代理,克服Squid透明代理的缺点。

二、具体的部署过程

1. 基础环境

本次使用两台机器

一台客户端(单网卡)ens33的ip地址:192.168.0.100,

一台squid代理服务器(双网卡)ens33的IP地址192.168.0.1、ens36的IP地址172.16.0.100;

192.168.0.0/24 网段不能上网,172.16.0.0/24网段可以上网

这样模拟局域网无法上网的情况,而代理服务器多出一个172.16.0.0/24的网卡保证能正常上网;

(1)客户端ens33网络参数

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.0.100

NETMASK=255.255.255.0

GATEWAY=192.168.0.1 #squid代理服务器地址

DNS1=192.168.0.1 #squid代理服务器地址

(2)Squid代理服务器ens33网络参数

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.0.1

(3)Squid代理服务器ens36网络参数

BOOTPROTO=static

ONBOOT=yes

IPADDR=172.16.0.100

NETMASK=255.255.255.0

GATEWAY=172.16.0.2

DNS1=172.16.0.2

2. 安装squid软件

yum -y install squid

3. 访问控制(以下只是举例,具体可以根据需求修改)

在/etc/squid/squid.conf修改内容

(1)禁止访问指定的服务器(ip)

acl baddst dst 180.10.19.11

acl baddst dst 180.10.19.12

http_access deny baddst

(2)禁止指定ip上网

acl badhost src 192.168.0.100

http_access deny badhost

(3)禁止员工区域电脑(192.168.0.100-199)访问淘宝、拼多多

acl staff src 192.168.0.100-192.168.0.199

acl unbus dstdomain .taobao.com .pinduoduo.com

http_access deny staff unbus

(4)禁止访问指定的域名,限制访问淘宝、拼多多

acl baddomain dstdomain .taobao.com .pinduoduo.com

http_access deny baddomain

4. 安全认证

(1)安装密码程序,在squid服务器,cd 到/etc/squid/ 目录下

yum -y install httpd-tools

(2)创建密码文件(htpasswd)

htpasswd -c passwd vec

(3)访问控制列表的设定

/etc/squid/squid.conf添加内容

auth param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd

auth param basic children 5

auth param basic realm You need password

acl authuser proxy_auth REQUIRED

http_access allow authuser

重启squid即可 systemctl restart squid

5. squid透明代理安装

实验步骤:

(1)制作公钥和私钥

进入配置文件目录 cd /etc/squid/

秘钥:openssl genrsa -out s.key

请求文件:openssl req -new -key s.key -out s.csr

公钥(证书):0openssl x509 -req -in s.csr -signkey s.key -out s.crt

(2)编辑squid文件

vim /etc/squid/squid.conf

具体内容

# Squid normally listens to port 3128

#以下几行内容

http_port 3128

http_port 3129 intercept

https_port 3130 ssl-bump cert=/etc/squid/s.crt key=/etc/squid/s.key generate-host-certifica

tes=on dynamic_cert_mem_cache_size=4MB transparent

#以上几号内容

# Uncomment and adjust the following to add a disk cache directory.

(3)生成ssl代理方式的库文件并授予squid权限

[root@localhost squid]# /usr/lib64/squid/ssl_crtd -c -s /var/lib/ssl_db

Initialization SSL db...

Done

[root@localhost squid]# cd /var/lib/

[root@localhost lib]# ls

alternatives dbus initramfs misc plymouth rpm ssl_db tuned

authconfig dhclient logrotate NetworkManager polkit-1 rpm-state stateless vmware

chrony games machines os-prober postfix rsyslog systemd yum

[root@localhost lib]# ls -l ssl_db/

总用量 4

drwxr-xr-x. 2 root root 6 8月 11 14:47 certs

-rw-r--r--. 1 root root 0 8月 11 14:47 index.txt

-rw-r--r--. 1 root root 1 8月 11 14:47 size

[root@localhost lib]# chown squid:squid /var/lib/ssl_db/

(4)确定端口已经开启

默认squid程序端口3128

http代理端口 3129

https代理端口3130

[root@localhost lib]# netstat -ant

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN

tcp 0 0 172.16.0.100:22 172.16.0.1:56158 ESTABLISHED

tcp 0 48 172.16.0.100:22 172.16.0.1:56154 ESTABLISHED

tcp6 0 0 :::22 :::* LISTEN

tcp6 0 0 :::3128 :::* LISTEN

tcp6 0 0 :::3129 :::* LISTEN

tcp6 0 0 ::1:25 :::* LISTEN

tcp6 0 0 :::3130 :::* LISTEN

(5)修改防火墙规则(iptables)
  1. 查看防火墙状态

iptables -L -t nat

iptables -t filter -F //清空表filter防火墙规则

iptables -t nat -F //清空表nat防火墙规则

  1. 第一个规则代理进口 http和https上网的规则

iptables -t nat -A PREROUTING -s 192.168.0.0/24 -i ens33 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3129

## 释义:防火墙是在192.168.0.0/24地址,内网ens33接口访问,将tcp协议转换为tcp协议,将80端口转换为代理服务器的3129端口。

iptables -t nat -A PREROUTING -s 192.168.0.0/24 -i ens33 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3130

  1. 第二个规则代理出口,网络地址转换,转换到上网的网卡ens36

iptables -t nat -A POSTROUTING -o ens36 -j MASQUERADE

(代理服务器可以设置dhcp服务器,自动将客户端分配地址和网关)

(6)dns代理转发

定向转发dns的53端口

iptables -t nat -A PREROUTING -s 192.168.0.0/24 -j DNAT -p udp --dport 53 --to 172.16.0.2

iptables -t nat -A PREROUTING -s 192.168.0.0/24 -j DNAT -p tcp --dport 53 --to 172.16.0.2

## 释义:tcp和udp规则,将内网192.168.0.0地址的的dns转换到外网卡的网关172.16.0.2的dns上面

在squid服务器上面查看dns地址 cat /etc/resolv.conf 这个地址就是172.16.0.2,让这台机器进行域名解析;

(7)内核包转发

echo 1 > /proc/sys/net/ipv4/ip_forward

一键转发,解析结果进行包转发

(8)重启squid服务器

systemctl restart squid

客户端即可访问互联网

三、结论:

(1)局域网的客户端可以通过dhcp服务器进行网络参数的分发,主要是配置squid服务器的squid.conf配置,防火墙规则设置路由转发,即可实现透明代理,客户端无需配置自动连接代理服务器进行上网。

(2)squid还是高性能的缓存服务器,如果一个人想下载一组数据,他请求Squid为他取得这个数据。Squid随之连接到外网服务器并发出请求。然后Squid聚集数据到客户端并同时复制一份。当下一次有人需要同一组数据时,Squid可以简单地从磁盘中读到它,这样数据就很快传输到客户端上。

(3)关于访问日志分析,squid可以集成SARG日志分析工具,采用html格式输出,web页面展示,详细列出了每一位用户访问Internet的站点信息、时间占用信息、排名、连接次数及访问量等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值