# docker
docker pull ubuntu/squid
1
docker run -d --name squid-container -e TZ=UTC -p 3128:3128 ubuntu/squid
1
# Parameters
Parameter | Description |
---|---|
-e TZ=Asia/Shanghai | Timezone. |
-p 3128:3128 | Expose the proxy service |
-v /path/to/logs:/var/log/squid | Volume to store squid logs |
-v /path/to/data:/var/spool/squid | Volume to store the squid cache |
-v /path/to/main/config:/etc/squid/squid.conf | Main squid configuration file |
-v /path/to/config/snippet:/etc/squid/conf.d/snippet.conf | Configuration snippets included by squid.conf |
# Ubuntu
1.安装squid
sudo apt install squid
1
2.修改 squid.conf
cd /etc/squid
mv squid.conf squid.conf.bak
vi squid.conf
1
2
3
2
3
/etc/squid/squid.conf修改如下
http_port 3128 # 代理监听端口
cache_dir ufs /var/spool/squid 1000 64 1024
http_access allow all
# 默认端口3128
1
2
3
4
5
2
3
4
5
acl myip src 192.168.43.196/32
http_port 3128
cache_dir ufs /var/spool/squid 1000 64 1024
http_access allow myip
1
2
3
4
2
3
4
# auth
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/user.pass
auth_param basic realm Welcome to lxt
auth_param basic credentialsttl 4 hours
http_port 3128
cache_dir ufs /var/spool/squid 1000 64 1024
acl lxt proxy_auth REQUIRED
http_access allow lxt
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
3.启动squid
squid -k parse # 检查语法是否有错
squid -z # 初始化并启动squid 初始化缓存空间
sudo systemctl restart squid
1
2
3
4
2
3
4
# 命令
squid -v
squid -k shutdown # 停止 squid
squid -k parse # 验证 squid.conf 的 语法和配置 # 检查语法是否有错
squid -k reconfigure # 载入新的配置文件
/usr/sbin/squid -k rotate 轮循日志
# 要使squid重新加载配置文件是不用重新启动squid服务的,只需要运行:
$ squid -k reconfigure
sudo systemctl restart squid # 服务重启
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 访问控制
# ACL 规则优先级 (opens new window):
当一个用户访问代理服务器时,Squid 会顺序匹配 Squid中定义的所有规则列表,一旦匹配成功,立即停止匹配。当所有规则都不匹配时,Squid 会使用与最后一条相反的规则。
1、ACL元素是squid的访问控制的基础。这里告诉你如何指定包括IP、端口、主机名、url匹配变量。每个ACL元素都有个名字在编写访问规则的时候需要引用,基本元素如下:
acl name type value1 value2 value3
acl myip src 192.168.43.196/32
1
2
2
ACL的元素语法
acl name acltype value1 value2 ....
示例
acl localnet src 10.0.0.0/8 定义原地址范围网段
acl localhost src 10.67.124.191 定义单个主机原地址
其中,acltype可以是src、dst、srcdomain、dstdomain、url_regex、time、port、proto、time中的任意一种,一下我们逐一分析!
列表类型 | 含义/用途 | 列表内容示例 |
---|---|---|
src | 源IP地址、网段、IP地址范围(客户机IP地址) | 10.67.124.0/23 10.67.50.0/23 |
dst | 目标IP地址、网段主机名(服务器IP地址 | 216.182.154.9 216.182.154.0/24 |
port | 目标端口 | 80 443 20 22 |
srcdomain | 源名称(客户机所属的域) | 暂不测试 |
dstdomain | 目标名称(服务器所属的域) | .qq.com .weibo.com.163.com |
time | 字母表示一星期中各天的英文缩写MTWHFAS | **MTWHF 8:30-17:30(周一至周五的时刻)**12:30-13:30AS(周六、日 |
maxconn | 每个客户机的并发连接数 | X |
url_regex | 目标资源的URL地址,-i表示忽略大小写 | url_regex -i ^rtsp:// |
urlpath_regex | 目标资源的整个URL路径 | urlpath_regex -i sex adult urlpath_regex -i .mp3$ |
# htpasswd的用法:
4.其他电脑需要使用用户名和密码才能上网,主要是用于临时使用网络
a.首先需要生成一个密码文件
lixt@ubuntu:/$ sudo htpasswd -c /etc/squid/user.pass lixt
New password:
Re-type new password:
Adding password for user lixt
上面就已经增加了一个lixt帐户
1
2
3
4
5
2
3
4
5
1.增加用户
htpasswd /etc/squid/user.pass lixt
2.修改用户密码:
htpasswd -d /etc/squid/user.pass lixt
3.删除用户:
htpasswd -D /etc/squid/user.pass lixt
1
2
3
4
5
6
2
3
4
5
6
b.编辑/etc/squid/squid.conf
find / -name "basic_ncsa*"
1
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/user.pass
# auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/user.pass
# 由于我使用的是64位的centos所以上面是/usr/lib64/squid/ncsa_auth
# 那后面跟的就是刚才生成密码文件的位置/etc/squid/user.pass
# auth_param basic children 5
//指定认证程序的进程数
auth_param basic realm Welcome to lixt
//浏览器显示输入用户/密码对话框时的领域内容
# auth_param basic credentialsttl 4 hours
# 基本的认证有效时间
acl lixt proxy_auth REQUIRED
# 普通用户需要通过认证才能访问Internet
http_access allow lixt
最后需要加入一行:
http_access deny all
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
← Linux启动盘制作 SSH →