我们都知道该access.log
文件记录了 Squid 的访问信息:
1286536351.746 41762 192.168.1.17 TCP_MISS/200 5340945 GET http://v15.lscache3.c.youtube.com/videoplayback? - DIRECT/122.160.120.150 video/x-flv
1286536351.746 41762 192.168.1.18 TCP_MISS/200 5340945 GET http://v15.lscache3.c.youtube.com/videoplayback? - DIRECT/122.160.120.150 video/x-flv
Run Code Online (Sandbox Code Playgroud)
我们也都知道squid使用文件/etc/resolv.conf
来确定它所处理的DNS服务器,所以如果我们想让squid与本地DNS服务器打交道,我们在文件中输入本地DNS服务器/etc/resolv.conf
。
如果本地 DNS 服务器有这样的记录(在其反向区域 (1.168.192.in-addr.arpa))怎么办:
$TTL 60 ; 1 minute
17 PTR Mark.
18 PTR Mike.
Run Code Online (Sandbox Code Playgroud)
我可以配置 Squid 进行反向查找(询问日志文件中 IP 地址的名称)并将名称添加到access.log
记录中,例如:
我想做这个记录:
1286536351.746 41762 192.168.1.17 ......
Run Code Online (Sandbox Code Playgroud)
是这样的:
1286536351.746 41762 192.168.1.17 Mark ......
Run Code Online (Sandbox Code Playgroud)
我怎样才能达到这个目标?
我可以用乌贼logformats像%>a
并%>A
得到我想要的东西?
一种方法是在squid.conf
文件中使用此指令来获取日志文件以显示 FQDN 而不是 IP:
log_fqdn on
Run Code Online (Sandbox Code Playgroud)
来源:http : //www.squid-cache.org/Doc/config/log_fqdn/
但这将省略<IP> <Name>
您在问题中显示的格式。为此,如果您查看logformat
指令的文档,则会列出以下默认格式:
logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
logformat common %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh
logformat combined %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
logformat referrer %ts.%03tu %>a %{Referer}>h %ru
logformat useragent %>a [%tl] "%{User-Agent}>h"
Run Code Online (Sandbox Code Playgroud)
这些选项作为参数列出,您可以在构建自己的格式时使用这些参数:
>a Client source IP address
>A Client FQDN
Run Code Online (Sandbox Code Playgroud)
因此,我希望您可以将它们放在一起以获得您所询问的格式。