Squid是什么

Squid是一种用来缓冲Internet数据的软件。它接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://squid.nlanr.net) 并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。

我这里的常用于做服务器的统一出口,把squid作为能够出公网的设备,然后为所有需要出公网的服务器进行代理设置,从而带动内网服务器能够上网,但是我们上网也是仅仅使用公网的yum源以及公网的一些技术资源。

Squid的基本类型

传统代理 也就是普通的代理服务,,必须在客户端的浏览器、QQ聊天工具、下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理服务来访问网络。对于网页浏览器,访问网站时的域名解析请求也会发送给指定的代理服务器。

透明代理 提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将web访问重定向,实际上仍然交给代理服务器来处理。重定向的过程对于客户机来说是“透明”的,用户甚至并不知道自己在使用代理服务,所以称为“透明代理”。

Squid部署

下载地址:http://www.squid-cache.org/Versions/v4/squid-4.8.tar.gz 如果你下载的Squid v3 版本,则任何 C++ 编译器都可以,如果你下载的是Squid v4或者更高版本,那么就需要 C++11 的编译器。

yum install libtool-ltdl-devel libxml2-devel libcap-devel perl gcc autoconf automake make sudo wget
tar xf squid-4.8.tar.gz
cd squid-4.8
./configure --prefix=/usr/local/squid --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll --enable-gnuregex参数解释:
./configure:检查你的系统编译器是否可用
--preifx:指定安装路径
--enable-arp-acl:可以在规则中设置为直接通过客户端MAC进行管理,防止客户端使用IP欺骗
--enable-linux-netfilter:使用内核过滤
--enable-linux-tproxy:支持透明模式
--enable-async-io=100:异步I/O,提升存储性能,相当于 --enable-pthreads   --enable-storeio=ufs,aufs
--enable-err-language="Simplify_Chinese":报错时显示的语音,这里指定为Chinese
--enable-underscore:允许URL中有下划线
--enable-poll:使用Poll()模式,提升性能
--enable-gnuregex:使用GUN正则表达式make && make install
useradd -M -s /sbin/nologin squid
chown -R squid.squid /usr/local/squid/var
ln -s /usr/local/squid/sbin/squid  /usr/local/sbin/

初始化并启动Squid

添加squid运行的用户及组

echo 'cache_effective_user squid' >> /usr/local/squid/etc/squid.conf
echo 'cache_effective_group squid' >> /usr/local/squid/etc/squid.conf

初始化缓存目录

[root@host-10-200-86-163 /]# squid -z
2019/08/08 17:04:40| Created PID file (/usr/local/squid/var/run/squid.pid)
[root@host-10-200-86-163 /]# 2019/08/08 17:04:40 kid1| Set Current Directory to /usr/local/squid/var/cache/squid
2019/08/08 17:04:40 kid1| Creating missing swap directories
2019/08/08 17:04:40 kid1| No cache_dir stores are configured.
2019/08/08 17:04:40| Removing PID file (/usr/local/squid/var/run/squid.pid)

启动Squid

