ラベル WiFi の投稿を表示しています。 すべての投稿を表示
ラベル WiFi の投稿を表示しています。 すべての投稿を表示

2016-02-26

OpenBlocks IoT Family で一時的な Wi-Fi クライアント接続を行う

Web ユーザーインターフェースの設定を変更せず、一時的に Wi-Fi クラアントとして OpenBlocks IoT Family を既設の Wi-Fi ネットワークへ接続する方法を紹介します。

OBDN 技術ブログによる動作検証は、該当するデバイスやソフトウェアの動作について、保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

はじめに


OpenBlocks IoT Family(以下OpenBlocks)の初期設定では、Wi-Fi インターフェースはアクセスポイントとして動作するようになっています。常時 3G や LTE のモバイル回線を利用する場合にこの設定は便利ですが、メンテナンス等の目的で一時的に Wi-Fi クライアントとして既設の Wi-Fi ネットワーク環境に接続したいことがあります。

もちろん Web ユーザーインターフェース経由で設定を変更しても良いのですが、設定を戻すのを忘れて別のネットワーク環境に移った場合、Web ユーザーインターフェースへアクセスできず、設定の初期化が必要になるなど後々少々面倒くさいことになります。

そこで Web ユーザーインターフェースの設定を変更せずに、一時的に OpenBlocks を Wi-Fi クライアントとして既設ネットワークへ接続する方法を紹介します。

Wi-Fi のアクセスポイントモードとクライアントモード


はじめに Wi-Fi のアクセスポイントになっている OpenBlocks がどういう状態であるかを整理してみましょう。ネットワークインターフェース(以下I/F)としては次のような状態になっています。
  • Wi-Fi I/F はアクセスポイントモードに設定
  • Wi-Fi I/F で DHCP のサービスが稼働
したがって次の三つを行えば、アクセスポイントモードからクライアントモードへ切り替えて、既設の Wi-Fi ネットワークに接続できます。
  1. DHCP サービスを停止
  2. Wi-Fi I/F をアクセスポイントモードからクライアントモードへ変更
  3. Wi-Fi クライアントとして必要な設定の投入
これらを順に説明します。

DHCP サービスの停止


DHCP サービスを停止するにはサービスを実施しているプロセスの dhcpd を停止するだけです。dhcpd については単純にkillで問題ありません。

# killall dhcpd

Wi-Fi I/F をアクセスポイントモードからクライアントモードへ変更


Wi-Fi I/F をアクセスポイントをクライアントのモードへ切り替えるのは、少し複雑です。というのも Wi-Fi I/F のドライバーがカーネルモジュールになっていて、モジュールのロード時にモード設定を行っているからです。また Wi-Fi アクセスポイントをサービスする hostapd というプロセスも動いています。手順としては次のようになります。
  1. hostapd の停止
  2. Wi-Fi I/F の停止
  3. ドライバーのモードの切り替え
  4. Wi-Fi I/F の起動
具体的には次の各コマンドを実行します。

# killall hostapd
# ifdown wlan0
# modprobe -r bcm4334x
# modprobe bcm4334x op_mode=1
# ifup wlan0

Wi-Fi クライアントとして必要な設定


以上まで完了したら、後は一般的な Linux を Wi-Fi に接続する場合と同じ手順となります。Wi-Fi クライアントとして必要な設定を行うには、次の2つの手順を踏むことになります。
  1. 既設 Wi-Fi 環境への接続
  2. DHCP クライアントとして設定
既設 Wi-Fi 環境へ接続するためには、SSID(ESSID)とパスフレーズを用意してwpa_supplicant を設定します。wpa_supplicant の設定の詳細は省略しますが、以下の例では /var/run/wpa.conf ファイルで Wi-Fi 接続の設定を行っています。最後に dhclient プログラムを起動すれば完了です。

# cat /var/run/wpa.conf
ctrl_interface=/var/run/wpa_supplicant
network={
        ssid="WIFISSID"
        scan_ssid=1
        key_mgmt=WPA-PSK
        psk="PASSWORD"
}
# wpa_supplicant -s -B -P /var/run/wpa_supplicant.wlan0.pid ¥
        -i wlan0 -D nl80211,wext -c /var/run/wpa.conf
# dhclient -v -pf /run/dhclient.wlan0.pid ¥
        -lf /var/run/dhclient.wlan0.leases wlan0

以上で Wi-Fi クライアントへの切り替えは完了です。この作業では何ら設定を保存していないため次に OpenBlocks を再起動した場合は本来の設定が有効になり、Wi-Fi I/F はアクスセスポイントとして動作します。

Wi-Fi クライアント設定のシェルスクリプト


上記に紹介した作業を毎回手作業で実施するには手順が多すぎますので、これらを実施するシェルスクリプトを最後に紹介します。

#!/bin/sh
#
# OpenBlocks IoT familyでWebのユーザーインターフェースの設定を変更せず、
# 一時的にWi-Fiをクライアント設定に変更するシェルスクリプト
#
# このスクリプト中でsleep 1を多用しているのは、立て続けにコマンドを起動
# するとうまく動かないものがあるため、待ち時間を確保している

export PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# 次の2行はWi-Fi環境に合わせて設定する
SSID=WIFISSID # Wi-Fi接続先のSSID
WKEY=PASSWORD # Wi-Fi接続先のパスフレーズ

IF=wlan0 # 無線I/F名 OpenBlocksの場合wlan0
WPACONF=/var/run/wpa.conf # wpa_supplicantの設定ファイル名

# Wi-Fi I/Fのモード切り替え
killall dhcpd hostapd ; sleep 1
ifdown wlan0 ; sleep 1
modprobe -r bcm4334x ; sleep 1
modprobe bcm4334x op_mode=1 ; sleep 1
ifup wlan0 ; sleep 1

# /etc/network/interfaces の記載によって
# ifupで付加される余計なIPアドレスの削除
ip addr del 192.168.254.254/24 dev ${IF}

# wpa_supplicantの設定ファイル(ここでは/var/run/wpa.conf)の生成
#  一般的なWPAの事前共有鍵の設定を前提にしているため、
#  Wi-Fi環境の設定に応じて修正する
cat <<-EOT >$WPACONF
ctrl_interface=/var/run/wpa_supplicant
network={
   ssid="$SSID"
   scan_ssid=1
   key_mgmt=WPA-PSK
   psk="$WKEY"
}
EOT

# wpa_supplicantの起動
wpa_supplicant -s -B -P /var/run/wpa_supplicant.${IF}.pid \
-i ${IF} -D nl80211,wext -c $WPACONF
sleep 1

# dhcpクライアントサービスの起動
dhclient -v -pf /run/dhclient.${IF}.pid  \
-lf /var/run/dhclient.${IF}.leases ${IF}

# Wi-Fi経由でのssh 接続を許可する場合、
# 以下のコメントアウトを外してiptablesの行を有効にする
# iptables -A INPUT -p tcp --dport ssh -j ACCEPT

