USB-Ethernet変換を使って、ラズパイなどのボードと1対1で接続するようなケースでは、 DHCPサーバをいちいち用意するのが面倒。
そういう場合でも、SSHでログインなどしたかったりするのでTCP/IPで通信したい。 そこでavahi-autoipdを使うとIPアドレスを解決できるようにしてくれる。
これで何がしたいかというと、組み込み機器として作成したラズベリーパイにWebインターフェースで設定画面を用意したとして、 ブラウザでアクセスするためにはHTTP(TCP/IP)での通信が必要となる。 その時のネットワークに確実にDHCPサーバが存在するわけではないため、 DHCPサーバがなくても、OSインストール後に設定なしの状態で確実にWebインターフェースにアクセスできるようにしたい。
yoctoで追加
local.confで次のパッケージを追加する。
IMAGE_INSTALL_append = " avahi-daemon \ avahi-autoipd \ "
マシンがラズベリーパイ3だった場合、
avahi-daemonでraspberrypi3.local
の名前でアクセスできるようになる。
avahi-autoipdで、DHCPサーバがなかった場合IPv4LLにフォールバックされ169.264.XXX.XXX
のようなIPアドレスが割り振られるようになる。
PC側のネットワークインターフェースの設定
有線LANがひとつしかない場合などは特に設定はいらない(と思う)。
USB-Ethernet変換を使う場合は、そのNICを有効化するために適当にIPアドレスを割り当てる。
NICがそれぞれ有効になったら、次のようにpingを打ってみる。
$ ping raspberrypi3.local PING raspberrypi3.local (169.254.13.XXX) 56(84) bytes of data. ^C --- raspberrypi3.local ping statistics --- 23 packets transmitted, 0 received, 100% packet loss, time 22102ms
名前に対してIPアドレスが振られているのに、通信ができない場合はルーティングを設定してみる。
$ sudo route add -net 169.254.0.0 netmask 255.255.0.0 dev eth0 metric 99
eth0
のところは適宜NICの名前に変更する。