因此,我们的大多数开发人员都使用 MAMP/XAMPP 设置,使用重写规则指向username.project.local
的文档根目录/Users/username/Projects/project/public_html
。这部分工作正常,但问题是让 *.local 指向他们的机器。我认为我可以在我们的内部 DNS 上添加一条规则,而不是在每个开发人员的机器上解决这个问题,因为我们已经设置了一个规则。
目前我在 /var/named/example.com 看到
@ IN SOA SERVER1.EXAMPLE.COM. dns.example.com.(
2013020501 ; Serial yyyymmddnn
3h ; Refresh After 3 hours
1h ; Retry Retry after 1 hour
1w ; Expire after 1 week
1h) ; Minimum negative caching of 1 hour
; NS Records
@ 3600 IN NS DNS1.STABLETRANSIT.COM.
@ 3600 IN NS DNS2.STABLETRANSIT.COM.
; MX Records
@ 3600 IN MX 10 ASPMX.L.GOOGLE.COM.
@ 3600 IN MX 20 ALT1.ASPMX.L.GOOGLE.COM.
@ 3600 IN MX 20 ALT2.ASPMX.L.GOOGLE.COM.
@ 3600 IN MX 30 ASPMX2.GOOGLEMAIL.COM.
@ 3600 IN MX 30 ASPMX3.GOOGLEMAIL.COM.
@ 3600 IN MX 30 ASPMX4.GOOGLEMAIL.COM.
@ 3600 IN MX 30 ASPMX5.GOOGLEMAIL.COM.
; Google
mail 3600 IN CNAME ghs.google.com.
docs 3600 IN CNAME ghs.google.com.
mail 3600 IN CNAME ghs.google.com.
calendar 3600 IN CNAME ghs.google.com.
sites 3600 IN CNAME ghs.google.com.
; A Records
@ 3600 IN A ***.***.***.***
; CNAME Records
www 3600 IN A ***.***.***.***
; Staging Environment
server2 3600 IN A 192.168.1.1
*.server2 3600 IN CNAME server2.example.com.
server3 3600 IN A 192.168.1.2
*.server3 3600 IN CNAME server3.example.com.
是否可以添加一条规则以便 *.local 解析为 127.0.0.1?
答案1
喜欢Michael Dillon 指出,将其用作.local
内部顶级域名是一件坏事——它会破坏 RFC 特定的服务(RFC 6762,如果你好奇的话)。
我会更进一步地接受他的回答,并说使用任意顶级域名是一件坏事。
ICANN 现允许注册任意顶级域名。这意味着您.secret
今天可以使用并且不会发生冲突,但明天 NSA 可能会获取该 TLD 来发布其他人的隐私,然后您将与.secret
互联网上的所有域名发生冲突。这是一个糟糕的情况。
目前,使用 DNS 名称公开“内部内容”的最佳做法是使用您控制的注册域的子域。例如,如果您拥有,example.com
您可以将开发站点放在 下dev.example.com
。
从你的问题来看,你想要的是始终指向的“本地”域名127.0.0.1
,因此对于你的情况,我建议local.example.com
在你的内部 DNS 上创建两个记录:
local.example.com. IN A 127.0.0.1
*.local.example.com. IN A 127.0.0.1
然后开发人员可以访问foo.local.example.com
,并被指向他们的本地机器(127.0.0.1
)。这需要更多输入(您可以通过更改客户端上的 DNS 后缀搜索顺序来消除),但它担保您的命名空间不会与任意 gTLD 发生冲突,并且符合最佳实践。
如果你需要引用一些东西来说服组织中的其他人这是正确的做法,我建议MDMarra 的精彩博客文章介绍了为什么不应将.local
Active Directory 域用于——其中阐述的理由很好地延伸到了任何事物与 DNS 相关。
答案2
一般来说,将 .local 用于内部域名不是一个好主意。它会与 Bonjour/Rendezvous 服务对 .local 的使用混淆。最好选择其他名称,例如 .secret
之后,您只需像对待 .mycompany.com 一样对待 .secret,并且您自己托管 DNS(主/从)。您为 .secret 设置一个区域文件并在内部提供服务。您将拥有一个 SECRET 的 SOA,而不是您示例中的 SERVER1.EXAMPLE.COM。
答案3
充分考虑到其他帖子建议您不要使用无效的 TLD,这当然是可能的。
您要实现的被称为通配符 DNS 记录。通过互联网搜索可以得到很多智慧。
我希望以这种方式实现它:
* IN A 127.0.0.1