将 *.local 指向网络内的 127.0.0.1

将 *.local 指向网络内的 127.0.0.1

因此,我们的大多数开发人员都使用 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 的精彩博客文章介绍了为什么不应将.localActive 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

相关内容