完成!
ラズパイB+のサブネット用、持ち出し用Wi-Fiルーター完成!
概略仕様は以下の通り。
無線LAN側のネットワークアドレスを192.168.77.0/28とし、イーサネット側をDHCPクライアントとする。
起動時にDHCPサーバーから192.168.77で始まるIPアドレスがイーサネット側に割り当てられた場合、もしくはIPアドレスの取得に失敗した場合はブリッジモードに転換する仕様とした。
これは、無線LAN側のネットワークアドレスとイーサネット側のネットワークアドレスが重なった場合通信不能となるため、それを避ける為の仕様でもある。
デフォルトはルーターモードで起動。
IPアドレスチェックスクリプトは次の通り。
#!/bin/sh
sub_net=“192.168.77”
my_net=hostname -I | cut -c 1-10
if [ $sub_net = $my_net ]; then
service dhcpcd stop
service dnsmasq stop
ifconfig eth0 0.0.0.0
ifconfig br0 0.0.0.0
brctl addif br0 eth0
/usr/local/bin/reset_iptable.sh
echo “ブリッジモードで起動しました。”
exit 0
fi
echo “ルーターモードで起動しました。”
exit 0
これをrc.localの末尾で15秒のウエイトを入れて実施。
sleep 15
/usr/local/bin/dhcp_chk.sh 2>&1 | logger -t dhcp_chk.sh
接続先のDHCPサーバーが有効であっても、LANケーブルを抜いたまま起動すれば、IPアドレスチェックスクリプトの $sub_net = $my_net の条件が成立し、強制的にブリッジモードで起動することも出来る。
これで完成!