De seus requisitos, acho que é exatamente para isso que o Multicast DNS (i.e. Bonjour)
foi definido. Se você estiver usando sistemas Ubuntu, é provável que você já tenha o Avahi instalado o servidor avahi-daemon
e o cliente avahi-discover
Basicamente você configuraria da seguinte forma:
-
Se você quiser um nome sofisticado para o seu servidor (em vez de seu nome de host, que é o padrão), você só precisa ter seu nome configurado corretamente no daemon do Avahi. Essa configuração pode ser feita através da área de trabalho ou modificando o arquivo de configuração
/etc/avahi/avahi-daemon.conf
e garantindo que ele tenha o seguinte definido:
[server] host-name=database domain-name=local
- O cliente precisaria apenas resolver o endereço IP do nome
database.local
para obter o endereço IP. Por exemplo, executandoping database.local
ou usando as ferramentas Avahi:avahi-resolve -4 -n database.local
Isso funciona porque o domínio DNS local é definido como um domínio de multidifusão. O cliente enviará uma consulta multicast para a LAN, que atingirá todos os sistemas conectados. O daemon Avahi no servidor responderá a essa consulta fornecendo seu endereço IP.
Você poderá encontrar mais informações em como configurar o ZeroConf aqui .
Se você gostaria de mexer com mDNS
, você também pode instalar tanto mzclient , avahi-utils e mdns-scan . O primeiro pode ser usado para anunciar um serviço e os outros para encontrar esse serviço na rede. Por exemplo:
Para executar no servidor um serviço para registrar um novo nome associado ao banco de dados MySQL:
$ mzclient -p "_sql._tcp 3306 database"
*** Registering name = 'database', type = '_sql._tcp', domain = 'local.'
*** Registered name = 'database'
(...)
Para tentar encontrar o serviço usando Avahi em um único tiro:
$ avahi-browse -t _sql._tcp
+ eth0 IPv4 database _sql._tcp local
Ou examinando continuamente a rede tentando encontrar serviços de mDNs disponíveis:
$ mdns-scan
+ server [xx:xx:xx:xx:xx:xx]._workstation._tcp.local
+ database._sql._tcp.local
Browsing ... \
[ interrupt with Ctrl+Z]
Observe que nesta configuração você não está usando um servidor DNS central, não é necessário. Todas as consultas são feitas na LAN local usando o tráfego multicast.