twitter icon   twitter icon   rss icon

Linux.com Japan

Home Linux Jp チュートリアル WiFi ルーターに Linux をインストールする: Linksys WRT1900AC と OpenWrt

WiFi ルーターに Linux をインストールする: Linksys WRT1900AC と OpenWrt

原文は 2015 年 5 月 15 日に掲載されました。

linksyswrt1900ac router

Linksys WRT1900AC は、Linux を使いたくて OpenWrt をインストールするには最適な新型高級ルーターです。OpenWrt は opkg と呼ばれるパッケージ管理システムを含んでいるため、ルーター上で利用可能なさまざまなオープン ソース ソフトウェアを利用できます。ルーターへ SSH アクセスをしたり、接続時に iptalbes を利用したり、その上でさまざまな小規模のサーバーを稼働したりできます。つまり、Linksys WRT1900AC と OpenWrt は、強力な組み合わせとなります。

ハードウェアの観点から、Linksys WRT1900AC は、最高速度 600 MByte / 秒の 2.4 GHz 802.11n と、1.3 GByte / 秒の 5 GHz 802.11ac のデュアル バンドをサポートします。これにより、古い端末でも 802.11n で接続し、新しい端末であれば、802.11ac の恩恵を受けることができます。

ルーターは、デュアルコアの Marvell Armada 370/XP CPU、RAM256MB と 128MB のフラッシュを積んでいます。USB 3.0 と eSATA ポートを利用することで、さらに容量を増やすことができます。OpenWrt を使うと、webcam やプリンターをルーターに接続できます。Linksys WRT1900AC は、G ビット スイッチのポートを 4 つと、G ビットのアップストリーム用 WAN ポートを持っています。

初期設定

Linksys WRT1900AC の標準ファームウェアは、4 つの簡単なステップで初期設定を行えます。ここでは標準のステップを使います。

ステップ 1: アンテナを繋ぎ、電源を入れる

ステップ 2: アップストリーム (インターネット) からの線をルーターの WAN ポートへ接続。

ステップ 3: ルーターの wifi 信号と接続する。他のルーターと異なるネットワーク名、パスワードが用意されています。ステップ 3 は、ルーターの初期設定における脆弱さを除去します。なぜならこのルーターは、電源を入れた瞬間から個別のパスワードを保有しているからです。

ステップ 4: linksyssmartwifi.com にログインし、ルーターを設定する。

インターネット ポートではなく、ローカルの LAN に接続するための 4 つある G ビット ポートの 1 つを使ってみました。しかし、ステップ 4 で linksyssmartwifi.com には接続できませんでした。smartwifi サイトでアカウント作成はできましたが、それ以上の設定は、ルーターを経由する必要がありました。

しかし、リモートのサイトを使用しないでルーターの設定をすることができます。Linksys は 192.168.1.1 のアドレスを持っているので、ラップトップの IP アドレスを 192.168.1.2 にすることにより、設定ページに行くことができました。これで、Connectivity/Local Network ページから、ルーターの IP アドレスを自分の LAN に合わせることができます。不要であれば、DHCP サーバーを止めることもできます。

もう一度、192.168.1.1 に直接接続して初期画面に行くと、リモートのサイトに移動しましたが、これは避けることができます。

eSATA をテストするために、120 GB SanDisk Extreme SSD を接続してみました。標準のファームウェアは ext4 をサポートしていません。/dev/sda1 と認識されましたが、容量 0 Kb、使用容量 0 K と表示されました。FAT 形式の 16 GB フラッシュ ペン ドライブは認識されました。ftp サービスと Samba サービスを使って、ドライブにアクセスできました。

OpenWrt への移行

執筆時点で、OpenWrt  のインストール方法は変更になっています。4 つのイメージ が提供されており、Kernel のバージョンが 3.18 または 4.0、いくつかの修正とアップデートが含まれています。私は、Kaloz の trunk のスナップショットを利用しました。それは、openwrt_wrt1900ac_snapshot.img にあります。

ルーターのイメージ書き換えは簡単です。標準ファームウェアの手動による更新に利用するサイトのページで行えます。書き換え後、ルーターがリブートしてくるのを待つ瞬間は、他のデバイスで書き換えを行なった人ならわかる不安な一瞬です。