2014-10-08

OpenBlocks IoT BX1 開発者向け情報など

OpenBlocks IoTファミリ BX1を発表しました。

M2M・IoTシステムの構築に最適な極小サイズのマイクロサーバー「OpenBlocks® IoTファミリ BX1」を発表

OpenBlocksシリーズは、従来より複数のLANポートを持ち小型堅牢かつ汎用のLinux環境を提供するマイクロサーバとして、ネットワークの監視管理、ゲートウェイなど、様々なシーンで利用していただいていましたが、今回のBX1シリーズにおいては、Wifi/3G/BlueTooth(BLE対応)を標準サポートした、無線通信に重点を置いた製品となっています。

発表ではスケルトンカバーに入った製品としてお見せしていますが、まずは内部写真をここに公開します。


カバーは試作品のため、スケルトン仕様となっていますが、製品ではホワイトとなる予定です。


外部コネクタ。上部がオプション有線接続用端子となり、ケーブルを交換することにより、USB(有線LAN含む)、シリアル(RS-232C/RS-485)、GPIO(最大19ポート)に対応します。
下部がSIMスロットです。


標準でUSBケーブルが添付します。本ケーブルはUSB側からの給電と、シリアル通信をサポートしており、PCに接続する場合は、 USBシリアル経由のコンソールとして見えます。


本体基板の裏側です。


本体基板の上部写真です。

本体の仕様は以下の通り。

CPU モデル インテル® Atom™ プロセッサー 500MHz (デュアルコア)
動作速度 500MHz (デュアルコア)
メインメモリ オンボード 1GB (LPDDR3)
FLASH ROM 4GB (eMMC)
内部インターフェイス 3G(W-CDMA)※1
Bluetooth 4.0
Wi-Fi (IEEE802.11a/b/g/n)
外部インターフェイス USB 2.0(Type-A)ケーブル
GPIO (最大19ポート) オプションケーブルにて対応
シリアル 1ポート RS-232C/RS-485
寸法 (mm) 41.6mm(W)x 96mm(D)x 11.3mm(H)(突起部含まず)
電源 DC 5〜48V
出荷時OS Debian GNU/Linux

※1 NTTドコモ FOMA網に対応予定。他通信事業者向けも検討中。

開発環境は、Debian GNU/Linuxを標準でサポートし、従来のOpenBlocksシリーズと同様に、実機ベースでの手早い開発環境をBXでも提供していきたいと考えています。

提供時期ですが、開発者向けに、本体と各種IOを外だし出来るボードをセットにしたDPパッケージを先に提供し(時期は未定)、製品としては2月を予定しています。

展示会の情報などは、以下のページでご案内しています。

特設サイトURL:
http://openblocks.plathome.co.jp/products/special/bx1_sp/

Facebook:

https://www.facebook.com/OpenBlocksIoT



現在、DPパッケージのリリースに前後して、いち早く製品をご覧いただけるよう、ハンズオンdayやハッカソン、アイディアソンなどを企画しておりますので、日程が決まり次第またお知らせします。


2014-06-09

[.tested] Planex GW-450D 無線LANアダプタ [AX3][A7][A6]

Planex GW-450Dは、802.11ac/n/a/g/bに対応したUSB無線LANアダプタです。
GW-450Dは、写真の小型のタイプと、稼働式アンテナのついたGW-450D KATANAがありますが、アンテナ以外は同一の設計の製品と思われます。
Openblocks AX3およびA7での動作検証を行いました。


OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks AX3/4 Debian 7.5 kernel: 3.2.54
OpenBlocks A7 Debian 7.5 kernel:3.2.54

1. 対応ドライバと事前準備


GW-450Dは、MediaTek MT7610Uを採用しており、現在AX3およびA7/A6に搭載されたカーネル3.2.54ではサポートされていません。
Planex社の以下のページにおいて、開発者向け情報が公開されています。

開発者向け情報|無線LAN USBアダプタ|プラネックス:

ドライバのソースコードは、上記のページよりダウンロードできますが、今回はチップセットメーカであるMediaTek社のホームページよりダウンロードし、OpenBlocks向けにビルドしました。

・カーネル構築環境の導入

本ドライバは、ビルドする際に、カーネルの構築環境を参照するため、build-essentialsによる開発環境の構築のみでは、ドライバのビルドが出来ません。
以下の手順を参考に、カーネルのソースを導入し、make modules_installまでを行っておく必要があります。

カーネルのカスタマイズ手順について(非公式版) [AX3][A6]

・ソースコードの入手と展開

以下のページの、7610U USBよりファイルをダウンロードして下さい。

Downloads - MediaTek:

ダウンロードしたファイルは以下の手順で解凍してください。

# tar jxfv mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2
# cd mt7610u_wifi_sta_v3002_dpo_20130916

common/rtusb_dev_id.cを編集します。
同じバージョンのドライバパッケージを使用する場合は、以下のdiff出力をpatch適用して下さい。
アップデートにより内容が変更されている場合は、参考にして書き換えてください。

