neversoft 发表于 2015-11-19 13:47:19

Squid的访问控制列表语法

  


  Squid配置文件使用acl指令定义访问控制列表(access control list, acl),http_access指令定义访问规则(access rulers)。
  acl指令的语法格式为:
  acl aclname type values
  http_access指令的语法格式为:
  http_access allow/deny aclname
  


  1、IP地址:type的值可以为src(Client)、dst(Server)、myip
  acl aclname src ip/netmask
  acl aclname dst hostname
  其中,子网掩码netmask可以省略(netmask的值应该等于IP地址中非零值的个数)。
  


  acl Squid dst www.squid-cache.org


  注意,上面这种使用hostname定义acl效率比较低, 在启动Squid其它模块前,会先解析conf配置文件,其中的hostname无法使用Squid非阻塞的IP Cache接口,而是通过阻塞的gethostbyname( )调用来解析IP地址。这样会延缓Squid的启动速度。
  


  定义只包含一个IP地址的acl:
  下面三组ACL定义都是等价的:
  acl Foo src 172.16.44.21/255.255.255.255

acl Foo src 172.16.44.21/32

acl Foo src 172.16.44.21



acl Xyz src 172.16.55.32/255.255.255.248

acl Xyz src 172.16.55.32/28



acl Bar src 172.16.66.0/255.255.255.0

acl Bar src 172.16.66.0/24

acl Bar src 172.16.66.0


  


  定义包含一组连续IP地址的acl:
  acl Bar src 172.16.10.0-172.16.19.0/24


  


  2、域名:type的值可以为srcdomain、dstdomain、cache_host_domain
  


  acl A dstdomain foo.com

acl B dstdomain .foo.com


  注意:B最前的那个点被看做通配符,如http://foo.com/同时匹配A和B,http://www.foo.com/ 将匹配B


  

URL hostname

Matches ACL lrrr.org?

Matches ACL .lrrr.org?


lrrr.org

Yes

Yes


i.am.lrrr.org

No

Yes


iamlrrr.org

No

No





  不要在同一个aclname里定义有重叠的域名或IP地址,例如:
  

acl Foo dstdomain .lrrr.org .am.lrrr.org
警告:'.am.lrrr.org' is a subdomain of '.lrrr.org'
  
  


  

acl Foo src 1.2.3.0/24
acl Foo src 1.2.3.4/32
警告:'1.2.3.4' is a subnetwork of '1.2.3.0/255.255.255.0'
  
  


  3、用户名:type的取值可以为ident、proxy_auth。
  


  4、正则表达式:type的值可以为srcdom_regex, dstdom_regex, url_regex, urlpath_regex, browser, referer_regex, ident_regex, proxy_auth_regex, req_mime_type, rep_mime_type。例如:
  acl Foo url_regex -i ^http://www


  其中-i表示大小写不敏感,定义了一个正则表达式url_regex,它必须以http开头。
  


  5、端口号:type的值可以为port, myport。
  acl Foo port 123

acl Bar port 1-1024


  


  6、Autonomous system numbers:type的值可以为 src_as, dst_as。
  


  7、Method:type的值可以为GET, POST, PUT, HEAD,
CONNECT, TRACE, OPTIONS, and DELETE等,例如:
  

acl Uploads method PUT POST
  
  


  8、proto:type的只可以为http, https (same as HTTP/TLS), ftp,
gopher, urn, whois, and cache_object等,例如:
  acl FTP proto FTP


  


  


  


  


  


  



版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: Squid的访问控制列表语法