我服务的公司有一个名为的域控制器internal.example.com
,每当他们的员工回家时,Apache 就会被大量 wpad.dat 请求淹没。这些请求被重定向到 404,这让 Apache 不堪重负,陷入瘫痪。
有一个通配符 DNS 条目,用于 *.example.com 重定向到主网站。
这些是我已经做的事情:
在其网站的根目录中提供了 wpad.dat 文件。当我开始提供静态文件时,Apache 不再陷入停滞状态。
wpad.internal.example.com
已将、internal.example.com
、的DNS 条目添加wpad.example.com
到127.0.0.1
。
添加 DNS 并让其传播后,我仍然可以在日志文件中看到请求。
我不知道他们试图访问哪个域名。日志文件指向的是主网站,而不是他们试图访问的网站。
以下是请求 wpad.dat 文件的应用程序
- WinHttp-自动代理服务/5.1
- 微软 Office 2014
- 卡巴斯基代理服务器检测代理
- Mozilla/5.0
此主题与被 wpad.dat 淹没但对于如何修复或至少阻止请求,还没有确切的答案。
编辑:我不知道他们试图访问哪个子域,apache 报告它来自主网站。我添加到 DNS 的条目是智能猜测,我没有关于他们访问的内容的具体证据。
答案1
您不应设置指向 127.0.0.1 的 DNS 记录,而应设置一个将被视为无法解析的记录。最简单的方法是设置 TXT 记录wpad.example.com
,如下所示:
;name ttl class rr text
wpad IN TXT "Located in a black hole"
这样,wpad.example.com
就永远不会解析任何 IP 地址,客户端甚至不会尝试下载任何东西。
请注意,任何已进行的 DNS 查询可能都已缓存,因此客户端将继续使用缓存的结果。这意味着 DNS 更改不会立即对所有客户端生效,但您应该会看到变化逐渐减小。
答案2
最好的办法处理这是在防火墙上,完全阻止请求到达您的网络服务器,可能使用fail2ban
或类似的东西。
如果这不可行(无论出于何种原因),那么尽早在你的 Web 服务器上捕获它并在任何磁盘 I/O 完成之前将其重定向是高效的解决方案。
这是我过去用来做这种事情的配置。在本例中,我将请求重定向到http://127.0.0.1/通过外部重定向导致用户浏览器/脚本不执行任何操作或向自身发出请求。
RewriteEngine on
RewriteRule ^/wpad.dat$ http://127.0.0.1/ [R=301,L,E=nolog:1]
# Then if you wish to stop logging the requests
CustomLog logs/access_log combined env=!nolog
您应该能够根据您的具体需求进行自定义。但是如果您遇到问题,请在您的问题中添加描述。