diff -u rtusb_dev_id.c.orig rtusb_dev_id.c
--- rtusb_dev_id.c.orig 2014-06-09 15:18:30.209980000 +0900
+++ rtusb_dev_id.c      2014-06-09 15:19:43.299980000 +0900
@@ -36,6 +36,7 @@
 /* module table */
 USB_DEVICE_ID rtusb_dev_id[] = {
 #ifdef MT76x0
+       {USB_DEVICE(0x2019,0xab31)}, /* MT7610U */
        {USB_DEVICE(0x148F,0x7610)}, /* MT7610U */
        {USB_DEVICE(0x0E8D,0x7610)}, /* MT7610U */
        {USB_DEVICE_AND_INTERFACE_INFO(0x0E8D, 0x7630, 0xff, 0x2, 0xff)}, /* MT7630U */

os/linux/config.mkを編集し、wpa_supplicantのサポートをyにします。

# diff -u config.mk.orig config.mk
--- config.mk.orig      2014-06-09 15:22:00.759980000 +0900
+++ config.mk   2014-06-09 15:22:17.039980000 +0900
@@ -23,12 +23,12 @@

 # Support Wpa_Supplicant
 # i.e. wpa_supplicant -Dralink
-HAS_WPA_SUPPLICANT=n
+HAS_WPA_SUPPLICANT=y


 # Support Native WpaSupplicant for Network Maganger
 # i.e. wpa_supplicant -Dwext
-HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
+HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

 #Support Net interface block while Tx-Sw queue full
 HAS_BLOCK_NET_IF=n

変更後、make および installを行います。

# make install

README_STA_usbを参考に、コンフィギュレーションファイルをコピーします。

# mkdir /etc/Wireless/RT2870STA
# cp RT2870STA.dat  /etc/Wireless/RT2870STA/RT2870STA.dat

A7の場合は、デバイスをUSBポートに差し込めば認識するのですが、AX3の場合は、ubootが設定したvmallocのサイズの関係で、ドライバがvmallocに失敗したというメッセージを出し、起動しません。
起動時に一旦ubootに入り、

# openblocks> setenv miscargs vmalloc=200M

として、拡張する必要がありました。

デバイスは、/dev/ra0となります。

ra0       Link encap:Ethernet  HWaddr 00:22:cf:e2:4d:39
          inet addr:192.168.10.95  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::222:cfff:fee2:4d39/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:247723 errors:9 dropped:0 overruns:0 frame:0
          TX packets:1591 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:62913475 (59.9 MiB)  TX bytes:128084 (125.0 KiB)

起動時に立ち上がらない場合は、
/etc/modulesに
mt7650u_sta
を追加してください。

2. wpasupplicantパッケージの導入および設定


以下の記事を参照して下さい。

[.tested] Logitec LAN-W150N/U2WH(BK) 無線LANアダプタ [AX3]

以下の通り、クライアントモードでの動作を確認しました。

# iwconfig ra0
ra0       Ralink STA  ESSID:"******"  Nickname:"MT7610U_STA"
          Mode:Managed  Frequency=2.412 GHz  Access Point: 00:1D:73:C2:F4:00
          Bit Rate=108 Mb/s
          RTS thr:off   Fragment thr:off
          Encryption key:9394-8D4B-D889-F2A3-0EF7-E943-73A8-719C [3]   Security mode:open
          Link Quality=64/100  Signal level:-73 dBm  Noise level:-73 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

3. さいごに


今回は、クライアント接続のみのテストとしています。
AP化に関しては、hostapdが本アダプタをサポートしておらず、また、realtek社の様に専用のhostapdの配布もされていないため、今回は特に追いかけていません。
新たな情報が入り次第、追記させていただきます。

[.tested] Planex GW-450S 無線LANアダプタ [AX3][A7][A6]

Planex GW450Sは、802.11ac/n/aに対応した5GHz帯専用のUSB無線LANアダプタです。
Openblocks AX3およびA7での動作検証を行いました。


OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks AX3/4 Debian 7.5 kernel: 3.2.54
OpenBlocks A7 Debian 7.5 kernel:3.2.54

1. 対応ドライバと事前準備


GW-450Sは、Reaktek 8811AUを採用しており、現在AX3およびA7/A6に搭載されたカーネル3.2.54ではサポートされていません。
Planex社の以下のページにおいて、開発者向け情報が公開されています。

開発者向け情報|無線LAN USBアダプタ|プラネックス:

ドライバのソースコードをこのページのリンクからダウンロードし、OpenBlocks向けにビルドする必要があります。
(2014/06/06現在、Reaktek社の製品情報ページからは8811Uの情報が検索出来ません)

Realtek社のチップセットに関しては、以下の記事で行った手順にて検証作業を行います。

[.tested] Planex GW-USValue-EZ/GW-USWExtreme/GW-USNano2 無線LANアダプタ [AX3][A6]

・カーネル構築環境の導入

本ドライバは、ビルドする際に、カーネルの構築環境を参照するため、build-essentialsによる開発環境の構築のみでは、ドライバのビルドが出来ません。
以下の手順を参考に、カーネルのソースを導入し、make modules_installまでを行っておく必要があります。

カーネルのカスタマイズ手順について(非公式版) [AX3][A6]

・ソースコードの入手と展開

展開には、unzipが必要となります。

# aptitude install unzip

上記、Planex社の開発者向け情報より、Linux版のソースコードを入手します
ダウンロードしたファイルは以下の手順で解凍してください。

# unzip gw-450s_driver_linux_v424.zip
# cd gw-450s_driver_linux_v424
# unzip RTL8811AU_linux_v4.2.4_9533.20131209.zip

このパッケージは、ターゲットが対応する機器ならば、作成されたディレクトリへ移動し、
install.shによりインストールが行えるのですが、Openblocksは対応機器にありませんので、
以下の手順によりドライバパッケージのコンパイルおよびインストールを行います。

# cd RTL8811AU_linux_v4.2.4_9533.20131209
# cd driver
# tar xvzf rtl8811AU_linux_v4.2.4_9533.20131209.tar.gz
# cd rtl8811AU_linux_v4.2.4_9533.20131209

Makefileを編集します。
同じバージョンのドライバパッケージを使用する場合は、以下のdiff出力をpatch適用して下さい。
アップデートにより内容が変更されている場合は、参考にして書き換えてください。

# diff -u Makefile.orig Makefile
--- Makefile.orig       2014-06-06 10:02:14.427254000 +0900
+++ Makefile    2014-06-06 10:05:18.947254000 +0900
@@ -52,7 +52,8 @@
 CONFIG_LOAD_PHY_PARA_FROM_FILE = y
 CONFIG_ODM_ADAPTIVITY = n

-CONFIG_PLATFORM_I386_PC = y
+CONFIG_PLATFORM_I386_PC = n
+CONFIG_PLATFORM_OBS_ARM = y
 CONFIG_PLATFORM_ANDROID_X86 = n
 CONFIG_PLATFORM_JB_X86 = n
 CONFIG_PLATFORM_ARM_S3C2K4 = n
@@ -709,6 +710,17 @@
 CROSS_COMPILE ?=
 KVER  := $(shell uname -r)
 KSRC := /lib/modules/$(KVER)/build
+MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
+INSTALL_PREFIX :=
+endif
+
+ifeq ($(CONFIG_PLATFORM_OBS_ARM), y)
+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
+SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
+ARCH ?= arm
+CROSS_COMPILE ?=
+KVER  := $(shell uname -r)
+KSRC := /lib/modules/$(KVER)/build
 MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
 INSTALL_PREFIX :=
 endif

また、本デバイスのデバイスIDをドライバソースコードに追加する必要があります。
os_dep/linux/usb_intf.cを編集し、RTL8821Aの項目にデバイスIDを追加登録してください。

#ifdef CONFIG_RTL8821A
        /*=== Realtek demoboard ===*/
        {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0811),.driver_info = RTL8821},/* Default ID */
        {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0821),.driver_info = RTL8821},/* Default ID */
        {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8822),.driver_info = RTL8821},/* Default ID */
        /*=== Customer ID ===*/
        {USB_DEVICE(0x7392, 0xA811),.driver_info = RTL8821}, /* Edimax - Edimax */
        {USB_DEVICE(0x04BB, 0x0953),.driver_info = RTL8821}, /* I-O DATA - Edimax */
        {USB_DEVICE(0x2001, 0x3314),.driver_info = RTL8821}, /* D-Link - Cameo */
        {USB_DEVICE(0x2001, 0x3318),.driver_info = RTL8821}, /* D-Link - Cameo */
        {USB_DEVICE(0x0E66, 0x0023),.driver_info = RTL8821}, /* HAWKING - Edimax */
        {USB_DEVICE(0x2019, 0xAB32),.driver_info = RTL8821}, /* Planex - Abocom */