リブートしてきた時には wifi 信号はありません。ルーターは、IP アドレス 192.168.1.1 で起動してきます。簡単な方法は、ラップトップを、IP アドレス 192.168.1.2 に設定し、接続することです。OpenWrt の trunk イメージは、ルーター設定用の Web インタフェースを持っていません。192.168.1.1 に行くと、空っぽの画面が表示されます。

SSH などを使って、ルーターにネットワーク越しにログインします。ログインにはパスワードが必要です。OpenWrt はパスワードなしのログインを禁止しているので、接続できないように思えました。しかし telnet サーバーは動作しているので、ラップトップに telnet クライアントをインストールすれば、パスワードなしでログインできます。少しほっとしました。

telnet したら、"passwd" コマンドでパスワードを設定し、SSH を使えるようにします。telnet で繋いでいる間に SSH をテストします。こうすれば、SSH がうまく行かなくても問題解決できます。

LuCI パッケージをインストールして、Web インタフェースを使えるようにします。以下のコマンドを利用します。インターネット アクセスに proxy が必要であれば、http_proxy、https_proxy、および ftp_proxy 環境変数を利用します。もし LAN が 192.168.0.0/24 のサブネット (良くあることですが) にあると、ルーター (192.168.1.1) へのアクセスが失われます。ブリッジされたポート (br) の IP アドレスを ifconfig コマンドで 192.168.0.X に変更すると、すべてのアドレスがそのサブネットに変更されてしまいます。これは恒久的な変更ではないので、リブート後、うまく接続できなければ、192.168.1.0/24 でルーターに再接続できます。LuCI を使えるようになれば、簡単に変更できます。

export http_proxy=http://192.168.1.10
opkg update
opkg install luci

LuCI をインストールすれば、ルーター設定の残りは、Web 上でマウスをクリックするだけです。WiFi を使用可能にするために Network/Wifi ページに行き、2 つの周波数帯、2.4 GHz と 5 GHz 802.11nac の設定を行います。標準では両方とも使用不可になっています。周波数帯のボタンをクリックして、Interface Configuration and the Wireless Security ページにスクロールしたところ、標準が "No Encryption" になっていました。個人的には、"WPA2-PSK" を標準にしてほしいところです。ESSID を設定して、モードを確認 (アクセスポイントを利用しました) します。"Wireless Security" を標準から変更して、パスワードを設定します。

opkg で他の追加パッケージをインストールすることで、LuCI の追加サポートができます。たとえば DLNA サーバーを動かしたかったら、minidlna パッケージがあります。また、luci-app-midlna パッケージは、LuCI web インタフェースでサーバー管理ができます。

opkg install minidlna
opkg install luci-app-minidlna

Linksys WrT1900AC の 128 MB のフラッシュは、複数のパーティションに分割されています。core/overlay パーティションは 24.6 MB、tmp/syscfg は 30 MB で、そのうち 300 KB しか利用されていません。コンパイル済みのソフトウェアをインストールする容量はあるのですが、gcc をインストールする容量がありません。Linksys WRT1900AC のフラッシュの利用方法について、質問を投げかけているところ  です。extroot を利用して、OpenWrt のインストールのための容量を稼ぐことができます。これは、外部記憶に主システムを格納するのです。eSATA SSD になるでしょう。

extroot を使いたくない場合は、ソフト浮動小数点をサポートするスタティック バイナリを生成する他の ARM マシンを利用します。rsync を利用して OpenWrt に移動します。ARM マシンはソフト・ハード両方の浮動小数点機能をサポートしており、そのどちらかでコンパイルされています。所有しているハードウェアがどちらであるかを知るには、"readeld" ツールを利用して、いくつかのバイナリを調べます。"soft-float ABI" という行が出ていることを確認します。

root@linksys1900ac:~# readelf -a /bin/bash|grep ABI
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Flags:                             0x5000202, has entry point, Version5 EABI, soft-float ABI

push button WPS set を動かしたかったのですが、失敗しました。標準ファームでは問題ないので、うまく動かせれば端末の接続が容易になるはずです。

Linksys WrT1900AC には TTL ベースのシリアル接続用ヘッダが出ていて、uboot から直接ファームの更新を行う方法が掲載されていました。これはやっていませんが、文鎮になってしまったデバイスを救う良い方法だと思います。

ルート以外のユーザーを用意しておくことで、リスクを減らせます。"shadow" ユーティリティをインストールして、sudo コマンドを使います。

  root@wrt1900ac:/dev# opkg install sudo
  root@wrt1900ac:/dev# opkg install shadow-useradd shadow-groupadd
  root@wrt1900ac:/dev# sudo -u ben bash

