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







你可能感兴趣的:(访问控制)