(FreeBSD) pcmciaのNICでDHCP+aliasする方法

このサーバーは、ネットワークインターフェースとして、pcmciaのetherカードを使っている。
インターネットからのアクセスを家のルーターが受けて、それをNAT内のこのサーバーに転送するためには、固定IPアドレスを設定する必要があるが、ルーターはDHCPをサポートしているため、なんとなくDHCPを使って、その上で固定aliasを設定するようにしている。
これまで、rc.confに
ifconfig_ed1_alias0="inet 192.168.XXX.XXX netmask 0xffffffff"
と書いていたが、なぜかaliasが設定されなくて、仕方なく、rc.localにalias設定のコマンドを書いていた。
しかし、これだと、ルーターのDHCPがリセットして(うちのルーターはよくある)IPアドレスを振り直すと、aliasが消えるという問題があった。(そのため、このサーバーは連続運転なのによくインターネットから見えなくなっていた)
以前から原因がわからなくて困っていたが、今日、/etc/以下を真剣に調べたら、rc.confのalias設定が反映されない理由がわかった。


/etc/rc.networkにはDHCPした後にifconfig_${ifn}_alias${alias}を読んでifconfigする所があるが、PCカードのNICはnetwork_interfacesに入っておらず、そこを通らないのだ。すなわち、PCカードのNICは/etc/rc.networkでは初期設定されない。
PCカードのNICは/etc/pccard_etherというスクリプトで初期設定されるらしい。しかし、/etc/pccard_etherは、DHCPの場合はalias設定をしないようになっている(何故?)。
/etc/pccard_etherを書き換えて、DHCPの場合もalias設定するようにすると、OS起動時にもDHCP自動再取得時もalias設定されるようになった。
方法は、[Dd][Hh][Cc][Pp]の所のstart_dhcpの下に、同ファイルの#Check to see if aliases need to be addedで始まるブロックをコピーするだけ。