動かざることバグの如し

近づきたいよ 君の理想に

mDNSで/etc/hostsにホスト名書かなくてもsshできるようにする

同一ネットワークならわざわざ/etc/hosts書かなくても名前解決できるということを初めて知った

環境

やりたいこと

例えばIP「192.168.16.12」でホスト名が「ubuntu02」のサーバーが同一ネットワーク上にあったとする。

そのサーバーにsshしたい場合、通常だと/etc/hostsに 192.168.16.12 ubuntu02 と書いてssh ubuntu02でアクセスするが、 ubuntu02.local とかでhosts書かなくてもアクセスできるようにしたい。

そこで「mDNS」を使う

mDNSとは

mDNSとは

mDNS(Multicast DNS)は、ローカルネットワーク内でホスト名解決を行うためのプロトコルだ。従来のDNSとは異なり、DNSサーバを必要とせず、マルチキャストを利用して名前解決を行う。

  • 一般的なのDNS:
    • 階層構造を持つ大規模な分散データベースを使用。
    • DNSサーバに問い合わせが必要。
    • グローバルな名前解決に適している。
    • 動的な名前解決にはDDNSなどの設定が必要となる。
  • mDNS:
    • ローカルネットワーク内でのみ有効。
    • マルチキャストで名前解決要求をブロードキャスト。
    • 設定不要で動的な名前解決が可能。
    • DNSサーバの構築が困難な環境や、小規模ネットワークに最適。
    • 同じサブネット内でしか名前解決できないという制約がある。

つまり、mDNSは、ローカルネットワークのホストが互いに名前解決するための、軽量で手間のかからないプロトコルだ。大げさな設定は不要で、BonjourやAvahiといった実装が普及している。

インストール

Macの場合はデフォルトでインストールされている。Ubuntuもデフォルトでインストールされているらしいが入ってない場合用

systemctl status avahi-daemon

なければインストールされていない

sudo apt update
sudo apt install avahi-daemon
sudo systemctl start avahi-daemon
sudo systemctl enable avahi-daemon

確認

ping ubuntu02.local