如果我不想.local
用于 mDNS 服务,我可以使用不同的顶级域 (TLD) 吗?
例如,我可以设置一些家用 NAS 设备,并将它们命名为:
- 电影.nas
- 图片.nas
或者将一些打印机重命名为
- 客厅.打印机
- 楼上的打印机
或者将我家中的一些物联网设备重命名为更有意义的名称,例如:
- 庭院灯
- 卧室灯
- 车库门
- 车道.相机
我该怎么做,这会导致什么问题?
如果我不想.local
用于 mDNS 服务,我可以使用不同的顶级域 (TLD) 吗?
例如,我可以设置一些家用 NAS 设备,并将它们命名为:
或者将一些打印机重命名为
或者将我家中的一些物联网设备重命名为更有意义的名称,例如:
我该怎么做,这会导致什么问题?
尽管协议在技术上是可行的(并且有些设备忘记添加后缀),但它与大多数实现不兼容,其中许多实现甚至不会将名称路由到 mDNS 处理程序,除非它们以
.local
. (Linux 上的 Avahi 是我所知道的唯一允许添加其他后缀的常见 PC 操作系统的实现。)不,是
.local.
mDNS顶级域。来自RFC 6762:只有在使用
.local
. 所以你应该相应地命名你的设备:movies.nas.local.
pictures.nas.local.
livingroom.printer.local.
upstairs.printer.local.
patio.lights.local.
bedroom.lights.local.
garage.door.local.
driveway.camera.local.
但是,仍然可以设置您的 DNS,以便简单
movies.nas
地解析为您的本地地址。因此,您可以在所有客户端上设置名称解析器,以在他们的搜索列表中使用
.local.
,而不仅仅是,它会通过 mDNS 解析、、、和(以及其他所有内容);至少在没有可用的全局解析器的情况下。这正是问题所在,您可能会与某些全局名称发生冲突,例如, , , , , 以及许多其他实际上已注册的顶级域。.
.nas
.printer
.lights
.door
.camera
.camera
.movie
.furniture
.lighting
.house
.frontdoor
.kitchen
解决这个问题的一种方法是自己购买相应的全局域,以确保它不会以冲突的方式被其他任何人使用,但推荐的方法是为您的 mDNS 设备使用单标签域名,即
movies-nas.local.
pictures-nas.local.
livingroom-printer.local.
upstairs-printer.local.
patio-lights.local.
bedroom-lights.local.
garage-door.local.
driveway-camera.local.
此外,如果您使用 mDNS 进行服务发现 ( RFC6763 ),您可以为这些服务提供完全任意的用户友好名称,例如
My most lovely NAS._http._tcp.local.
The livingroom machine._ipp._tcp.local.
在服务浏览器中,只有第一个标签作为服务名称对用户可见。