#endif

変更後、make および installを行います。

# make install

デバイスをUSBポートに差し込めば認識します。
デバイスは、/dev/wlan0となります。

起動時に立ち上がらない場合は、
/etc/modulesに
8821au
を追加してください。

本ドライバは、そのままmake するとデバッグメッセージをconsoleに表示しますので、console作業等で気になる場合は、include/autoconf.hにおいて、DEBUGもしくはDBGと書かれたdefine行をコメントアウトすることにより抑止出来ます。

2. wpasupplicantパッケージの導入および設定


以下の記事を参照して下さい。

[.tested] Logitec LAN-W150N/U2WH(BK) 無線LANアダプタ [AX3]

本製品は5GHz帯専用の製品ですので、AP側も対応したものを使用する必要があります。

以下の通り、クライアントモードでの動作を確認しました。

# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:22:cf:eb:8d:2b
          inet addr:192.168.10.107  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::222:cfff:feeb:8d2b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19492 errors:0 dropped:3063 overruns:0 frame:0
          TX packets:2187 errors:0 dropped:4 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:172328795 (164.3 MiB)  TX bytes:4108434 (3.9 MiB)

# iwconfig wlan0
wlan0     IEEE 802.11an  ESSID:"******"  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency:5.18 GHz  Access Point: 00:1D:73:C2:F2:A0
          Bit Rate:150 Mb/s   Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:****-****-****-****-****-****-****-****   Security mode:open
          Power Management:off
          Link Quality=48/100  Signal level=56/100  Noise level=0/100
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

3. さいごに


今回は、クライアント接続のみのテストとしています。
AP化や、WPSボタンの使用方法に関しては、前回の記事を参考に試してみてください。

2014-01-09

[.tested] SquidGuardによるURLフィルタリング [Debian Wheezy][AX3][A7]


前回の記事において、ClamAVによるアンチウィルスゲートウェイの構築方法をご紹介しました。
今回は、この環境にURLフィルタリングの機能として、SquidGuardを導入します。

 SquidGuard:

OBDN技術ブログによる動作検証は、該当するソフトウェアの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks AX3/4 Debian 7.1 kernel: 3.2.40
OpenBlocks AX7 Debian 7.1 kernel: 3.2.40

1.事前準備

squid3などの環境は、前回の記事をご参照下さい。
今回は、前回の環境の上に追加で設定しています。

[.tested] Clam AntiVirusによるWebフィルタリング [Debian Wheezy][AX3][A7]

2.SquidGuardのインストールと設定


squidguardをdebianのパッケージよりインストールします。

# aptitude install squidguard

ドメイン、URLリストの用意

ブロックしたいURL、パスしたいURLをドメイン毎および、URL指定により設定します。
blacklistに関しては、国内においてフリーでメンテナンスされているものは、おそらくありません。
このソリューションを利用する場合、国内サイトのURL/ドメインリストは自身で管理する必要があります。
海外のサイトに関しては、SquidGuardのページからもリンクされていますが、個人使用に限り、無償で提供されるリストがありますので、海外のポルノサイトやスパムサイトなどをある程度ブロックできるのではないかと思います。
今回は、 Shalla Secure Services からblacklistを取得しました。
必要なリストだけを展開すればいいのですが、今回は全て取得しています。

# wget http://www.shallalist.de/Downloads/shallalist.tar.gz
# tar xvzf shallalist.tar.gz
# cp -R BL /var/lib/squidguard/db

/var/lib/squidguard/db/BLの下に全てのカテゴリのデータが展開されていますので、必要なものを使用して下さい。
また、自身で管理するリストの作成は、 /var/lib/squidguard/dbの下に別のディレクトリを作成して管理します。
たとえば、denyというディレクトリを作成し、以下の様に、domainsとurlsというテキストファイルを作成します。

# ls -la deny
total 32
drwxr-xr-x 2 proxy proxy 4096 Jan  8 17:20 .
drwxr-xr-x 4 proxy proxy 4096 Jan  7 17:08 ..
-rw-r--r-- 1 proxy proxy   73 Jan  8 17:20 domains
-rw-r--r-- 1 proxy proxy   32 Dec 26 17:55 urls

それぞれ、domain名またはurlを列記したテキストファイルとなります。

squidGuard.confの設定

時間でのアクセス制限なども可能ですが、今回は、最もシンプルな記述をしています。
badが自身で管理するブラックリスト、pornが、上記のサイトより取得したポルノサイトのブラックリストです。localnetはこちらの環境のIPアドレスを記述していますので、ネットワーク環境に合わせて変更して下さい。

# cat squidGuard.conf
#
# CONFIG FILE FOR SQUIDGUARD
#
# Caution: do NOT use comments inside { }
#

dbhome /var/lib/squidguard/db
logdir /var/log/squidguard

#
# SOURCE ADDRESSES:
#

src localnet {
        ip      192.168.3.0/24
}

#
# DESTINATION CLASSES:
#

dest good {
}

dest bad {
        domainlist      deny/domains
        urllist         deny/urls
}

dest porn {
        domainlist      BL/porn/domains
        urllist         BL/porn/urls
}

#
# ACL RULES:
#

acl {
        localnet {
                pass good !bad !porn
        }
        default {
                pass none
                redirect http://192.168.3.103/cgi-bin/squidGuard-simple.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
                log /var/log/squidguard/block.log
        }
}

redirectの記述は、該当するアドレスのリクエストを受け取った時に、警告ページへリダイレクトする設定であり、cgiスクリプトとして、squidguardパッケージに付属するサンプルを若干修正しています。 警告表示のためのサーバが必要ですが、前回設定したsquidclamav用のapache2環境を使用しています。

# cd /usr/share/doc/squidguard/examples/
# gunzip squidGuard-simple-de.cgi.gz
# cp squidGuard-simple-de.cgi.gz /usr/lib/cgi-bin/

そのままでも動作はしますが、squidguardのロゴファイルを、
http://www.squidguard.org/Logos/squidGuard.gif
に変更しています。

dbファイルは、Berkeley DB形式に変更する必要があります。

全てを更新する場合:
# squidGuard -C all

変更したカテゴリだけを変更する場合:
# squidGuard -C /var/lib/squidguard/db/deny

更新後、dbファイルのユーザ、グループを変更します。

# chown -R proxy /var/lib/squidguard/db/
# chgrp -R proxy /var/lib/squidguard/db/

3.squid3の設定


squidguardは、squidclamavの設定から呼び出すことも可能ですが、squid3側で設定することをお勧めします。

/etc/squid3/squid.confに以下の行を追加します。該当のオプションがある部分を編集してください。

  :
url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
  :

編集後、squid3の設定のリロードを行います。

# service squid3 reload


4.動作確認


ブロック指定したドメインのwebサイトにアクセスしてみます。



今回は、前回最後に設定した透過型設定であるため、ブラウザ側でのproxy設定は行っていません。

