筆者について
FreeBSDを通じてOSSにささかな貢献を。
- 日本xrdpユーザ会発起人
- xrdp developer
- FreeBSD developer
OSS活動をご支援いただける方を募集しています
2021-07-01
■ FreeBSDでMACアドレスごとにネットワークインターフェイス名を固定する
背景
FreeBSDでUSB接続のネットワークインターフェイスを使用すると接続した順に ue0
, ue1
, ue2
…というようなインターフェイス名が割り当てられますが、インターフェイスの挿抜や再起動によってインターフェイス名が変わってしまい不便なことがあります。
実現方法
devdを使用します。詳しくは説明しませんが、大雑把にいうと「デバイスが接続されたり切断されたときになんかするやつ」です。
devdでue0
やue1
というデバイスが接続されたのを検出して、MACアドレスに対応するインターフェイス名に変更することで決まったインターフェイス名を割り当てるというからくりです。
まず、MACアドレスとインターフェイス名のマッピングを書いたファイルを /etc/netifmap
に作成します。ファイル名とパスは任意で構いません。MACアドレスとインターフェイス名を空白文字区切りで書いておきます。
インターフェイス名は foo[0-9]+
というフォーマットである必要はありません。alice
やbob
でもOKですが、元のインターフェイス名と同じue[0-9]+
と重複するものは避けておきます。例えばue0
をue1
に変更し、ue1
をue0
に変更するというようなスワップはうまくいきません。
ここでは、eth[0-9]+
にしてみました。
00:11:22:33:44:55 eth0
00:11:22:33:44:66 eth1
次に、/etc/rename-netif.sh
というスクリプトを作成します。スクリプトは末尾にGistで貼っておきます。
第一引数にインターフェイス名を与えると、マッピングファイルを参照しマッチしたインターフェイス名に変更するというスクリプトです。
最後に、このスクリプトがインターフェイス接続時に実行されるようにdevdの設定ファイルを書いておきます。 /etc/devd/netif.conf
という名前で作成しますが、これも任意の名前で構いません。ue[0-9]+
という名前にマッチするネットワークインターフェイスが接続されたら、action
に指定したスクリプトが実行されます。
書き終わったら、service devd restart
でdevdを再起動しておきます。再起動したら、USBネットワークインターフェイスを順番を変えて挿抜してみると固定のインターフェイス名が割り当てられていることが確認できます。OSごと再起動しても同じMACアドレスに対して同じインターフェイス名が割り当てられます。