はじめに
ルータを高機能化するカスタム・ファームウェアにOpenWrtやdd-wrt等がありますが、導入にあたって最初の難関はファームウェアを流し込むことです。私自身、失敗で何度も苦い経験をしています。
そこでSDカードが使えて入手が容易なラズパイと、アンテナ型Wi-Fi子機を使い、OpenWrtを「ルータモード」で使えるようにしてみました。
「ブリッジモード」はこちらを参考にどうぞ。
ラズパイとWN-G300UAとOpenWrtを、しなやかに融合させてみた(ブリッジモード編)
主役たち
- Raspberry Pi 1 Model B+
- I-O DATA Wi-Fi 無線LAN 子機 11n/g/b 300Mbps アンテナ型 WN-G300UA
- OpenWrt Project: OpenWrt v18.06.1
参考
パソコンで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、Wi-FiのIPアドレスを192.168.2.1にします。
Wi-Fiのネットワーク・アドレスは192.168.2.0にします。
既にインターネットに接続されているルータ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'
config interface 'wifi'
option proto 'static'
option ipaddr '192.168.2.1'
option netmask '255.255.255.0'
設定が終わったら一度ラズパイの電源を落とします。
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 network 'wifi'
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
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:69 errors:0 dropped:0 overruns:0 frame:0
TX packets:70 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8149 (7.9 KiB) TX bytes:9688 (9.4 KiB)
eth0 Link encap:Ethernet HWaddr B8:27:EB:3F:33:23
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:78 errors:0 dropped:0 overruns:0 frame:0
TX packets:70 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8563 (8.3 KiB) TX bytes:10424 (10.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:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:1408 (1.3 KiB) TX bytes:1408 (1.3 KiB)
wlan0 Link encap:Ethernet HWaddr 34:76:C5:8E:D6:67
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
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:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:864 (864.0 B)
DHCPサーバの設定をします。
root@OpenWrt:~# cp -p /etc/config/dhcp /etc/config/dhcp.org
root@OpenWrt:~# vi /etc/config/dhcp
(追加)
config dhcp 'wifi'
option interface 'wifi'
option start '100'
option limit '150'
option leasetime '12h'
ファイアウォールの設定をします。
root@OpenWrt:~# cp -p /etc/config/firewall /etc/config/firewall.org
root@OpenWrt:~# vi /etc/config/firewall
(変更前)
config zone
option name lan
list network 'lan'
option input ACCEPT
option output ACCEPT
option forward ACCEPT
(変更後)
config zone
option name lan
list network 'lan'
option input ACCEPT
option output ACCEPT
option forward ACCEPT
option network 'lan wifi'
option masq 1
(追加)
config zone
option name wifi
list network 'wifi'
option input ACCEPT
option output ACCEPT
option forward REJECT
config forwarding
option src wifi
option dest lan
config forwarding
option src lan
option dest wifi
再起動します。
root@OpenWrt:~# reboot
ルーティングを確認します。
root@OpenWrt:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.3.1 0.0.0.0 UG 0 0 0 br-lan
192.168.2.0 * 255.255.255.0 U 0 0 0 wlan0
192.168.3.0 * 255.255.255.0 U 0 0 0 br-lan
ルータ192.168.3.1で192.168.2.0の経路設定をします。
属性 | 値 |
---|---|
ネットワーク・アドレス | 192.168.2.0 |
サブネットマスク | 255.255.255.0 |
ゲートウェイ | 192.168.3.2 |
メトリック | 1 |
おわりに
以上でルータモードとして最低限の設定が終わりました。後はお好みでチューニングを楽しんでくださいね。