5.Wifi接続によるモバイルデバイスへの対応


Wifi APとして動作させる方法としては、以下の記事を参考にして下さい。
今回はブリッジ設定により同一セグメントとして扱いました。

 [.tested] Logitec LAN-W150NU2 Wheezyパッケージ、新カーネルによるデバイス評価およびAP構築 [Debian Wheezy][AX3][A6]

/etc/network/interfacesのbr0設定に関しては、前回の記事で行った、eth0-eth1ブリッジの設定を変更する必要はありません。wlan0はhostapdが起動時にaddします。

以下、iphone4Sでアクセスした場合のスクリーンショットです。

<テストウィルス検出時>

<URLフィルタリング>

6.さいごに


今回は、squidguardを使用したURLフィルタリング装置の構築を行いました。
同時にWifiAPとして設定することにより、モバイルデバイス向けのWebフィルタリングも行ってみました。

2013-06-25

[.tested] モバイル通信およびLANに対応したNAT型のAP構築 [Debian Wheezy][AX3][A6]

AX3およびA6におけるUSB Wifiアダプタを使用したAP構築については、前回、

[.tested] Logitec LAN-W150NU2 Wheezyパッケージ、新カーネルによるデバイス評価およびAP構築 [Debian Wheezy][AX3][A6]

において、bridge接続型の構築方法を紹介していますが、今回、上流を3G/4G通信やWifiで構築する場合に都合のいい、独立したネットワークセグメントをNAT接続する設定を行います。

デバイスには、上記の記事と同じく、APの導入が容易なLogitec LAN-W150N/U2を使用します。
また、本記事の検証環境は、Debian Wheezy rc1を使用しています。


OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
Debian 7.0 Wheezy
OpenBlocks AX3/4 kernel: 3.2.36
OpenBlocks A6 kernel: 3.2.36
Logitec LAN-W150N/U2

1. 対応ドライバと事前準備

RT2870を使用しており、AX3のkernel-3.2.36では、rt2800usbドライバでサポートされています。

ただし、このドライバを使用する場合、ralink社のサイトより、
rt2870のファームウェア: rt2870.bin
を取得し、/lib/firmwareの下に置いて下さい。

また、上記ファームウェアはnon-freeのfirmware-ralinkパッケージからも導入することが出来ます。
non-freeパッケージを追加する場合は、/etc/apt/sources.listに、以下の記述を追加します。

deb ftp://ftp.plathome.co.jp/pub/debian wheezy main non-free
deb-src ftp://ftp.plathome.co.jp/pub/debian wheezy main non-free

deb ftp://ftp.plathome.co.jp/pub/debian-security wheezy/updates main
deb-src ftp://ftp.plathome.co.jp/pub/debian-security wheezy/updates main

ralink社のデバイス向けファームウェアパッケージの導入を行います。

# aptitude update
# aptitude install firmware-ralink

dmesgでは以下のメッセージが表示されます。

usb 1-1.1: USB disconnect, device number 3
usb 1-1.1: new high-speed USB device number 5 using orion-ehci
usb 1-1.1: New USB device found, idVendor=0789, idProduct=0168
usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1.1: Product: 802.11 n WLAN
usb 1-1.1: Manufacturer: Ralink
usb 1-1.1: SerialNumber: 1.0
usb 1-1.1: reset high-speed USB device number 5 using orion-ehci
ieee80211 phy1: Selected rate control algorithm 'minstrel_ht'
Registered led device: rt2800usb-phy1::radio
Registered led device: rt2800usb-phy1::assoc
Registered led device: rt2800usb-phy1::quality

インタフェースはwlan0となります。

2. ip_forwardの有効化


/etc/sysctl.confを編集し、ip_forwardを有効にします。

# vi /etc/sysctl.conf
net.ipv4.ip_forward=1

修正を反映させるためには再起動が必要ですが、コマンドラインより、

sysctl net.ipv4.ip_forward=1

と入力すればその時点で有効になります。
(上記のsysctl.confの設定がないと再起動時には元に戻ります。)

3. アクセスポイントとしての設定方法 有線LAN-Wifi


wlan0に対してhostapdによりワイヤレスサービスを行います。
今回はbridge接続ではないため、上流からdhcpサービスは受けません。
dhcpサーバを導入し、wlan0に対して適用します。

・事前準備

事前準備として、dhcpdサーバを導入します。

# aptitude install isc-dhcp-server

また、DNSキャッシュとして、dnsmasqを導入します。

# aptitude instal dnsmasq

・/etc/network/interfaces

auto eth0
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
        address 192.168.0.1
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255

・/etc/dhcp/dhcpd.conf

INTERFACES="wlan0";
option domain-name "hoge.example.org";
option domain-name-servers hoge.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0{
        range 192.168.0.100 192.168.0.200;
        option routers 192.168.0.1;
        option domain-name-servers 192.168.0.1;
}

dnsmasqを導入しない場合は、
option domain-name-servers 192.168.0.1
に利用できるDNSサーバアドレスを記述します。

・hostapd-1.0の導入

Debian/Wheezyパッケージより、hostapdも1.0になっており、今回はバイナリパッケージをそのまま利用します。hostapdパッケージのビルド作業は必要ないため、容易に環境を構築出来ます。

 hostapdパッケージの導入

# aptitude install hostapd

 設定ファイルとして、/etc/hostapd/hostapd.conf を以下の様に記述します。
 <SSID>およびパスフレーズはそれぞれの環境に合わせて変更して下さい。

interface=wlan0
driver=nl80211

country_code=JP
ieee80211d=1

ssid=<SSID>
channel=6
hw_mode=g

wpa=2
wpa_passphrase=<設定するパスフレーズ>

wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

ieee80211n=1
wmm_enabled=1

起動方法は以下の通りです。

# hostapd -B /etc/hostapd/hostapd.conf

自動起動する場合は、/etc/default/hostapdの以下の部分を修正してください。

DAEMON_CONF="/etc/hostapd/hostapd.conf"

・iptablesによるNAT設定

# iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -o eth0 -j MASQUERADE

4. アクセスポイントとしての設定方法 3G/4G-Wifi



上記3項の通り、wlan0側の設定を行い、3Gのモバイルアダプタの設定を追加します。
3G/4Gのモバイル通信に関しては、

周辺機器接続テスト記事一覧-Debian Wheezyベースファームウェア版

にて検証したモバイル通信アダプタを使用しています。
構築方法については記事をご参照下さい。

上記記事に書いたreplacedefaultroute設定を行っていれば、ponで自動的に上流が3G回線に切り替わります。
wlan0から3Gアダプタ側へのNAT設定は、iptablesコマンドで以下の様に指定します。

# iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -o ppp0 -j MASQUERADE

5.さいごに


iptablesに関しては、上記ではコマンドラインより直接入力していますが、本格的に導入する場合は不要なポートを塞ぐなど、十分な設定が必要だと思います。
記述に関しては、Wheezyにて若干手順が変わっているようなので、 別途ご報告します。

