On my home network, I have a number of Linux machines, a few Windows laptops and VMs, some Android phones, and a handful of game consoles and Chromecasts. Many of these things need to talk to one another. I make heavy use of SSH,
rsync, Barrier (née Synergy), X2Go, IPP, and other communication protocols between many of the devices on my network, be they Linux, Windows, or even Android.
Years ago, when pretty much the only things I had that wanted to talk to each other were Windows boxes, I could usually rely on the NBT master browser magic to handle name resolution. So from one Windows computer, I could access another’s shared folders with
\hostnamesharename, or Remote Desktop from one to another by its name, etc.
I’m not sure what, if any, “standard” solution there is to fulfill this need on a primarily Linux network. What I’m currently doing is running a DHCP server and a DNS server on a Raspberry Pi running Arch Linux ARM. I have DHCP reservations for most of the devices on my network, mapping them to DNS names, which assign them fixed IP addresses.
This works perfectly well, and isn’t more work than I can handle, since the number of nodes I need to handle this way is relatively small and changes fairly infrequently (I have about 30 DNS entries for currently active nodes). It is a little inconvenient that I have to use separate names for my wired and wireless interfaces, but most of my devices spend 95% or more of their time using just one interface, so I don’t stress too much over it.
But I’m curious what the “normal” way to do this is. I’m sure most people don’t disable the DHCP server built in to their home routers and run their own DHCP and DNS servers, even people with Linux and Mac hardware. And administrators of larger (corporate) networks can’t possibly manage names as manually as I do.
Is there a canonical way to manage name resolution that doesn’t rely on the kind of manual maintenance I do today, or is what I’m doing pretty typical for my use case?