OpenWrt で、Linksys WRT1900AC をブートすると、すぐにファンが回り始めました。ファンは、しばらくして停止しました。"sensor" コマンドを利用して温度を測れます。

root@wrt1900ac:~# sensors 
tmp421-i2c-0-4c
Adapter: mv64xxx_i2c adapter
ddr:          +52.8 C  
wifi:         +55.1 C  
armada_thermal-virtual-0
Adapter: Virtual device
cpu:          +61.7 C  

性能

Android 5 を搭載した LG G3 の上で、Wfi Network Analyzer アプリによる測定では、ルーターから 1 フィートほどの位置で 433 Mbps の性能が出ました。数部屋離れると 200 Mbps に落ちました。標準ファームと OpenWrt で同じ結果でした。

OpenWrt 上で iperf (2.0.5) を動かして、Mid 2012 Macbook Air では 120 Mbps を出しました。DLink DIR-855 を使って、同じ条件 (クライアント、サーバー、距離) で 5GHzでは、82 Mbps でした。この Mac は wifi-n しかサポートしていません (wifi-ac は翌年のモデルからサポートされました)。

Android 5 を搭載した LG G3 の wifi-ac ネットワークの性能は、iperf アプリの測定で 120Mbpl 出ました。"-s" オプションでサーバーを起動し、"-c サーバー IP アドレス" オプションでクライアントを起動して、テストを実行しました。Linksys WrT1900AC/OpenWrt 上のサーバーでは、TCP ウィンドウ サイズに標準の 85 Kb を指定しました。G3 上でウインドウ サイズをいじることで、+ 10% 程度の性能向上が認められました。

eSATA の性能を見るために、120 GB SanDisk Extreme SSD を接続しました。シーケンシャル IO Bonnie++ は、89 Mbps、読み込みは 148 Mbps、再書き込みは 55 Mbps でした。5,200 シーク / 秒の性能が出ました。Cubox では、それぞれ、150 Mbps、50Mbps でしたので、ほぼ同等です。Cubox の書き込みは 120 Mbps で、Linksys WRT1900AC より 35 % 速いです。両方とも、ext4 ファイル システムの同じドライブを利用しました。

bonnie++ -n 0 -f -m Linksys1900ac -d `pwd` 

OpenSSL の性能は、BeagleBond Black と CuBox i4Pro のballpark と同様の結果でした。暗号化の性能は、アルゴリズムにより異なります。DES と AES-256 は他の ARM マシンに比べて遅くなりました。Blowfish と Cast は、他の多くの ARM CPU と同様でした。1,024 ビット RSA シグネチャでは、Linksys WRT1900AC は他の ARM CPU に比べて 25 ~ 30 % の性能でした。

digests linksys router

ciphers linksys router

rsa sign Linksys router

最後に

LuCI インタフェースは使いやすいものです。LuCI が提供する "app" パッケージにより、簡単にソフトウェアを追加できます。Linksys WRT1900AC 用 OpenWrt は開発途上です。LuCI を含んだ安定版が出たら、もっと良いものになるでしょう。OpenWrt の Linksys WRT1900AC に関するフォーラムの投稿の多さは、コミュニティの関心の高さを示すものです。

Linksys WRT1900AC は、OpenWrt を動かすのに充分な性能を持っています。Linus/OSS と最新のハードウェアの組み合わせは、皆さんの利用目的にぴったりです。SSH だけでなく rsync も使えますし、利用したい言語もインストール可能です。パケット フィルタリングのように、ルーター上で動かしたいアプリケーションも動きます。ルーター上で簡単なポリシーにより、タブレットや電話が作業マシンとつながることを防止できます。

最後に、Linksys が WRT1900AC を提供してくれたことに感謝します。

Linux Foundationメンバーシップ

30人のカーネル開発者

人気コンテンツ


Linux Foundationについて

Linux Foundation はLinux の普及,保護,標準化を進めるためにオープンソース コミュニティに資源とサービスを提供しています

 

The Linux Foundation Japan

サイトマップ

問い合わせ先

サイトに関するお問い合わせはこちらまで

Linux Foundation Japan

Linux Foundation

Linux Training

提案、要望

Linux.com JAPANでは広く皆様の提案、要望、投稿を受け付ける予定です。

乞うご期待!