Orange Pi R1 のSPIフラッシュにOSを入れてルーターにする

メニュー

udhcpd

BusyBoxのみでdhcpdを構築できます。
dnsmasqと違い、自身がDNSサーバーになる機能はありませんが接続するクライアント端末にIPアドレスを配布できます。
また、dnsmasqの場合は複数のインターフェイスに対応しますが、udhcpdの場合は一つのインターフェイスにしか対応しないためeth1とwlan0の両方にIPアドレスを配る場合に2つ設定して起動する必要があります。

Busybox
Networking Utilities  --->
  [*] udhcpd
をチェックしてビルドすれば有効になります。

/etc/udhcpd/wlan0.conf
#pidfile    /var/run/udhcpd-wlan0.pid
lease_file      /var/lib/misc/udhcpd-wlan0.leases

start           192.168.3.2
end             192.168.3.50

interface       wlan0

opt     dns     8.8.8.8 1.1.1.1
opt     subnet  255.255.255.0
opt     router  192.168.3.1
wlan0用の設定ファイルはこんな感じにしました。
自身がDNSになることはできませんが、設定したDNSアドレスを通知することはできます。
lease_fileでリース中のアドレスを記録するファイルを指定しますが、ファイルが存在しない場合エラーになるので起動前に作成する必要があります。
pidfileを指定できるはずなのですが、手元では指定してもしなくてもpidファイルが作成されませんでした。

# touch /var/lib/misc/udhcpd-wlan0.leases
# udhcpd /etc/udhcpd/wlan0.conf
の様にlease_fileを作成したうえで設定ファイルを引数として起動します。

/etc/network/interfaces
auto wlan0
iface wlan0 inet static
  address 192.168.3.1
  netmask 255.255.255.0
  post-up wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf
  post-up touch /var/lib/misc/udhcpd-wlan0.leases
  post-up start-stop-daemon -S -b -m -p /var/run/udhcpd-wlan0.pid -x udhcpd -- -f /etc/udhcpd/wlan0.conf
  pre-down start-stop-daemon -K -p /var/run/udhcpd-wlan0.pid
  pre-down killall -q wpa_supplicant
インターフェイス毎に起動する必要があるので/etc/network/interfacesで起動設定をしました。
起動前にtouchでリースファイルを作成しています。pidfileももしかしたら事前作成が必要なのか?
udhcpd単体でpidファイルが作成されなかったのでstart-stop-daemonでpidファイルを作成して個別にkillできるようにしました。
udhcpdは通常起動するとバックグラウンドで動作しますが、start-stop-daemonを通すため-fオプションをつけてフォアグラウンド起動にしました。
[編集]   [AD]
rentafree.net