はじめに
ルータを高機能化するカスタム・ファームウェアにOpenWrtやdd-wrt等がありますが、導入にあたって最初の難関はファームウェアを流し込むことです。私自身、失敗で何度も苦い経験をしています。
そこでSDカードが使えて入手が容易なラズパイと、アンテナ型Wi-Fi子機を使い、OpenWrtを「ブリッジモード」で使えるようにしてみました。
主役たち
- Raspberry Pi 1 Model B+
- I-O DATA Wi-Fi 無線LAN 子機 11n/g/b 300Mbps アンテナ型 WN-G300UA
- OpenWrt Project: OpenWrt v18.06.1
参考
- pslaboが試したことの記録 - Raspberry Pi 3 や Zero W に OpenWrt/LEDE 18.06 をインストールしてルータにする
- OpenWrt - Dumb AP / Access Point Only
パソコンでOpenWrtのファームウェアをダウンロード、解凍し、SDカードへ書き込みます。
下記はUbuntu 18.04.1での実行例です。
$ wget https://archive.openwrt.org/releases/18.06.1/targets/brcm2708/bcm2708/openwrt-18.06.1-brcm2708-bcm2708-rpi-ext4-factory.img.gz
$ gzip -d openwrt-18.06.1-brcm2708-bcm2708-rpi-ext4-factory.img.gz
$ sudo dd if=openwrt-18.06.1-brcm2708-bcm2708-rpi-ext4-factory.img of=/dev/sdb bs=1M
rootパーティションを拡張します。
ラズパイにOpenWrtを書き込んだ後、rootパーティションを拡張する方法
ラズパイのパスワードを設定します。
OpenWrtの初期IPアドレスは192.168.1.1です。
ラズパイにSDカードを挿入します。ラズパイとパソコンをLANケーブルで直結し電源を入れます。パソコン側のLANアドレスをDHCPにしておけば、そのままsshでコンソール接続できます。
rootのパスワードは何も設定されていないので、お好みに変更します。
$ ssh root@192.168.1.1
root@OpenWrt:~# passwd
Changing password for root
New password:
Retype password:
passwd: password for root changed by root
ラズパイのLANポートの設定をします。
OpenWrtをブリッジモードで設定します。
ラズパイのLANポートのIPアドレスを192.168.3.2にします。
既にインターネットに接続されているルータ192.168.3.1があることが前提条件です。デフォルト・ゲートウェイやDNSサーバは192.168.3.1になります。
root@OpenWrt:~# cp -p /etc/config/network /etc/config/network.org
root@OpenWrt:~# vi /etc/config/network
(変更前)
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6assign '60'
(変更後)
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
# option ipaddr '192.168.1.1'
option ipaddr '192.168.3.2'
option netmask '255.255.255.0'
option gateway '192.168.3.1'
option dns '192.168.3.1'
# option ip6assign '60'
設定が終わったら一度ラズパイの電源を落とします。
root@OpenWrt:~# halt
アンテナ型Wi-Fi子機WN-G300UAの設定をします。
ルータ192.168.3.1とラズパイ192.168.3.2をLANケーブルで繋げます。
sshでラズパイへコンソール接続します。
$ ssh root@192.168.3.2
root@192.168.3.2's password:
WN-G300UAのドライバをインストールし、再起動します。
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install kmod-rtl8192cu
root@OpenWrt:~# reboot
WN-G300UAのドライバを認識しているか確認します。
$ ssh root@192.168.3.2
root@192.168.3.2's password:
root@OpenWrt:~# dmesg | grep rtl8192cu
[ 7.513146] rtl8192cu: Chip version 0x11
[ 7.659574] rtl8192cu: Board Type 0
[ 7.675383] rtl8192cu: Loading firmware rtlwifi/rtl8192cufw_TMSC.bin
[ 7.687639] usbcore: registered new interface driver rtl8192cu
Wi-Fiの設定をします。
Wi-Fiをアクティブにし、認証パスワード等を設定します。
root@OpenWrt:~# cp -p /etc/config/wireless /etc/config/wireless.org
root@OpenWrt:~# vi /etc/config/wireless
(変更前)
config wifi-device 'radio0'
option type 'mac80211'
option channel '11'
option hwmode '11g'
option path 'platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.0'
option htmode 'HT20'
option disabled '1'
config wifi-iface 'default_radio0'
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'OpenWrt'
option encryption 'none'
(変更後)
config wifi-device 'radio0'
option type 'mac80211'
option channel '11'
option hwmode '11g'
option path 'platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.0'
option htmode 'HT20'
# option disabled '1'
option disabled '0'
config wifi-iface 'default_radio0'
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'OpenWrt'
# option encryption 'none'
option channel 'auto'
option txpower '10'
option country 'JP'
option encryption 'psk-mixed'
option key 'PASSWORD'
再起動します。
root@OpenWrt:~# reboot
wlan0が出てるか確認します。
$ ssh root@192.168.3.2
root@192.168.3.2's password:
root@OpenWrt:~# ifconfig
br-lan Link encap:Ethernet HWaddr B8:27:EB:3F:33:23
inet addr:192.168.3.2 Bcast:192.168.3.255 Mask:255.255.255.0
inet6 addr: fe80::ba27:ebff:fe3f:3323/64 Scope:Link
inet6 addr: fd4c:e901:b36e::1/60 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:171 errors:0 dropped:0 overruns:0 frame:0
TX packets:169 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:17093 (16.6 KiB) TX bytes:42675 (41.6 KiB)
eth0 Link encap:Ethernet HWaddr B8:27:EB:3F:33:23
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:177 errors:0 dropped:0 overruns:0 frame:0
TX packets:166 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:17369 (16.9 KiB) TX bytes:44213 (43.1 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:32 errors:0 dropped:0 overruns:0 frame:0
TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:2688 (2.6 KiB) TX bytes:2688 (2.6 KiB)
wlan0 Link encap:Ethernet HWaddr 34:76:C5:8E:D6:67
inet6 addr: fe80::3676:c5ff:fe8e:d667/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:1230 (1.2 KiB)
DHCPサーバとファイアウォールを無効にします。
root@OpenWrt:~# /etc/init.d/dnsmasq disable
root@OpenWrt:~# /etc/init.d/dnsmasq stop
root@OpenWrt:~# /etc/init.d/odhcpd disable
root@OpenWrt:~# /etc/init.d/odhcpd stop
root@OpenWrt:~# /etc/init.d/firewall disable
root@OpenWrt:~# /etc/init.d/firewall stop
再起動します。
root@OpenWrt:~# reboot
さいごに
以上でブリッジモードとして最低限の設定が終わりました。後はお好みでチューニングを楽しんでくださいね。
ちなみに私のおすすめルータはGL-AR150 - GL.iNetです。OpenWrt, dd-wrtどちらも使えて価格も安いです。