2013-04-30

[.tested] Logitec LAN-W150NU2 Wheezyパッケージ、新カーネルによるデバイス評価およびAP構築 [Debian Wheezy][AX3][A6]

Logitec LAN-W150N/U2WH(BK)は、802.11b/g/nに対応したUSB無線LANアダプタです。
このデバイスに関しては、AX3/A6ともに、Debian 6.0(squeeze)ベースのファームウェアでのデバイス評価は行ってきましたが、先日β公開されたDebian 7.0(Wheezy)環境において、改めて評価作業を行いました。
新環境においては、AX3/A6ともにKernel 3.2.36になるため、本デバイスで採用されているralink RT2870のドライバはリリースしたカーネルによりサポートされ、扱いが簡単になりました。


OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>

Debian 7.0 Wheezy
OpenBlocks AX3/4 kernel: 3.2.36
OpenBlocks A6 kernel: 3.2.36

1. 対応ドライバと事前準備

RT2870を使用しており、AX3のkernel-3.2.36では、rt2800usbドライバでサポートされています。

ただし、このドライバを使用する場合、ralink社のサイトより、
rt2870のファームウェア: rt2870.bin
を取得し、/lib/firmwareの下に置いて下さい。

また、上記ファームウェアはnon-freeのfirmware-ralinkパッケージからも導入することが出来ます。
non-freeパッケージを追加する場合は、/etc/apt/sources.listに、以下の記述を追加します。

deb ftp://ftp.plathome.co.jp/pub/debian wheezy main non-free
deb-src ftp://ftp.plathome.co.jp/pub/debian wheezy main non-free

deb ftp://ftp.plathome.co.jp/pub/debian-security wheezy/updates main
deb-src ftp://ftp.plathome.co.jp/pub/debian-security wheezy/updates main

ralink社のデバイス向けファームウェアパッケージの導入を行います。

# aptitude update

# aptitude install firmware-ralink

dmesgでは以下のメッセージが表示されます。

usb 1-1.1: USB disconnect, device number 3
usb 1-1.1: new high-speed USB device number 5 using orion-ehci
usb 1-1.1: New USB device found, idVendor=0789, idProduct=0168
usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1.1: Product: 802.11 n WLAN
usb 1-1.1: Manufacturer: Ralink
usb 1-1.1: SerialNumber: 1.0
usb 1-1.1: reset high-speed USB device number 5 using orion-ehci
ieee80211 phy1: Selected rate control algorithm 'minstrel_ht'
Registered led device: rt2800usb-phy1::radio
Registered led device: rt2800usb-phy1::assoc
Registered led device: rt2800usb-phy1::quality

インタフェースはwlan0となります。

2. wpasupplicantパッケージの導入および設定


以下の記事を参照して下さい。

【.tested】Logitec LAN-W150N/U2WH(BK) 無線LANアダプタ [AX3]

上記のドライバにより、AX3、A6においてクライアントモードでの動作を確認しました。

3. アクセスポイントとしての設定方法 (ブリッジ接続)


wlan0およびeth0をブリッジ接続し、hostapdによりワイヤレスサービスを行います。

・事前準備

事前準備として、bridge-utilsパッケージを導入します。

# aptitude install bridge-utils

・ブリッジ(br0)の設定

auto eth0
iface eth0 inet static
address 0.0.0.0

auto wlan0
iface wlan0 inet manual

# Bridge network interface  /* 固定IPアドレスの場合 */
auto br0
iface br0 inet static
address 172.16.12.248
netmask 255.255.255.0
network 172.16.12.0
broadcast 172.16.12.255
gateway 172.16.12.5
dns-nameservers 172.16.12.6
bridge_ports eth0
bridge_stp off

DHCPによりIPアドレスを取得する場合は、br0についての記述を以下のように変更して下さい。

# Bridge network interface  /* DHCPによりホストのIPアドレスを貰う場合 */
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off

wlan0のブリッジ設定に関しては、hostapd-1.0が行うため必要ありません。

・hostapd-1.0の導入

Debian/Wheezyパッケージより、hostapdも1.0になっており、今回はバイナリパッケージをそのまま利用します。hostapdパッケージのビルド作業は必要ないため、容易に環境を構築出来ます。

 hostapdパッケージの導入

# aptitude install hostapd

 設定ファイルとして、/etc/hostapd/hostapd.conf を以下の様に記述します。
 <SSID>およびパスフレーズはそれぞれの環境に合わせて変更して下さい。

interface=wlan0
bridge=br0
driver=nl80211

country_code=JP
ieee80211d=1

ssid=<SSID>
channel=6
hw_mode=g

wpa=2
wpa_passphrase=<設定するパスフレーズ>

wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

ieee80211n=1
wmm_enabled=1

起動方法は以下の通りです。

# hostapd -B /etc/hostapd/hostapd.conf

自動起動する場合は、/etc/default/hostapdの以下の部分を修正してください。

DAEMON_CONF="/etc/hostapd/hostapd.conf"

4.さいごに


3.2.36カーネルへの移行および、Debian Wheezyによるパッケージのバージョンアップにより、ralink rt2870チップセットを使用したAX3およびA6のAP構築が簡単に行えるようになりました。

また、開発環境をお持ちの方は、最新版のhostapd-2.0のセルフビルドの方法に関しては、
[.tested] LAN-W150NU2 / hostapdによるWifiアクセスポイントの構築 [AX3]
にて公開しています。

2013-04-12

[.tested] Planex GW-USValue-EZ/GW-USWExtreme/GW-USNano2 無線LANアダプタ [AX3][A6]

Planex GW-USValue-EZ/GW-USWExtreme/GW-USNano2は、802.11b/g/nに対応したUSB無線LANアダプタです。
Openblocks AX3およびA6での動作検証を行いました。




OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks AX3/4 Debian 6.0 kernel: 3.0.6
OpenBlocks A6 Debian 6.0 kernel: 2.6.31.8

1. 対応ドライバと事前準備


AX3の場合、クライアントモードのみで使用する場合は、リリースされているカーネルでサポートされます。
A6での使用および両モデルにてAPとしての構築を行う場合は、realtek社からRTL8192CU向けのドライバをダウンロードして使用します。
なお、GW-USValue-EZとGW-USWExtremeは、lsusbで確認すると両方ともGW-USValue-EZと表示され、同一のVENDOR/DEVICEであることを確認しています。

・AX3の場合

上記の3デバイスは、AX3のカーネルパッケージ3.0.6では、rtl8192cuドライバにおいてサポートされています。
本ドライバはリリースされているカーネルでは組み込み済みであり、カーネルの再構築などは必要ありません。

ただし、カーネルに組み込まれたrtl8192cuドライバは、別途メーカから配布されたファームウェアを読み込む仕様になっています。
このファームウェアは、debian squeezeでは

http://packages.debian.org/squeeze-backports/firmware-realtek

