需求描述: 需要一台可以同时访问外网和内网的主机作为正向代理,代理内网主机与外网通信。这里以squid来实现。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
$ yum -y install squid openssl $ cat /etc/squid/squid.conf
acl localnet src 192.168.0.0/16 acl localnet src fc00::/7
acl SSL_ports port 443 acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 acl Safe_ports port 70 acl Safe_ports port 210 acl Safe_ports port 1025-65535 acl Safe_ports port 280 acl Safe_ports port 488 acl Safe_ports port 591 acl Safe_ports port 777 acl CONNECT method CONNECT
http_access allow localnet http_access allow localhost http_access deny all http_port 85
cache_dir ufs /var/spool/squid 100 16 256
logformat squid_custom_log [%tl] %>Hs %>a [%<a] "%rm %ru HTTP/%rv" %Ss:%Sh "%{User-Agent}>h" access_log daemon:/var/log/squid/access.log squid_custom_log
coredump_dir /usr/local/squid/var/cache/squid
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
|
官方文档
,基本上面的配置就够用了,squid支持的其他指令都有默认值,使用默认值即可。
这里需要注意下,当squid应用运行了一段时间以后,cache_dir对应目录下的swap.state文件就会变得越来越大,里面的无效接口数据越来越多,这可能影响squid的响应时间,可以配置计划任务,定时清空文件。
1 2 3 4
|
$ systemctl enable squid && systemctl start squid $ ss -lnput | grep -w 85 tcp LISTEN 0 128 :::85 :::* users:(("squid",pid=2912,fd=16))
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
squid -z 如果有错误提示,请检查你的 cache目录的权限。
squid -k parse 如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,尝试启动squid。
/usr/local/squid/sbin/squid -N -d1 如果有ready to server reques相关信息,说明Squid启动成功。 然后 ctrl + c,停止squid,并以后台运行的方式启动它。
squid -s
squid -k shutdown
squid -k reconfigure -f /XXX/squid.conf 当squid进行过配置更改后,可以使用该命令进行squid配置重载。
/usr/local/squid/bin/squidclient -p 80 mgr:info /usr/local/squid/bin/squidclient -p 80 mgr:5min 可以看到详细的性能情况,其中PORT是你的proxy的端口,5min可以是60min
squidclient -p 80 mgr:info
squidclient -p 80 mgr:mem
squidclient -p 80 mgr:bjects. use it carefully,it may crash
squidclient -p 80 mgr:diskd
squidclient -p 80 -m PURGE http://www.xxx.com/xxx.php
|