[root@host-10-200-86-163 /]# squid
[root@host-10-200-86-163 /]# ss -anplt | grep 3128
LISTEN     0      128         :::3128                    :::*                   users:(("squid",pid=6304,fd=10)

查看Squid的运行用户

[root@host-10-200-86-163 /]# ps -ef|grep squid
root      6302     1  0 17:05 ?        00:00:00 squid
squid     6304  6302  0 17:05 ?        00:00:00 (squid-1) --kid squid-1
squid     6305  6304  0 17:05 ?        00:00:00 (logfile-daemon) /usr/local/squid/var/logs/access.log
root      6322 30305  0 17:06 pts/7    00:00:00 grep --color=auto squid

创建服务启动脚本

vim /etc/init.d/squid
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/usr/local/squid/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"case "$1" instart)netstat -natp | grep squid &> /dev/nullif [ $? -eq 0 ]thenecho "squid is running"elseecho "正在启动 squid..."$CMDfi;;stop)$CMD -k shutdown &> /dev/null     #这里可以仔细看下rm -rf $PID &> /dev/null;;status)[ -f $PID ] &> /dev/nullif [ $? -eq 0 ]thennetstat -natp | grep squidelseecho "squid is not running"fi;;restart)$0 stop &> /dev/nullecho "正在关闭 squid..."$0 start &> /dev/nullecho "正在启动 squid..."$CMDfi;;stop)$CMD -k shutdown &> /dev/null     #这里可以仔细看下rm -rf $PID &> /dev/null;;status)[ -f $PID ] &> /dev/nullif [ $? -eq 0 ]thennetstat -natp | grep squidelseecho "squid is not running"fi;;restart)$0 stop &> /dev/nullecho "正在关闭 squid..."$0 start &> /dev/nullecho "正在启动 squid...";;reload)$CMD -k reconfigure;;check)$CMD -k parse;;*)echo "用法:$0{start|stop|status|reload|check|restart}";;
esac

加入开机启动

chmod +x /etc/init.d/squid
chkconfig --add squid
chkconfig --level 35 squid on

脚本测试

[root@host-10-200-86-163 init.d]# netstat -anplt | grep squid
[root@host-10-200-86-163 init.d]# service squid start
正在启动 squid...
[root@host-10-200-86-163 init.d]# netstat -anplt | grep squid
tcp6       0      0 :::3128                 :::*                    LISTEN      8260/(squid-1)
[root@host-10-200-86-163 init.d]# service squid stop
[root@host-10-200-86-163 init.d]# netstat -anplt | grep squid

创建传统代理

主要修改下图中所圈出的内容

# And finally deny all other access to this proxy
http_access allow all       #在deny all前添加allow all
http_access deny all# Squid normally listens to port 3128
http_port 3128              #squid对外端口
cache_mem 128 MB            #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
reply_body_max_size 10 MB   #允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制
maximum_object_size 4096 KB #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户
# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256# Leave coredumps in the first cache dir
coredump_dir /usr/local/squid/var/cache/squid#
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
cache_effective_user squid  #squid运行用户
cache_effective_group squid #squid运行组

重启Squid

#进行配置检查
[root@host-10-200-86-163 init.d]# /usr/local/squid/sbin/squid -k reconfigure
[root@host-10-200-86-163 init.d]# /usr/local/squid/sbin/squid -k check#重启
[root@host-10-200-86-163 init.d]# service squid restart
正在关闭 squid...
正在启动 squid...[root@host-10-200-86-163 init.d]# netstat -anplt | grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN      8774/(squid-1)

设置Linux服务器内网上网 重新找一台内网的linux服务器 没有设置代理上网前,去curl百度是失败的

[root@sx-sj-mcn-redis-1 ~]# curl www.baidu.com -I
curl: (6) Could not resolve host: www.baidu.com; Unknown error

临时设置代理

[root@sx-sj-mcn-redis-1 ~]# export proxy=http://10.200.86.163:3128;             #proxy=http代理http协议的请求
[root@sx-sj-mcn-redis-1 ~]# export http_proxy="http://10.200.86.163:3128";
[root@sx-sj-mcn-redis-1 ~]# export https_proxy="http://10.200.86.163:3128";     #https=proxy代理https协议的请求

临时设置代理后再次curl百度

[root@sx-sj-mcn-redis-1 ~]# curl www.baidu.com -I
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Content-Length: 277
Content-Type: text/html
Date: Thu, 08 Aug 2019 12:40:01 GMT
ETag: "575e1f60-115"
Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
X-Cache: MISS from host-10-200-86-163
Via: 1.1 host-10-200-86-163 (squid/4.8)
Connection: keep-alive

永久设置代理

#在/etc/profile中全局设置的最后添加以下配置
[root@sx-sj-mcn-vgateway-2 ~]# vim /etc/profile
export proxy=http://10.200.86.163:3128
export http_proxy="http://10.200.86.163:3128"
export https_proxy="http://10.200.86.163:3128"
export ftp_proxy="http://10.200.86.163:3128"[root@sx-sj-mcn-vgateway-2 ~]# source /etc/profile
[root@sx-sj-mcn-vgateway-2 ~]# curl www.baidu.com -I
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Content-Length: 277
Content-Type: text/html
Date: Thu, 08 Aug 2019 12:50:07 GMT
ETag: "575e1f60-115"
Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
X-Cache: MISS from host-10-200-86-163
Via: 1.1 host-10-200-86-163 (squid/4.8)
Connection: keep-alive

注意:yum使用的话,我们把我们squid服务器的yum源拷贝到Linux内网设备中然后指定yum makecache生成缓存就可以执行

透明代理

透明代理需要squid服务器拥有两块网卡,我这里的squid服务器就只有一块,就不做演示

参考链接 :

Linux系统通过Squid配置实现代理上网 https://mp.weixin.qq.com/s/R_qXKKdODoeNUm6c9-b6RQ

Linux系统通过Squid配置实现代理上网相关推荐

  1. 使用squid配置透明代理并对上网行为进行控制

    使用Squid配置透明代理 环境:CentOS 6.4 + squid-3.1.10-20.el6_5.3.x86_641.检查squid是否默认安装,没有安装先安装 rpm -qa squid 假如 ...

  2. linux命令行模式下实现代理上网 专题

    有些公司的局域网环境,例如我们公司的只允许使用代理上网,图形界面的很好解决就设置一下浏览器的代理就好了,但是linux纯命令行的界面就....下面简单几步就可以实现了! 一.命令行界面的一般代理设置方 ...

  3. 《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——2.2 容器式Linux系统的Docker配置...

    本节书摘来自异步社区<Docker容器:利用Kubernetes.Flannel.Cockpit和Atomic构建和部署>一书中的第2章,第2.2节,作者: [美]Christopher ...

  4. linux 软件 web管理系统,如何快速安装Webmin(linux系统web管理配置工具)

    如何快速安装Webmin(linux系统web管理配置工具) 简介: Webmin是目前功能最强大的基于Web的Unix系统管理工具.管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作 ...

  5. Linux系统中网络配置详解

    从linux诞生的那一天起,就注定了它的网络功能空前地强大.所以在linux系统中如何配置网络,使其高效,安全的工作就显得十分重要.下面我们就从网络设备的安装,网络服务的设置和网络安全性三个方面来介绍 ...

  6. 乌班图linux配置yum仓库,Linux系统的仓库配置(yum、epel)与软件安装(wireshark,wget,nginx)...

    文章目录 Linux系统的仓库配置(yum.epel)与软件安装(wireshark,wget,nginx) 1.配置本地yum仓库安装wireshark,wget 2.配置epel仓库,安装ngin ...

  7. Linux系统下怎样配置多个Tomcat

    Linux系统下怎样配置多个Tomcat同时运行呢,首先修改变量为第一个tomcat,然后修改第二个tomcat启动的脚本 1.修改环境变量 # vi /etc/profile ####### 工程1 ...

  8. Linux系统下快速配置HugePages的完整步骤

    关于Linux系统的HugePages与Oracle数据库优化,可以参考熊爷之前的文章,相关概念介绍的非常清晰:Linux大内存页Oracle数据库优化 本文旨在Linux系统上快速配置HugePag ...

  9. Nagios飞信linux系统免费短信报警配置

    Nagios飞信linux系统免费短信报警配置 2009-12-10 15:42 http://www.chinaunix.net 作者:solaris小兵   发表于:2009-05-26 16:2 ...

最新文章

  1. 云校庆系列活动 | 软件定义新基建,数据驱动新未来
  2. C++知识点43——解引用运算符和箭头运算符的重载及智能指针类的实现
  3. 三个事件同步实现双相机同步WaitForMultipleObjects
  4. linux samba 空目录,linux Samba搭建
  5. aem是什么意思_一台400匹的宽体RX7不装转子引擎,那装的是什么?
  6. c语言中验证巴德哥赫猜想,哥赫巴德猜想具体内容是什么?
  7. linux 编写java代码
  8. Excel导入oracle的几种方法
  9. ORA-12638处理
  10. 01 - 雷达回波中的可用信息
  11. Stellar Repair for Excel 6.0.X Crack
  12. android模拟器上https抓包
  13. arcgis制作瓦片地图_利用ArcGISDesktop制作【地图瓦片包(TPK切片包)】的技术流程及优化...
  14. ASP.NET MVC --- 身份认证与授权
  15. csr8811蓝牙芯片porting总结
  16. 资本并非全部,新家装风口下如何迎风起舞?丨Xtecher 观察
  17. Matlab界面语言切换,自由显示中文或英文语言
  18. 麦克风阵列声源定位效果测试
  19. 计算机等级考试java题型_全国计算机等级考试二级JAVA笔试题目
  20. 基于VU9P+C6678 的 4 路 FMC 接口基带信号处理板(支持 8 路 1G 瞬时带宽 AD+DA)

热门文章

  1. 文本分类实战--从TFIDF到深度学习CNN系列效果对比(附代码)
  2. yolov5论文叫什么_熬夜写论文是一种怎样的体验
  3. python定义二维空数组_带有空第二维的数组/向量的Python / numpy问题
  4. python pandas读取csv_pandas读取csv文件数据的方法及注意点
  5. 用Arduino远程控制车库门开关
  6. laravel整合workerman做聊天室
  7. linux 对文件类型的判断
  8. 前端开发框架整理(一些记录给自己看的)
  9. JAVA card 应用开发(六) 个人化数据的线路安全和数据安全
  10. Android Support Annotation Library使用详解