DHCPが無い環境で リンクローカルアドレス(IPv4)で自動的に上がってくるようなデバイスの
自動構成をしたくて Ubuntu/Debianで APIPAをふる方法と discoverのやりかた
準備
必要なパッケージのインストール
APIPAをふるだけなら avahi-autoipdがあれば目的としては達成できます
sudo apt-get install -y avahi-autoipd
名前やサービスの解決させたりもあるので 関連ツールとして avahi-daemon と avahi-utils、
さらに SSDPで検出したい場合なんかに gupnp-toolsも入れておく。
sudo apt-get install -y avahi-utils gupnp-tools
設定
eth2で使いたい場合、/etc/network/interfaces に以下を追加する。
この設定で eth2:avahi インターフェースに APIPAがふられる
auto eth2
iface eth2 inet manual
up /usr/sbin/avahi-autoipd -D --force-bind eth2
down /usr/sbin/avahi-autoipd -k eth2
利用
interface を upするだけ
sudo ifup eth2
確認
root@buster:~# ip -4 a
...
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 169.254.5.253/16 brd 169.254.255.255 scope link eth2:avahi
valid_lft forever preferred_lft forever
名前がわかっている物のIPを解決する
名前がわかっていれば mDNSで .local ドメインで名前解決する。
例えば fsというマシンを解決したければ ping fs.local
DNS-SDで サービス一覧を表示してみる
avahi-browse -al
実行するとこんな感じ
root@buster:~# avahi-browse -al
+ eth1 IPv4 amzn.dmgr:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxx:##### _amzn-wplay._tcp local
+ eth1 IPv4 fs - SSH SSH Remote Terminal local
+ eth1 IPv4 fs - SMB/CIFS Microsoft Windows Network local
+ eth1 IPv4 fs - NFS - home Network File System local
+ eth1 IPv4 Google-Home-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx _googlecast._tcp local
+ eth1 IPv4 Chromecast-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx _googlecast._tcp local
オプションにrをつけるとさらにIPやポートまで解決して表示してくれる
SSDPでデバイス一覧を表示してみる
インターフェースを指定して gssdp-discoverで行う
gssdp-discover -i eth2:avahi
root@buster:~# gssdp-discover -i eth2:avahi --timeout=3
Using network interface eth2:avahi
Scanning for all resources
Showing "available" messages
resource available
USN: uuid:1a78e91b-d86d-11ea-8157-080027e8f737::upnp:rootdevice
Location: http://169.254.86.237:1900/ddd.xml