创建指向 localhost 的 A 记录时的最佳做法是什么?这被视为禁忌吗?还是有一些有效情况允许这样做?
我有十几个域名,我在其中设置了指向 127.0.0.1 的“本地”子域名,以便在本地开发链接到这些域名的 Web 应用程序时提供帮助。我和团队中的其他开发人员经常需要在本地主机上处理多个站点,而在 URL 中引用 IP 或在主机文件中保留本地域名映射往往会造成混淆,并且随着时间的推移会变得难以维护。
所以我认为将这些注册为子域名是一种快速简便的方法,可以为每个人提供快捷方式。事实也确实如此。它工作了几个星期,然后突然停止工作。所以我登录了我的提供商的 DNS 控件,果然,所有“本地”。A 记录都被删除了。
我的主机是Godaddy。
在我猛烈抨击 GoDaddy 未经我的许可修改我的 DNS 记录之前,我想问一下他们删除这些记录是否有正当理由?他们可能认为这是某种安全问题或违规行为吗?GoDaddy 总体来说是一家糟糕的公司,但更换 DNS 提供商并不是我最讨厌的事情。我是否应该对此感到愤怒?
答案1
虽然可能有点奇怪,但我不知道有任何特定的标准或规范禁止在公共 DNS 中做这样的事情。GoDaddy 平台可能存在一些怪癖,导致使用环回地址时出现某种问题,或者可能只是因为它“非标准”或“奇怪”而被删除。
如果机器都在同一个网络上并且不会离开它,那么您是否可以在内部 DNS 上创建这些记录?
答案2
如果我不得不猜测的话,这可能是防止流量反射的错误做法。请看以下示例:
$ORIGIN example.com.
stophittingyourself IN NS ns1.stophittingyourself
ns1.stophittingyourself IN A 127.0.0.1
如果我向递归 DNS 服务器发送查询noreally.stophittingyourself.example.com.
,它将遵循引用链并尝试查询 127.0.0.1:53。很可能确实存在本地主机侦听器,并且在大多数情况下,最终结果是服务器与自身对话。这不可避免地会导致可缓存故障……但每次更改noreally
为时somethingelse
,该故障都必须按照 RFC 单独缓存。
最终结果是,使用 127.0.0.1 引用比指向不响应或不权威的随机 IP 更能浪费资源。试图在这一层阻止它是奇怪的,特别是因为对于受害者来说,声明一个它不应该与之通信的网络列表以获取权威数据(包括 127.0.0.0/8)更有意义,但这从未阻止企业以“安全”的名义用手指引号做傻事。
半相关的切线:如果您运行的是递归 DNS 服务器,并且从未想过以这种方式使用引荐来引导流量,那么您可能需要研究如何配置 DNS 软件以忽略这些引荐。虽然防火墙在这里也可以提供帮助,但我保证,如果您处理客户流量,环回接口上的数据包计数器会安静得多。
基于 BIND 的示例:
# refuse to loop back on ourself
server 203.0.113.0/24 { bogus yes; };
server 127.0.0.0/8 { bogus yes; };
server 0000::/3 { bogus yes; };
server fe80::/16 { bogus yes; };
server 169.254.0.0/16 { bogus yes; };
# refuse attempts to funnel requests into private/backbone space
server 172.18.53.1/32 { bogus no; }; # whitelisting example
server 172.18.53.2/32 { bogus no; }; # whitelisting example
server 192.168.0.0/16 { bogus yes; };
server 10.0.0.0/8 { bogus yes; };
server 172.16.0.0/12 { bogus yes; };
server 100.64.0.0/10 { bogus yes; };
答案3
指向 127.0.0.1 的 A 记录存在安全风险,因为它可能引发 XSS 攻击。更多信息:http://www.securityfocus.com/archive/1/486606/30/0/threaded