Avahi how to assign several .local names to same IP

In some situations you would like to access the same computer / IP using different .local names.

This is possible using the Avahi daemon. The following is written for Ubuntu 18.04 Bionic Beaver.

Install Avahi

apt install avahi-daemon avahi-utils

Avahi automatically adds your computer’s hostname to the .local Domain. For instance, my computer is called morpheus.

Therefore it will be accessible using morpheus.local

image

By the way, if you want to access Zeroconf / Bonjour / Avahi .local domain names, you should simply install Apple’s Bonjour Print Services for Windows.

Make computer accessible under additional .local domain names

avahi-publish -a -R taxgod.local 192.168.1.2

The –R flag is important: it will allow you to publish several domain names for the same IP, as it will NOT publish a reverse entry with the address. (Otherwise, obviously the reverse entries would collide, and therefore avahi refuses to publish them).

The –a flag registers an address/host name mapping.

This command will run in the foreground. While it is running, the domain will be published, and you can access your computer using this additional domain name.

Making it permanent & backgrounding the command

Ideally we want this to happen on startup.

Create a startup script under /root/avahi-add-names.sh :

#!/bin/bash

/usr/bin/avahi-publish -a -R taxgod.local 192.168.1.2 &
/usr/bin/avahi-publish -a -R picockpit.local 192.168.1.2 &
/usr/bin/avahi-publish -a -R papi.local 192.168.1.2 &

Adjust the script with the names you want to have.

Make it executable

chmod +x /root/avahi-add-names.sh

Add the command using crontab.

crontab –e

@reboot /root/avahi-add-names.sh

If you want, you can test that the script works by running

nohup /root/avahi-add-names.sh

By the way, when you restart the avahi-daemon, you will need to restart this script, otherwise you will get the following error messages:

“Client failure, exiting: Daemon connection failed”

image

Here you can see that I can ping several different “aliases” .local domain names for the same IP.

Bonus Tip

If you want to publish .local domains for other computers / devices, which are not capable of publishing them for themselves, you can also do this with Avahi.

nano /etc/avahi/hosts

Add a line for each device, e.g.

192.168.1.21 kyo3.local

Save the file. Reload the avahi daemon (the reload may not actually even be necessary)

service avahi-daemon restart