にあるように、firmware-realtek (0.35~bpo60+1)に含まれています。
backports/non-freeのパッケージを一時的にインストールするために、/etc/apt/sources.listに以下の行を追加します。

deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
インストールパッケージリストをアップデートし、インストールします。

# aptitude update
# aptitude -t squeeze-backports install firmware-realtek

/lib/firmware/rtlwifi/rtl8192cufw.binがインストールされているのを確認してください。

上記作業の後、デバイスをUSBに差し込むことにより認識し、デバイスは、wlan0となります。

・A6の場合、およびAPの構築を行う場合。

RTL8192CUは、A6のカーネルパッケージ2.6.31では対応していません。

また、AX3においてAPを構築する場合、カーネルサポートのrtl8192cuモジュールを利用し、debianのパッケージや、(カスタマイズされていない)ソースパッケージからビルドしたhostapdにおいてnl80211ドライバを適用させた場合、接続と切断を繰り返す状態が続き、正常に動作しないことを確認しています。

そのため、A6で使用する場合、もしくはAPの構築を行う場合は、Realtek社のWebページより、ドライバのソースコードパッケージおよび、RTL8192CUに対応したドライバを組み込んだhostapdのパッケージをダウンロードして使用します。

Software: Drivers & Utilities / RTL8192CU

RTL8192CUの、Linux Kernel 2.6.18~2.6.38 and Kernel 3.0.8 の項目にあるリンクからドライバパッケージをダウンロードします。
ダウンロードしたファイルは以下の手順で解凍してください。

# unzip RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip

このパッケージは、ターゲットが対応する機器ならば、作成されたディレクトリへ移動し、
install.shによりインストールが行えるのですが、Openblocksは対応機器にありませんので、
以下の手順によりドライバパッケージのコンパイルおよびインストールを行います。

# cd RTL8188C_8192C_USB_linux_v3.4.4_4749.20121105
# cd driver
# tar xvzf rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105.tar.gz
# cd rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105

Makefileを編集します。
同じバージョンのドライバパッケージを使用する場合は、以下のdiff出力をpatch適用して下さい。
アップデートにより内容が変更されている場合は、参考にして書き換えてください。

# diff -u Makefile.orig Makefile
--- Makefile.orig       2012-07-30 21:51:05.000000000 +0900
+++ Makefile    2013-04-10 13:32:54.000000000 +0900
@@ -36,7 +36,8 @@
 CONFIG_RTL8192CU_REDEFINE_1X1 =n
 CONFIG_WAKE_ON_WLAN                            =       n

-CONFIG_PLATFORM_I386_PC = y
+CONFIG_PLATFORM_I386_PC = n
+CONFIG_PLATFORM_OBS_ARM = y
 CONFIG_PLATFORM_TI_AM3517 = n
 CONFIG_PLATFORM_ANDROID_X86 = n
 CONFIG_PLATFORM_ARM_S3C2K4 = n
@@ -254,6 +255,17 @@
 CROSS_COMPILE ?=
 KVER  := $(shell uname -r)
 KSRC := /lib/modules/$(KVER)/build
+MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
+INSTALL_PREFIX :=
+endif
+
+ifeq ($(CONFIG_PLATFORM_OBS_ARM), y)
+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
+SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
+ARCH ?= arm
+CROSS_COMPILE ?=
+KVER  := $(shell uname -r)
+KSRC := /lib/modules/$(KVER)/build
 MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
 INSTALL_PREFIX :=
 endif

変更後、make および installを行います。

# make install

ドライバは、
AX3の場合: /lib/modules/3.0.6/kernel/drivers/net/wireless/
A6の場合: /lib/modules/2.6.31/kernel/drivers/net/wireless/
の下にコピーされ、depmod -aされます。
不要になり、削除する場合は、8192cu.koを削除し、depmod -aして下さい。

ただし、AX3において本ドライバを使用する場合、標準配布されているカーネルにはすでにrtl8192cuドライバモジュールが含まれているため、
/etc/modprobe.d/blacklist.confに、下記の記述を追加して組み込みを抑止してください。

blacklist rtl8192cu

デバイスをUSBポートに差し込めば認識します。
デバイスは、/dev/wlan0となります。

本ドライバは、そのままmake すると大量のデバッグメッセージをconsoleに表示しますので、console作業等で気になる場合は、

include/autoconf.hにおいて、DEBUGもしくはDBGと書かれたdefine行をコメントアウトすることにより抑止出来ます。

2. wpasupplicantパッケージの導入および設定


以下の記事を参照して下さい。

[.tested] Logitec LAN-W150N/U2WH(BK) 無線LANアダプタ [AX3]

上記のドライバにより、AX3、A6においてクライアントモードでの動作を確認しました。

3. hostapdによるAPモードでの使用方法


eth0とwlan0をブリッジ接続してAPモードでの設定を行いました。

・事前準備

事前準備として、bridge-utilsパッケージを導入します。

# aptitude install bridge-utils

・ブリッジ(br0)の設定

/etc/network/interfacesを以下の様に記述します。

auto eth0
iface eth0 inet static
address 0.0.0.0

auto wlan0
iface wlan0 inet manual
pre-up iw dev wlan0 del
pre-up iw phy phy0 interface add wlan0 type managed 4addr on

# Bridge network interface
auto br0
iface br0 inet static
address 172.16.12.248
netmask 255.255.255.0
network 172.16.12.0
broadcast 172.16.12.255
gateway 172.16.12.5
dns-nameservers 172.16.12.6
bridge_ports eth0 wlan0
bridge_stp off

ブリッジのアドレスをdhcpで取得する場合はbr0の設定は以下の通りです。

# Bridge network interface
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0
bridge_stp off

・hostapdの作成と設定

上記ドライバパッケージを展開したディレクトリの下の、
wpa_supplicant_hostapdディレクトリ下にある、
wpa_supplicant_hostapd-0.8_rtw_20120803.zip
というrealtek専用のhostapdパッケージファイルを展開して、使用します。

パッケージファイルを展開し、hostapdディレクトリにてmakeを行うと、hostapdが作成されます。

# cd wpa_supplicant_hostapd-0.8
# cd hostapd
# make
# make install

hostapdおよびhostapd_cliが/usr/local/binにコピーされます。

hostapd.confは、wpa_supplicant_hostapdの下にあるサンプル、

rtl_hostapd_2G.conf

を、環境に合わせて変更してください。
変更したファイルは、/etc/hostapdというディレクトリを作成し、そこにコピーします。

大まかな変更点としては、
interfaceはwlan0、
ssidとパスフレーズは必ず変更してください。
また、今回は、ブリッジ設定となりますので、bridge=br0を設定します。

# vi rtl_hostapd_2G.conf

##### hostapd configuration file ##############################################

interface=wlan0
ctrl_interface=/var/run/hostapd
ssid=<SSID>
channel=6
wpa=2
wpa_passphrase=<パスフレーズ>
bridge=br0



##### Wi-Fi Protected Setup (WPS) #############################################

eap_server=1

# WPS state
# 0 = WPS disabled (default)
# 1 = WPS enabled, not configured
# 2 = WPS enabled, configured
wps_state=2

uuid=12345678-9abc-def0-1234-56789abcdef0

# Device Name
# User-friendly description of device; up to 32 octets encoded in UTF-8
device_name=RTL8192CU

# Manufacturer
# The manufacturer of the device (up to 64 ASCII characters)
manufacturer=Realtek

# Model Name
# Model of the device (up to 32 ASCII characters)
model_name=RTW_SOFTAP

# Model Number
# Additional device description (up to 32 ASCII characters)
model_number=WLAN_CU

# Serial Number
# Serial number of the device (up to 32 characters)
serial_number=12345

# Primary Device Type
# Used format: <categ>-<OUI>-<subcateg>
# categ = Category as an integer value
# OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for
#       default WPS OUI
# subcateg = OUI-specific Sub Category as an integer value
# Examples:
#   1-0050F204-1 (Computer / PC)
#   1-0050F204-2 (Computer / Server)
#   5-0050F204-1 (Storage / NAS)
#   6-0050F204-1 (Network Infrastructure / AP)
device_type=6-0050F204-1

# OS Version
# 4-octet operating system version number (hex string)
os_version=01020300

# Config Methods
# List of the supported configuration methods
config_methods=label display push_button keypad


##### default configuration #######################################

driver=rtl871xdrv
beacon_int=100
hw_mode=g
ieee80211n=1

・hostapdの起動

# /usr/local/bin/hostapd -B /etc/hostapd/rtl_hostapd_2G.conf


上記のhostapdを使用して、A6,AX3とiPhone4S/Nexus7間でのWifi接続を確認しました。

4. APモードでハードウェアWPSボタンを使う方法


hostapdには、WPSのサポートがあり、hostapd_cliコマンドやキーボードでWPSのコントロールを行えます。
GW-USNano2には小型ながらもWPSボタンがハードウェア的に用意されており、realtekのドライバパッケージ含まれるハードウェアボタン用のシグナルハンドルのサンプルプログラムが使用できます。
hardware_wps_pbcディレクトリの下のsample.cをmakeし実行すると、ボタンを2秒押すと、
get HW_PBC signal from driver
というメッセージがコンソールに表示されます。
この表示の代わりに

system("hostapd_cli wps_pbc -i wlan0");

と書くと、WPSボタンを使った接続ネゴシエーションを行うための、WPSボタンハンドル用のデーモンとすることが可能になります。
ただし、評価用の実装であることをご理解下さい。

上記の設定において、Nintendo DSiを使用してWPS接続が出来ることを確認しました。

5. さいごに


今回は、AX3/A6の両モデルでAP構築の可能な小型のUSB Wifiアダプタとして、rtl8192cuシリーズを使用した3モデルの評価を行いました。

2013-03-21

[.tested] LAN-W150NU2 / hostapdによるWifiアクセスポイントの構築 [AX3]

Logitec LAN-W150N/U2WH(BK)は、802.11b/g/nに対応したUSB無線LANアダプタです。
前回、クライアント側のみの評価を行いましたが、今回はアクセスポイント(無線LANブリッジ)としてhostapd-2.0を導入し、設定、検証しました。


OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>

OpenBlocks AX3/4 Debian 6.0 kernel: 3.0.6

1. 対応ドライバと事前準備

RT2870を使用しており、AX3のkernel-3.0.6では、rt2800usbドライバでサポートされています。

ただし、このドライバを使用する場合、ralink社のサイトより、
rt2870のファームウェア: rt2870.bin
を取得し、/lib/firmwareの下に置いて下さい。
また、上記ファームウェアはnon-freeのfirmware-ralinkパッケージからも導入することが出来ます。

dmesgでは以下のメッセージが表示されます。

usb 1-1: new high speed USB device number 2 using ehci_marvell
usb 1-1: New USB device found, idVendor=0789, idProduct=0168
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: 802.11 n WLAN
usb 1-1: Manufacturer: Ralink
usb 1-1: SerialNumber: 1.0

インタフェースはwlan0となります。

クライアントとして使用する場合は、前回の記事を参照して下さい。

【.tested】Logitec LAN-W150N/U2WH(BK) 無線LANアダプタ [AX3]

2. アクセスポイントとしての設定方法 (ブリッジ接続)


wlan0およびeth0をブリッジ接続し、hostapdによりワイヤレスサービスを行います。

・事前準備

事前準備として、iwおよびbridge-utilsパッケージを導入します。

# aptitude install iw bridge-utils

・ブリッジ(br0)の設定

auto eth0
iface eth0 inet static
address 0.0.0.0

auto wlan0
iface wlan0 inet manual
pre-up iw dev wlan0 del
pre-up iw phy phy0 interface add wlan0 type managed 4addr on

# Bridge network interface
auto br0
iface br0 inet static
address 172.16.12.248
netmask 255.255.255.0
network 172.16.12.0
broadcast 172.16.12.255
gateway 172.16.12.5
dns-nameservers 172.16.12.6
bridge_ports eth0 wlan0
bridge_stp off

・hostapd-2.0の導入

今回は、debian/squeezeのhostapdパッケージ(0.6)ではなく、最新のhostapd-2.0を導入しました。
手順としては、

 hostapd-2.0のソースパッケージを入手
# wget http://hostap.epitest.fi/releases/hostapd-2.0.tar.gz

 ビルドに必要なライブラリのインストール
# aptitude install libssl-dev libnl-dev

 パッケージの展開
# tar xvzf hostapd-2.0.tar.gz
# cd hostapd-2.0/hostapd

.configの修正
# cp defconfig .config

以下の部分のコメントを外します。(802.11nを有効にする)
# IEEE 802.11n (High Throughput) support
CONFIG_IEEE80211N=y

 ビルド/インストール
# make
# make install

 設定ファイルとして、/etc/hostapd/hostapd.conf を以下の様に記述します。
 <SSID>およびパスフレーズはそれぞれの環境に合わせて変更して下さい。

interface=wlan0
bridge=br0
driver=nl80211

country_code=JP
ieee80211d=1

ssid=<SSID>
channel=6
hw_mode=g

wpa=2
wpa_passphrase=<設定するパスフレーズ>

wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

ieee80211n=1
wmm_enabled=1

 起動方法は以下の通りです。
 自動起動する場合は、rc.localに書くのが簡単です。

# hostapd -B /etc/hostapd/hostapd.conf

3.性能測定方法


iperfを使用します。

<サーバ側>
ブリッジ設定したAX3側にiperfをインストールし、サーバとして動作させます。

# aptitude install iperf

# iperf -s

<クライアント側>
ワイヤレス接続したPCに、jperfを入れて、GUIにより操作します。
jperfはsourceforgeより入手してください。

 JPerf | Free Development software downloads at SourceForge.net