Quantcast
Channel: OBDNマガジン
Viewing all 98 articles
Browse latest View live

[.tested] SII MB-B100-00 CDMA 1X 通信アダプタ [debian Wheezy][AX3][A7/A6]

$
0
0


SII MB-B100-00は、CDMA 1x 通信モジュール(セイコーインスツル製 WM-M200A)を内蔵したKDDI CDMA1x 汎用通信アダプタです。
KDDI CDMA 1x 通信サービスを利用して、パケット通信、SMS 受信、GPS 測位を行うことができます。
今回は、本装置によるパケット通信サービスをOpenBlocks AX/A7/A6で 利用するための検証を行います。

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

<検証環境>
Debian 7.1 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A6/A7 kernel: 3.2.40

<使用機器>
OpenBlocks AX3
OpenBlocks A6/A7
SII MB-B100-00 CDMA 1X 通信アダプタ

1. 事前準備


本装置は、RS-232Cインタフェースにより接続します。
OpenBlocksの場合は、RS-232Cポートに接続しますが、他社の外付けモデムと同様に、別売の
シリアル変換アダプタ(ストレート) PH-RD/RH/600を使用します。
(添付のクロスアダプタを使用する場合は、Dsub9pinのオスメスのシリアルクロスケーブルにより接続して下さい)


RS-232Cポートのデバイス名は、
/dev/ttyS1
になります。


2. 接続方法


接続は、他のモバイル通信アダプタと同様、pppconfigで設定を行います。

pppconfigをインストールします。

# aptitude install pppconfig

pppconfigの設定は以下の通りです。

Provider Name au
Configure Nameservers (DNS) Dynamic
Authentication Method for test PAP
User Name アカウント名(*1)
Password パスワード(*1)
Speed 19200
Pulse or Tone Tone
Phone Number 電話番号(*2)
Choose Modem Config Method No
Select Modem Port Manual
Manually Select Modem Port /dev/ttyS1

(*1) 通信事業者より提供されたアカウント名、パスワードを使用してください。
(*2) 通信事業者より提供された番号を使用してください。

/etc/chatscripts/auを編集します。
ATZコマンドはこのモジュールの場合使用出来ません。
また、その後の処理も一部変更しています。
(****は発信する電話番号のため、置き換えてください)

# This chatfile was generated by pppconfig 2.3.18.
# Please do not delete any of the comments.  Pppconfig needs them.
#
# ispauth PAP
# abortstring
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TON
E' ABORT 'NO ANSWER' ABORT DELAYED
# modeminit
#'' ATZ
# ispnumber
#OK-AT-OK "ATDT****"
''"ATDT****"
# ispconnect
CONNECT \d\c
# prelogin

# ispname
# isppassword
# postlogin

# end of pppconfig stuff

eth0や他のインタフェースが有効になっている場合は、/etc/ppp/peers/auに、以下の行を加えることにより、defaultrouteが変更されます。

replacedefaultroute


上記設定により、外部のサーバにアクセス出来ることを確認しました。

# pon au
# ifconfig ppp0
ppp0      Link encap:Point-to-Point Protocol
          inet addr:106.170.173.51  P-t-P:210.169.0.102  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:3 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:72 (72.0 B)  TX bytes:87 (87.0 B)

ただ、poffコマンドにより通信終了後、最初のATコマンドの出力が”NO CARRIER"となり、ponによる再ダイヤルの最初の1回目がエラーになります。
これを避けるためには、再度ダイヤルするか、リセット用の専用プログラムを作成し、ATコマンドを1度実行するなどの対策が必要かと思います。

なお、コンシューマ向けの機器と違い、M2M向けは通信データ量に対しての従量課金が細かく定義されるため、評価を行う際は、条件に注意して行ってください。

TI CC2541 SensorTag Development Kit

$
0
0
TEXAS INSTRUMENTS社より、センサータグ開発キットCC2541が配布されているので、TIショップより入手しました。

 CC2541 SensorTag 開発キット - CC2541DK-SENSOR - TI ツール・フォルダ:

この開発キットは、以下のセンサー入力をBluetoothにより出力します。
  • IR 温度センサ
  • 湿度センサ
  • 圧力センサ
  • 加速度計
  • ジャイロスコープ
  • 磁力計


購入は、TIショップからの直接購入をお勧めします。($25で送料込み)
展示会などでの即売もあるようです。

Bluetooth LEデバイスとして、bluezでscan出来るところまでは確認しました。
OpenBlocksとの接続や監視ツールとの連携に関してはこれから行いたいと思います。

(TIのサイトより、各種OS向けの開発キットやテストツールが配布されていますが、ソースコードの入手にはagreementが必要になっていますので、muninプラグインなど作成した際の公開に関しては少し時間がかるかと思います)

[.tested] OpenBlocks AX3/A7 OpenSSLベンチマーク [debian Wheezy][AX3][A7]

$
0
0
OpenSSLは、DebianのパッケージよりUbuntuの方が40%前後良い結果になるのですが、原因はコンパイルオプションの違いによるものと思われます。
今回、マイクロサーバ技術課にてDebianのOpenSSLを再構築、速度検証を行った結果を、当blogにて報告します。

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

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

1.OpenSSLの作成


開発環境の準備

SSD併用モードの検証機を用意します。
以下のコマンドを入力して、ビルド環境を作成します。

# apt-get install build-essential devscripts
# apt-get build-dep openssl
# apt-get source opnessl


OpenSSLのビルド

configはデフォルトで。

# cd openssl-1.0.1e
# ./config
# make


2.ベンチマーク


以下のopensslのオプションコマンドによるベンチマークを行いました。

# openssl speed md5 sha rc4 aes-128-cbc aes-256-cbc -elapsed

elapsedオプション このオプションを付けた場合は、経過時間に実時間を使用します。
付けない場合は、経過時間にユーザ時間を使用します。
( timeコマンドでいうところのrealを使うかuserを使うかの違いです。)


# time
real 0m0.000s
user 0m0.000s
sys 0m0.000s

AX3

MD5

16 bytes64 bytes256 bytes1024 bytes8192 bytes
original3959.72k14570.50k45317.27k96043.04k142521.75k
rebuild3176.47k11748.89k38143.49k86815.81k139127.92k

SHA


SHA1
16 bytes64 bytes256 bytes1024 bytes8192 bytes
original4118.90k13892.91k37209.22k64278.28k81364.79k
rebuild3258.12k11657.12k35595.82k73223.14k105856.43k

SHA256
16 bytes64 bytes256 bytes1024 bytes8192 bytes
original1185.47k2831.95k21233.46k27692.57k30383.88k
rebuild9166.13k22245.57k40425.80k50926.48k55104.13k

SHA512
16 bytes64 bytes256 bytes1024 bytes8192 bytes
original1001.78k4010.72k5859.25k8083.48k9087.40k
rebuild2900.56k11631.05k16581.49k22607.95k25313.55k

RC4

16 bytes64 bytes256 bytes1024 bytes8192 bytes
original76616.54k92183.77k99732.75k101792.74k101980.87k
rebuild86311.48k97458.94k101188.81k102165.26k101828.47k

AES


AES 128 CBC
16 bytes64 bytes256 bytes1024 bytes8192 bytes
original19698.47k24733.85k26619.24k27161.86k27324.81k
rebuild37864.58k48231.72k52411.28k53509.61k53727.00k

AES 256 CBC
16 bytes64 bytes256 bytes1024 bytes8192 bytes
original15526.19k18610.97k19649.15k19927.86k20001.00k
rebuild31212.60k37900.44k40606.87k41398.18k41575.08k
A7

MD5

16 bytes64 bytes256 bytes1024 bytes8192 bytes
original1498.52k5339.41k15721.63k30893.06k42628.34k
rebuild1175.85k4268.61k13349.97k28286.55k42101.42k

SHA


SHA1
16 bytes64 bytes256 bytes1024 bytes8192 bytes
original1297.46k4093.24k10183.34k16189.44k19507.88k
rebuild1140.14k3761.33k9810.09k16310.86k20307.97k

SHA256
16 bytes64 bytes256 bytes1024 bytes8192 bytes
original1185.47k2831.95k5132.54k6406.29k6927.70k
rebuild2689.97k6131.58k10653.60k13119.15k14002.60k

SHA512
16 bytes64 bytes256 bytes1024 bytes8192 bytes
original153.51k617.22k871.08k1195.69k1349.91k
rebuild729.19k2926.45k4139.18k5635.75k6278.72k

RC4

16 bytes64 bytes256 bytes1024 bytes8192 bytes
original22444.42k25887.09k27038.89k27221.73k27396.78k
rebuild22965.96k26169.81k27001.28k27336.02k27303.04k

AES


AES 128 CBC
16 bytes64 bytes256 bytes1024 bytes8192 bytes
original4880.32k5504.11k5666.79k5733.38k5720.79k
original7606.46k8501.16k8808.19k8854.03k8899.24k

AES 256 CBC
16 bytes64 bytes256 bytes1024 bytes8192 bytes
original3751.82k4089.11k4202.92k4214.39k4232.53k
rebuild5890.15k6452.46k6589.41k6650.88k6660.10k
3.検証結果から


AX3
  • AESは2倍程度高速となります。
  • MD5は遅くなります。
  • RC4, SHA1は大きく変わりません。SHA256, SHA512は数倍高速となります。
A7
  • AESは3割程度高速となります。
  • MD5は遅くなります。
  • RC4, SHA1は大きく変わりません。SHA256, SHA512は数倍高速となります。

暗号化アルゴリズム単位で指定できるので、MD5を指定しない前提であれば、リビルドをすることにより速度向上を見込めます。

[.tested] TI CC2541 SensorTag Development Kit[debian Wheezy][AX3][A7]

$
0
0



先日、以下の記事で紹介した、TI CC2541 SensorTag Kitと、OpenBlocks Aシリーズとの接続評価を行いました。

TI CC2541 SensorTag Development Kit


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

<検証環境>
Debian 7.1 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A6/A7 kernel: 3.2.40

1. 事前準備


本装置は、Bluetooth LEにより通信を行うため、OpenBlocks本体に、USB Bluetoothアダプタを接続して使用します。
Bluetoothアダプタに関しては、以下の記事において、一部製品の接続検証を行っております。

周辺機器接続テスト

上記の記事に、Bluetooth接続に関する説明を記述しておりますが、今回は、Bluetooth LEによる接続であるため、手順に関しては本記事にて説明します。

Bluez 5.12の導入

Debian Wheezyにて提供されるbluezパッケージでは、gatttoolによるデータのwriteが出来ず、Web検索したところ、以下のページを参考に、5.12をインストールしました。
また、下記ページでは今回使用したデバイスそのもののテストも行っています。

Michael Saunby: Raspberry Pi and TI CC2541 SensorTag:

導入に際しては、事前に開発環境のインストールを行ってください。
( すでに行っている場合は必要ありません)

# aptitude install build-essential

Bluez 5.12のビルドに必要なライブラリをインストールします。

# aptitude install libglib2.0-dev libdbus-1-dev libusb-dev libudev-dev libical-dev systemd libreadline-dev

Bluez 5.12を入手し、解凍します。

# wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.12.tar.xz
# tar -Jxvf bluez-5.12.tar.xz

INSTALLドキュメントに従い、インストールします。

# cd bluez-5.12/
# ./configure
# make
# make install

2. 接続方法


CC2541のデータハンドリングは、以下のTI Wikiに記述されています。

SensorTag User Guide - Texas Instruments Wiki:


今回は、wheezyのbluetoothサポートパッケージを導入していませんので、手動でデバイスの立ち上げからテストまでを行っています。

# hciconfig hci0 up

デバイスサイドにあるスイッチを押して、BLEデバイスのスキャンを行います。


# hcitool lescan
LE Scan ...
34:B1:F7:D5:59:2A (unknown)
34:B1:F7:D5:59:2A SensorTag
 :
 :

gatttoolにより、インタラクティブにセンサーデータを取得してみます。

# gatttool -i hci0 -b 34:B1:F7:D5:59:2A -I
[34:B1:F7:D5:59:2A][LE]> connect
Attempting to connect to 34:B1:F7:D5:59:2A
Connection successful
[34:B1:F7:D5:59:2A][LE]> primary
attr handle: 0x0001, end grp handle: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x000c, end grp handle: 0x000f uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0010, end grp handle: 0x0022 uuid: 0000180a-0000-1000-8000-00805f9b34fb
attr handle: 0x0023, end grp handle: 0x002a uuid: f000aa00-0451-4000-b000-000000000000
attr handle: 0x002b, end grp handle: 0x0035 uuid: f000aa10-0451-4000-b000-000000000000
attr handle: 0x0036, end grp handle: 0x003d uuid: f000aa20-0451-4000-b000-000000000000
attr handle: 0x003e, end grp handle: 0x0048 uuid: f000aa30-0451-4000-b000-000000000000
attr handle: 0x0049, end grp handle: 0x0054 uuid: f000aa40-0451-4000-b000-000000000000
attr handle: 0x0055, end grp handle: 0x005c uuid: f000aa50-0451-4000-b000-000000000000
attr handle: 0x005d, end grp handle: 0x0061 uuid: 0000ffe0-0000-1000-8000-00805f9b34fb
attr handle: 0x0062, end grp handle: 0x0068 uuid: f000aa60-0451-4000-b000-000000000000
attr handle: 0x0069, end grp handle: 0xffff uuid: f000ffc0-0451-4000-b000-000000000000
[34:B1:F7:D5:59:2A][LE]> char-read-hnd 38
Characteristic value/descriptor: 00 00 00 00
[34:B1:F7:D5:59:2A][LE]> char-write-req 3c 01
Characteristic value was written successfully
[34:B1:F7:D5:59:2A][LE]> char-read-hnd 38
Characteristic value/descriptor: 4c 6d 46 60
[34:B1:F7:D5:59:2A][LE]>


上記の手順により、センサーデータから数値を取得することが出来ます。


ただし、このデバイスは常時監視する用途には向きません。
USBに直結するタイプのインターフェースも配布されていますので、別途入手して評価する予定です。

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

$
0
0

Clam AntiVirus は、オープンソースで提供されるクロスプラットフォームのアンチウイルスソフトウェアであり、OpenBlocksが採用するDebianにおいてもパッケージが用意されています。

 Clam AntiVirus:

今回、clamav、squid3、squidclamav(+c-icap)による、webアンチウィルスゲートウェイについて、squidを利用した、proxy型構成、および、透過型の構成について、設定の手順を紹介します。


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

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

1.事前準備


squidclamavは最新のパッケージをビルドする必要がありますので、開発環境および、必要なライブラリをあらかじめインストールしておく必要がります。

開発環境のインストール
# aptitude install build-essential

ライブラリのインストール
# aptitude install curl libcurl4-gnutls-dev c-icap libicapapi-dev

2.clamav-daemonのインストールと設定


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


# aptitude installclamav-daemon

パッケージインストールにより、clamdは自動的に立ち上がる設定となりますが、初期化のために、一度手動で立ち上げを行う必要があるようです。

# /etc/init.d/clamav-daemon start

3.squid3のインストールと初期設定


squid3をdebianのパッケージからインストールします。

# aptitude install squid3

まずは、web proxyとして必要な設定を行います。
/etc/squid3/squid.conf の、該当する部分を追加または、コメントを外してください。
今回は、localnetとして、192.168.3.x を設定し、そこに許可を与えています。

  :
acl localnet src 192.168.3.0/24 # local network
  :
http_access allow localnet
  :

一度再起動し、ブラウザよりproxyサーバを指定して動作確認します。

# /etc/init.d\squid3 restart

squidclamavを使用するための、c-icapの設定追加については次項で説明します。

4.squidclamavのインストールと設定


squidclamavを入手します。

 SquidClamav : Securing Web Delivery (antivirus for Squid):


より、最新の6.10を入手しました。

# wget http://sourceforge.net/projects/squidclamav/files/squidclamav/6.10/squidclamav-6.10.tar.gz

解凍し、ビルド、インストール作業を行います。

# tar xvzf squidclamav-6.10.tar.gz
# cd squidclamav-6.10
# ./configure --prefix=/usr/local/c-icap
# make
# make install

警告表示用のコンテンツサーバとして、apache2を使用しています。
新規にインストールする場合は、以下の手順となります。

# aptitude install apache2

squidclamavをビルドした場所より、警告用画面表示のcgiをapache2のデフォルトのcgi-binディレクトリへコピーします。

# cp cgi-bin/clwarn.cgi /usr/lib/cgi-bin

/etc/squidclamav.confを編集し、redirect先を指定します。
サーバのIPアドレスはご使用のものを記述してください。

# tredirect http://192.168.3.103/cgi-bin/clwarn.cgi

5.squid3+c-icapの設定


squid3の追加設定

/etc/squid3/squid.confを編集し、c-icapに対応した以下のパラメータを変更、もしくは追加記述して下さい。

icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_encode off
icap_client_username_header X-Authenticated-User
icap_preview_enable on
icap_preview_size 1024
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all

 c-icap関連の設定

/etc/c-icap/c-icap.confに、以下の記述を追加します。

Service squidclamav squidclamav.so

c-icap を自動起動させるため、/etc/default/c-icapを修正します。

START=yes

c-icapおよび、squid3を再起動します。(もしくはreboot)

# /etc/init.d\squid3 restart
# /etc/init.d\c-icap restart

6.proxy型設定での動作確認


テスト用のデータとして、以下のサイトのデータを利用します。

Home ° EICAR - European Expert Group for IT-Security:


テスト用ウィルスをダウンロードすると、以下の警告画面が表示されます。



7.透過型構成への変更


proxyサーバの設定が不要な透過モードでのWebフィルタリングを行う場合は、ブリッジ構成のため、ネットワークポートを複数備えるAX3もしくはA7を使用します。

ブリッジ構成へのネットワーク設定変更

ブリッジの構成のために、bridge-utilsをインストールします。

# aptitude install bridge-utils

/etc/network/interfaces を編集し、eth0、eth1の設定を全てコメントで外し、
br0を設定します。
( 以下の設定はこちらでのテスト環境ですので、ご自身の環境に合わせて変更して下さい)

auto br0
iface br0 inet static
address 192.168.3.103
netmask 255.255.255.0
network 192.168.3.0
broadcast 192.168.3.255
gateway 192.168.3.1
dns-nameservers 172.16.12.10
bridge_ports eth0 eth1

iptablesによる、ポートの変換設定

ポート80から送出されたリクエストパケットを3128へリダイレクトする設定を行います。

# iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128

/etc/squid3/squid.confを編集します。

http_port 3128 transparent

本装置は、フィルタを行いたいノードのHubの上流へIN-OUTの形で接続してください。

8.さいごに


今回は、clamavを使用したWebフィルタリング装置の構築方法として、proxy型/透過型の最低限必要な設定を行いました。
squidに関しては、URLフィルタリングも比較的簡単に実装出来ますので、別途パフォーマンスのチューニングポイントと合わせてご紹介します。

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

$
0
0

前回の記事において、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フィルタリングも行ってみました。

[.tested] OpenBlocks A7 3Gモデル 動作検証SIMカード一覧 [debian Wheezy][A7]

$
0
0
マイクロサーバ技術課にて行った、OpenBlocks A7 3GモデルのSIMカードの動作検証結果です。


○:OK、×:NG、-:未検証

動作OK

プロバイダ名プラン通信速度回線SMS
docomoXiデータプランにねん128kbpsdocomo
dtiServerman SIM LTE150kbps
NTTコムArcstar Universal One モバイル M2M100kbps
IIJmioプリペイドパック下り150Mbps上り50Mbps
ミニマムスタート200kbps
bmobileU300300kbps

動作NG

プロバイダ名プラン通信速度回線SMS
Softbankデータ定額ボーナスパック定額制下り7.2Mbps上り384kbpsemobile
従量制softbank


OpenBlocks ファームウェア作成ガイドをgithubにて公開しました

$
0
0
OpenBlocks(AX3, A7, A6, 600)のファームウェア作成ガイドをgithubにて公開しました。

/debian_based_firmware

・対応ファームウェアについて

OpenBlocksのファームウェアは、機種(AX3, A7, A6, 600)とOS(DebianGNU/Linux)によって異なります。対応しているファームウェアは下の表をご覧ください。

機種キシュDebian作成サクセイホストTARGETDISTARCH
AX377/amd64obsax3wheezyarmhf
AX366/amd64obsax3squeezearmel
A777/amd64obsa7wheezyarmel
A677/amd64obsa6wheezyarmel
A666/amd64obsa6squeezearmel
60077/i386obs600wheezypowerpc

ファームウェアを作成するホストのOSはDebian GNU/Linuxです。そのバージョンとアーキテクチャは、ファームウェアの対象となる機種とOSによって異ります。表の作成ホストに「バージョン/アーキテクチャ」を記述しました。



[.tested] ownCloud 6.0.1 [Debian Wheezy][AX3][A7]

$
0
0
ownCloudは、WebブラウザやWebDAVクライアントからアクセスできるオンラインストレージを構築するソフトウェアです。

ownCloud.org | Your Cloud, Your Data, Your Way!

http://owncloud.org/

今回は、ownCloud をOpenBlocks AX3およびA7にインストールする手順を紹介します。

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

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

(*)本ソフトウェアの利用にはSSDキットおよび開発環境の導入が必要です。

1.debianパッケージによる導入方法 (5.0.14)


ownCloudの最新は6.0.1ですが、debian wheezyでのパッケージ対応は、wheezy-backportsにて提供される、
ownCloud 5.0.14.a+dfsg-1~bpo70+2 (Debian)
となります。wheezy-backportsを使用する場合は、/etc/apt/sources.lstに以下の行を追加することで、wheezy-backportsにて提供されるパッケージの導入が可能です。

/etc/apt/sources.lstに以下の行を追加

# Backports repository
deb http://ftp.debian.org/debian wheezy-backports main contrib non-free

パッケージリストの更新とowncloudの導入

# aptitude update
# aptitude install owncloud

上記の操作により、owncloud 5.0.14の構築に必要な関連パッケージも全てインストールされますが、旧バージョンであるため、次項に最新版の導入手順について説明します。

2.最新版(6.0.1)の導入方法


関連パッケージを導入します。

# apt-get install apache2 php5 php5-gd php-xml-parser php5-intl
# apt-get install php5-sqlite php5-mysql smbclient curl libcurl3 php5-curl
# apt-get install mysql-server mysql-client

ユーザ管理にmysqlを使用する場合は、データベースの初期化を行います。
ユーザ名およびDB名は別途設定されることをお勧めします。 
また、passwordは必ず独自のものを使用してください。


ユーザ名: owncloud@localhost
バスワード: password
データベース名: owncloud

# mysql -u root -p

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.00 sec)

mysql> grant all on *.* to owncloud@localhost IDENTIFIED BY 'password';
mysql> create database owncloud character set utf8 ;
mysql> GRANT ALL PRIVILEGES ON owncloud.* TO owncloud@localhost IDENTIFIED BY 'password';

owncloudのwebページより、パッケージをダウンロードします。
INSTALLページより、tarファイルのURLを入手し、wgetしました。

# wget http://download.owncloud.org/community/owncloud-6.0.1.tar.bz2

パッケージを展開し、/var/www以下へコピーした後、パーミッションを変更します。

# tar cvjf owncloud-6.0.1.tar.bz2
# cp -r owncloud /var/www/
# chown -R www-data:www-data /var/www/

apache2の2つのモジュールを有効にし、再起動します。

# a2enmod rewrite
# a2enmod headers
# service apache2 restart

3.httpでの接続テスト


Webブラウザより、以下のURLにアクセスしてください。

http://URLまたはIPアドレス/owncloud

以下の画面が表示されますので、MySQLを選択し、上記で設定したユーザ名、パスワード、データベース名、ホスト名(今回はlocalhost)を入力します。


下記の画面が表示されます。dropboxの様に、専用の同期アプリケーションをインストールする場合は対応する機種のページよりクライアントをダウンロードし、インストールしてください。


Personalメニューより、言語を日本語に設定することが出来ます。


4.httpsによる接続設定


今回は、OpenSSLにより自己認証局を設定し、apache2でのhttps通信を行いました。

設定は以下の手順で行ってください。

# mkdir -p /usr/local/ssl
# cd /usr/local/ssl

秘密鍵を作成します。

# openssl genrsa -aes128 -rand /dev/urandom -out owncloud_server.key 2048
2048 semi-random bytes loaded
Generating RSA private key, 2048 bit long modulus
...(snip)...
Enter pass phrase for owncloud_server.key: xxxxxxxx
Verifying - Enter pass phrase for owncloud_server.key: xxxxxxxx

証明書の書名要求CSRを生成します。
Countroy NameとCommon Nameだけ設定し、省略可能な部分は.により省略しています。

# openssl req -new -key owncloud_server.key -out owncloud_server.csr
Enter pass phrase for owncloud_server.key:
...(snip)...
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:xxx.xxx.xxx.xxx
Email Address []:xxx@hoge.hoge

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:.
An optional company name []:.

サーバ証明書の発行を行います。

#openssl req -in owncloud_server.csr -out owncloud_server.crt -key owncloud_server.key -x509 -days 1825

owncloud_server.keyはバックアップを取った後に削除、パーミッションの設定などを行います。


# chmod 400 owncloud_server.*
# chown root:root owncloud_server.*

apacheを設定します。

# vi /etc/apache2/sites-available/default-ssl

以下の項目を修正します。

SSLCertificateFile /usr/local/ssl/owncloud_server.crt
SSLCertificateKeyFile /usr/local/ssl/owncloud_server.key

ssl関連を有効にし、apache2を再起動します。

# a2enmod ssl
# ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/default-ssl
# service apache2 restart

5.httpsによる接続確認


Webブラウザより、以下のURLにアクセスしてください。

https://URLまたはIPアドレス/owncloud

今回はプライベート認証局であるため、Webブラウザより警告が出ますが、例外として設定します。


確認後、常にhttpsでの接続に変更をします。


6. さいごに 


以上の設定により、owncloud 6.0.1の動作を確認しました。


[.tested] Wowza Media Server [Debian Wheezy][AX3]

$
0
0
Wowza Media Serverは、Flash media server互換のサーバ製品であり、 動画のストリーミング再生、ライブ配信、多人数接続でのチャットサービス、テレビ会議などに対応します。
本製品は、Javaで記述されており、Javaの動作する様々な環境での動作が可能です。


今回、OpenBlocks AX3 JモデルおよびDPモデルによる動作検証を行いました。

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

<検証環境>
OpenBlocks AX3/4 Debian 7.1 kernel: 3.2.40 JモデルまたはDPモデル


2. 導入方法


Javaのインストール

OpenBlocks AX3の、Debian 7.1版は、Java SE for Embededd 7を標準搭載しており、特にインストールの必要はありません。

wowza media serverパッケージの入手

wowza media systemsのサイトより、Free Trialバージョン、またはデベロッパーバージョンを入手してください。
それぞれ、ユーザ情報の登録を行い、シリアルコードを入手します。
Trialバージョンはトライアル期間が設定されますが、接続数制限がありません。デベロッパーバージョンは期間の設定がなく、接続数制限があります。

インストールするパッケージは、プラットフォームとして、Linux DEB版を選択してください。

Media Server & Video Streaming Server | Wowza Media Systems:

AX3より直接ダウンロードする場合は、wgetコマンドを使用します。
2013/8/19現在の最新版3.6.2の場合は以下のURLとなりますが、より新しいバージョンがリリースされた場合は変更してください。

# wget http://www.wowza.com/downloads/WowzaMediaServer-3-6-2/WowzaMediaServer-3.6.2.deb.bin


apache2パッケージのインストール

評価用のwebサーバとして、apache2をインストールしておきます。

# aptitude install apache2

wowza media serverのインストール

入手したパッケージにより、インストールを行います。

# chmod +x WowzaMediaServer-3.6.2.deb.bin
# ./WowzaMediaServer-3.6.2.deb.bin

トライアル用のシリアルコードの適用

トライアル用のシリアルコードを適用します。

# # cd /usr/local/WowzaMediaServer/bin
# ./startup.sh

ライセンスに関する合意文書に対しての確認の後、シリアルコードを入力すれば、自動的にサーバが立ち上がります。

wowza media serverの起動と停止

起動
# /etc/init.d/WowzaMediaServer start

停止
# /etc/init.d/WowzaMediaServer stop


2. 動作テスト


wowza media serverのインストール手順および、quick streaming testに関しては、以下のサポートフォーラムを参考にして行いました。

 Forum, Support | Wowza Media Systems - Quick Start Guide:


quick streaming testの手順

今回は、apache2を事前にインストールしているため、デフォルトのDocumentRootに評価用のplayer.htmlその他をコピーします。

# cd /usr/local/WowzaMediaServer/examples/VideoOnDemandStreaming/FlashRTMPPlayer
# cp -R * /var/www


テスト用のmp4ファイルは、 /usr/local/WowzaMediaServer/content以下に置いてください。
評価用として、sample.mp4が用意されています。

サーバを起動させた状態で、以下のURLにアクセスします。

http://wowza media serverのIPアドレス/player.html

wowza media serverをインストールしたサーバのアドレスおよび、コンテンツファイル名を入力し、connectボタンを押します。

Server: rtmp://wowza media serverのIPアドレス/vod
Stream: mp4:sample.mp4




3.さいごに


今回は、標準インストールのみで、プラグインなどの評価は行っておりません。

[.tested] RATOC REX-USB56 USBモデム [debian Wheezy][AX3][A7]

$
0
0
REX-USB56は、USB接続のアナログモデムです。 
OpenBlocks Aシリーズでの接続検証を行いました。


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

<検証環境>
Debian 7.0 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A7 kernel: 3.2.40

<使用機器>
OpenBlocks AX3
OpenBlocks A7
REX-USB56

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


本デバイスは、Conexant USB MODEM CX93010 chipを採用しており、cdc_acm driverでサポートされています。
本デバイスを使用するための特別な設定は必要ありません。

dmesgの出力

usb 1-1.1: new full-speed USB device number 7 using orion-ehci
usb 1-1.1: New USB device found, idVendor=0572, idProduct=1321
usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1.1: Product: USB Modem
usb 1-1.1: Manufacturer: Conexant
usb 1-1.1: SerialNumber: 24680246
cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device

lsusbの出力
# lsusb
Bus 001 Device 007: ID 0572:1321 Conexant Systems (Rockwell), Inc.

minicomにより、ATコマンドの受付を確認しました。

2. PPP接続の方法 (接続未確認)


接続は、他のモバイル通信アダプタと同様、pppconfigで設定を行います。

pppconfigをインストールします。

# aptitude install pppconfig

pppconfigの設定は以下の通りです。

Provider Name xxx
Configure Nameservers (DNS) Dynamic
Authentication Method for test PAP
User Name アカウント名(*1)
Password パスワード(*1)
Speed 115200
Pulse or Tone Tone
Phone Number
 xxx-xxx-xxxxx
Choose Modem Config Method No
Select Modem Port Manual
Manually Select Modem Port /dev/ttyACM0

(*1) プロバイダより提供されたアカウント名、パスワードを使用してください。
(*2) プロバイダより提供された番号を使用してください。

eth0や他のインタフェースが有効になっている場合は、/etc/ppp/peers/xxxに、以下の行を加えることにより、defaultrouteが変更されます。

replacedefaultroute


一般的には、上記の設定で接続出来るはずです。

はずです、と書いたのは、現在当社もしくは私個人には、アナログのダイヤルアップ接続先の契約がないことと、当社の電話回線の設定で、0088番で始まる契約フリーな接続サービスへの発呼も出来ないことが原因です。

そのため、本デバイスの通信機能に関しては、次項の通り、fax送信により行いました。

3. efaxによるfax送信による検証


REX-USB56は、G3 FAXにも対応していますので、efaxにより設定を行いました。

efaxをインストールします。

# aptitude install efax

efaxの設定は、送信のテストのみのため、最低限の設定のみ行っています。


 :
DEV=ttyACM0
 :
FROM="+81 3 3xxx xxxx"

NAME="PLAT'HOME OBDN_Magazine"

TELCVT='sed -e s/+81 */0/'            # JP

DIALPREFIX="P"


postscript形式のファイルを用意し、送信してみます。

#fax send -v <発信先電話番号> test.ps

psファイルは、ghostscriptなどを使用してpdfファイル等から変換してもいいでしょう。

上記の手順にてfax送信を行い、受信を確認しました。

4. さいごに


 今回は、モデムの各種設定や、発呼、fax送信までの確認を行いました。
 検証としては、不完全な状況ですが、お貸出の期限もあるため、今回はここまでとします。



OpenBlocks における開発環境構築手順について [debian Wheezy][AX3][A7][A6]

$
0
0
Debian Wheezy環境でのソフトウェア評価記事に関してのインデックスを右のタグから飛べるソフトウェア動作検証のページにまとめました。

また、当ブログでは、OpenBlocksの開発環境はすでにあるものとして記事を書いてきましたが、DPモデルではない、SSDオプションとの組み合わせや、USBおよびeSATA(AX3モデルのみ)の外付けストレージデバイスを使用した場合の環境構築方法にいての一連の手順を、本記事にまとめて上記ページよりリンクしておきます。

1. ストレージデバイスの用意


本体内蔵のSSDオプションを用意するか、もしくは、USB,eSATA(AX3のみ)ポートにストレージデバイスを接続します。

<内蔵ハーフサイズSSD>

<内蔵2.5inchSSD>

 <外付けUSBデバイス例>

2.パーティションの設定とフォーマット


fdiskによりパーティションを作成します。

# fdisk /dev/sda
Using /dev/sda
Command (m for help): o
Command (m for help): n
Partition type
   e   extended
   p   primary partition (1-4)
p
First cylinder  (default 0cyl): (Enter key)
Last cylinder or +size or +sizeMB or +sizeKB  (default 991cyl): (Enter key)
Warning: You requested a partition from 0cyl to 991cyl.
The closest location we can manage is 0cyl to 990cyl.  Is this still acceptable to you?
   y   Yes
   n   No
y
Command (m for help): w
Information: Don't forget to update /etc/fstab, if necessary.

Writing all changes to /dev/sda.

mke2fsによりフォーマットを行い、ボリュームラベルとしてDEBIANを設定します。

# mke2fs -j -L DEBIAN /dev/sda1
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=DEBIAN
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
991232 inodes, 3964030 blocks
198201 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4060086272
121 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done.

2. 起動後の確認


以下の例では、内蔵のSSD(/dev/sda)が接続された状態で、外付けのUSBメモリにボリュームラベルとしてDEBIANを設定していますので、/dev/sdb1が使用されています。

# mount
/dev/root on / type ext2 (rw,relatime,errors=continue,user_xattr,acl)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=51132k,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev type tmpfs (rw,relatime,size=10240k,mode=755)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=102260k)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620)
/dev/sdb1 on /.rw type ext3 (rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered)
aufs on /etc type aufs (rw,relatime,si=57e9d387)
aufs on /bin type aufs (rw,relatime,si=57e9d987)
aufs on /home type aufs (rw,relatime,si=57e9de87)
aufs on /lib type aufs (rw,relatime,si=57e9df87)
aufs on /sbin type aufs (rw,relatime,si=57e9dc87)
aufs on /usr type aufs (rw,relatime,si=57e9d287)
aufs on /var type aufs (rw,relatime,si=57e9d687)
aufs on /root type aufs (rw,relatime,si=57e9d087)
aufs on /opt type aufs (rw,relatime,si=57e9d887)
aufs on /srv type aufs (rw,relatime,si=57e9db87)
aufs on /media type aufs (rw,relatime,si=45009587)

3. 環境の設定


一連の手順はユーザマニュアルに記載があります。
私がいつも行う手順は以下の通りです。

ネットワークの設定

# vi /etc/network/interfaces

DHCPによりアドレスを取得する場合

auto eth0
iface eth0 inet dhcp

固定アドレスを割り振る場合 ( アドレスはお使いのものに置き換えます)

auto eth0
iface eth0 inet static
     address 192.168.254.254
     network 192.168.254.0
     netmask 255.255.255.0
     broadcast 192.168.254.255
     gateway 192.168.254.1

設定後再起動するか、ifdown / ifup コマンドでネットワークインターフェースの設定を反映させます。

インストール可能なパッケージ情報の更新


#aptitude update


インストール済みパッケージの更新


#aptitude safe-upgrade

インストール済みのdebianの各種パッケージおよび、本体ファームウェアについても最新のものがリリースされていれば更新されます。

タイムゾーンの設定

# dpkg-reconfigure tzdata

ロケールの設定

# aptitude install locales
# dpkg-reconfigure locales

特にポリシーがないならば、ja_JP.UTF-8で設定しておくことをお勧めします。
また、日本語の扱いなどが必要ないならば、デフォルトのままでも構いません。

4. 開発環境の構築


 よく利用されるツール一式をインストールします。

# tasksel install standard

開発ツール一式をインストールします。(debianのパッケージ開発ツール)

# aptitude install build-essential

Webアプリケーションなどを構築する際のLAMP環境、Ruby環境などについては別途必要なものをインストールしてください。
いくつかのパッケージのインストール手順に関しては、本blogでも事前準備として記述していますので、参考にして下さい。

5. さいごに


今回は、ディスク共有モードでの一連の開発を行うための環境構築について説明をしました。
RAMディスクモードにおいて、ファームウェアや各種ランタイムプログラムを再構築する手順に関しては、以下の記事において解説しています。

OpenBlocks ファームウェア作成ガイドをgithubにて公開しました


[.tested] SnortによるIPS構築 その1 [debian Wheezy][AX3][A7]

$
0
0
Snortはオープンソースのネットワーク型IDSであり、IPSとしても利用することが可能です。
また、周辺ツールを利用することにより、Webでのアラート検索を行うことも可能です。
Snortは、debian wheezyのパッケージにも含まれて居ますが、今回は、IPSでの利用も考慮し、最新のバージョンのソースコードよりsnort本体をビルドする方法をご紹介します。


Snort


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

<検証環境>
OpenBlocks AX3/4 Debian 7.1 kernel: 3.2.40 JモデルまたはDPモデル

1. Snort最新版のビルド


以下の手順は、基本的な開発環境が導入済みであることを前提としています。
(手順に関しては、右のタグにあるソフトウェア動作検証より記事をリンクしています)

debianパッケージから必要なライブラリをインストール

# aptitude install bison flex libpcre3 libpcre3-dev libssl-dev libnetfilter-queue-dev

以下、snortの最新のバージョンのビルドに必要な、一部の新しいバージョンのライブラリを用意します。

linpcap


# wget http://www.tcpdump.org/release/libpcap-1.5.3.tar.gz
# tar zxvf libpcap-1.5.3.tar.gz
# cd libpcap-1.5.3
# ./configure --prefix=/usr --enable-shared
# make
# make install

lindnet


# wget https://libdnet.googlecode.com/files/libdnet-1.12.tgz
# tar zxvf libdnet-1.12.tgz
# cd libdnet-1.12.tgz
# ./configure --prefix=/usr --enable-shared
# make
# make install

snortおよびdaqパッケージのインストール

www.snort.orgからsnortおよびdaqの最新のソースコードを入手して下さい。

daq-2.0.2

# tar -zxvf daq-2.0.2.tar.gz
# cd  daq-2.0.0
# ./configure
# make
# make install
# cd /usr/local/lib
# ldconfig -v /usr/local/lib

snort-2.9.6.0

# tar -zxvf snort-2.9.6.0.tar.gz
# cd snort-2.9.4.5
# ./configure --enable-sourcefire
# make
# make install
# cd /usr/local/lib
# ldconfig -v /usr/local/lib

2. 設定


snort.orgでアカウント作成

https://www.snort.org/account/oinkcode
で、’Generate code’ とするとOinkcodeが発行されるのでコードを控えておきます。

Snortルールの入手と展開

Snortルールを入手します。

# wget http://www.snort.org/reg-rules/snortrules-snapshot-2960.tar.gz/<Oinkcode> -O snortrules-snapshot-2960.tar.gz

/etc/snortに展開します。

# mkdir /etc/snort
# cd /etc/snort/
# tar zxvf /usr/local/src/snortrules-snapshot-2955.tar.gz
# cp ./etc/* .
# cp /usr/local/src/snort-2.9.5.6/etc/* .
# rm /etc/snort/Makefile*

空のホワイトリスト、ブラックリストを作成します。

# touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules

snortユーザの追加、パーミッションの変更

# groupadd -g 40000 snort
# useradd snort -u 40000 -d /var/log/snort -s /sbin/nologin -c SNORT_IDS –g snort
# cd /etc/snort
# chown -R snort:snort *

/etc/snort/snort.confを編集し、/etc/snortなど、設定ファイルのパスの変更、対象ネットワークアドレスなどを変更します。

2. 動作テスト


以下のオプションにて動作テストを行います。
# snort -T -i eth0 -u snort -g snort -c /etc/snort/snort.conf

3.さいごに


今回は、snortをOpenBlocks Aシリーズでビルドする手順を説明しました。
次回にて、IPSとしての設定、Webからのアラートの監視方法などについてご紹介する予定です。

OpenBlocks Aシリーズ rootfs変更方法 (FlashROMブート) [debian Wheezy][AX3][A7][A6]

$
0
0
OpenBlocks AシリーズにおいてrootfsをSSDに変更する手順を記述します。

OpenBlocks Aシリーズでは、ディスクレス運用のためのRAMディスクモードと、ストレージ併用モードを標準的にサポートしています。
(それぞれのモードについては、以下の記事を参照してください。)

OpenBlocksの動作モードについて

ストレージ併用モードにおいて、SSDなどのストレージデバイスはaufs(squeezeベースまではunion)によるマウントを行っていますが、aufsによる共有モードではなく、SSDに構築したrootfsを直接マウントして使用することも可能です。

また、カーネル自体も、フラッシュROMからだけでなく、SSDなどのストレージデバイスからの起動も行えます。

今回は、フラッシュROMから起動し、SSD側で用意したrootfsをマウントする方法について解説します。

rootfsはDebian, Fedora, Ubuntuなど好きなものをあらかじめ作成して使用しますが、今回は、debootstarapを用いてDebian wheezyパッケージを作成し、OpenBlocks独自のハードウェア制御を追加した、標準のファームウェアパッケージと同等の機能を持つものを作成しました。

本機能は、OpenBlocksの機能の一部として実装されているものですが、当社の提供する標準のパッケージ構成ではないため、動作の保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
Debian 7.1 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A7 Ketnel 3.2.40
OpenBlocks A6 kernel: 3.2.40

<使用機器>
OpenBlocks AX3 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A6 DPパッケージ (もしくは、SSD搭載モデル)

1. SSDの準備


SSDを用意します。もし、標準構成でDEBIANのラベルを設定済みでしたら、ラベルを削除し、本体を再起動してください。

# e2label /dev/sda1 ""

再起動後、ラベルを/に変更します。
を再起動してください。

# e2label /dev/sda1 /

ファイルシステムは、現在のAシリーズはすべてext4を採用しています。
もし、新たにフォーマットする場合は、以下のコマンドをご使用下さい。

# mkfs.ext4 -L "/" /dev/sda1

2. debootstrapによるrootfsの作成と修正


SSDを/mntにマウントして、rootfsを作成しますが、標準のファームウェアパッケージにはdebootstrapが含まれていたいため、debootstrapをインストールする必要があります。
なお、ファームウェアをRAMディスクモードで起動した後、ネットワークの設定を行う必要があります。

# aptitude update
# aptitude install debootstrap 

インストールしたパッケージを保存する場合は、以下のflashcfgコマンドにて行ってください。

# flashcfg -S 

SSDを/mntにmountします。

# mount /dev/sda1 /mnt

debootstrapにより、rootfsを作成します。

# debootstrap --exclude=ed,nano --arch armel wheezy /mnt http://ftp.jp.debian.org/debian

/mnt/etc/inittabのT0のパラメータを修正します。

T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100

chrootしてrootパスワードを変更します。

# chroot /mnt
# passwd root
# exit 

ファームウェアから必要なファイルをコピーし、モジュール構成を更新します。

# cp -R /lib/modules /mnt/lib
# cp /usr/sbin/runled /mnt/usr/sbin
# cp /usr/sbin/pshd /mnt/usr/sbin
# depmod -a


fstabを編集します。
ext4の場合は、以下の通り。ext3の場合はdiscardは不要です。

# vi /mnt/etc/fstab
/dev/sda1       /               ext3    defaults        notime, discard
proc /proc proc defaults 0 0
#none /tmp tmpfs size=64m 0 0
#cgroup /sys/fs/cgroup cgroup defaults 0 0

/etcの下のinit関連のファイルをコピーします。
 
# cp /etc/init.d/pshd /mnt/etc/init.d
# cp /etc/init.d/runled /mnt/etc/init.d

# cd /mnt/etc/rc0.d
# ln -s ../init.d/pshd K01pshd
# ln -s ../init.d/runled K01runled

# cd /mnt/etc/rc2.d
# ln -s ../init.d/pshd S99pshd
# ln -s ../init.d/runled S99runled

# cd /mnt/etc/rc6.d
# ln -s ../init.d/pshd K01pshd
# ln -s ../init.d/runled K01runled

# cp /etc/init.d/.depend.start /mnt/etc/init.d
# cp /etc/init.d/.depend.stop /mnt/etc/init.d

/etc/apt/sources.listをコピーします。

# cp /etc/apt/sources.lst /mnt/etc/apt

3. ubootのパラメータ変更と起動


OpenBlocks本体を再起動します。
起動時にコンソール上でキーボードを押すとubootのプロンプトが表示されます。

openblocks> printenv root
root=/dev/ram
openblocks> setenv root /dev/sda1
openblocks> saveenv
Saving Environment to Flash...

電源を入れ直すか、bootと入力して起動してください。

システムを元に戻す場合は、rootに/dev/ramを設定します。

openblocks> setenv root /dev/ram
openblocks> saveenv
Saving Environment to Flash...


OpenBlocks Aシリーズ rootfs変更方法 (SSD(SATA)ブート) [debian Wheezy][AX3][A7][A6]

$
0
0
OpenBlocks Aシリーズのカーネルの起動をSSD(SATA)から行う方法について

本機能は、OpenBlocksの機能の一部として実装されているものですが、当社の提供する標準のパッケージ構成ではないため、動作の保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
Debian 7.1 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A7 Ketnel 3.2.40
OpenBlocks A6 kernel: 3.2.40

<使用機器>
OpenBlocks AX3 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A6 DPパッケージ (もしくは、SSD搭載モデル)

1. SSDの準備


SSDを用意します。もし、標準構成でDEBIANのラベルを設定済みでしたら、ラベルを削除し、本体を再起動してください。

# e2label /dev/sda1 ""

再起動後、ラベルを/に変更します。
を再起動してください。

# e2label /dev/sda1 /

ファイルシステムは、現在のAシリーズはすべてext4を採用していますが、ubootがカーネルの起動を行うドライブは、ext3までしか対応していません。
再フォーマットが必要な場合は、以下の通り、ext3などを使用してください。

# mke2fs -j -L "/" /dev/sda1

2. debootstrapによるrootfsの作成と修正


rootfs は、以下の記事と同様に、debootstrapで作成しました。詳細については、以下の記事を参考にしてください。

OpenBlocks Aシリーズ rootfs変更方法 (FlashROMブート) [debian Wheezy][AX3][A7][A6]

3. SSDブート用のファームウェアの作成


SSDブート用ファームウェアは、LinuxであればPCでもAシリーズでも作成することができます。
  1. FTPサイトよりSSDブート用のラムディスクイメージを取ってきます。

    A6/A7 : ftp://ftp.plathome.co.jp/pub/ssdlinux/1.0.0-LATEST/arm-obsa6/installation/ramdisk.image-extboot.obsa6.gz

    AX3 : ftp://ftp.plathome.co.jp/pub/ssdlinux/1.1.0-LATEST/arm-obsax3/installation/ramdisk.image-extboot.obsax3.gz

  2.  FTPサイトよりカーネルを取ってきます。

    A6 : ftp://ftp.plathome.co.jp/pub/OBSA6/wheezy/3.2.40-3/zImage

    A7 : ftp://ftp.plathome.co.jp/pub/OBSA7/wheezy/3.2.40-4/zImage

    AX3 : ftp://ftp.plathome.co.jp/pub/OBSAX3/wheezy/3.2.40-4/zImage
  3. uboot-mkimageパッケージをインストールします。

    # apt-get install uboot-mkimage

  4. mkimageコマンドでSSDブート用ファームウェアを作成します。

    AX3の場合(A6/A7ではラムディスク名とファームウェア名を変更します)

    # mkimage -n "コメント(日付やバージョンなど)" -A arm -O linux -T multi -C none -a 0x8000 -e 0x8000 -d zImage:ramdisk.image-extboot.obsax3.gz uImage.initrd-extboot.obsax3

  5. rootfsの/bootにSSDブート用ファームウェアをコピーします。

    AX3でSSDがsda1の場合

    # mount /dev/sda1 /mnt
    # cp uImage.initrd-extboot.obsax3 /mnt/boot
    # umount /mnt

  6. rootfsとするパーティションのラベルを"/"にします。

    rootfsが/dev/sda1の場合

    # e2label /dev/sda1 /
3. ブート方式の切り替え


ユーザーズマニュアルを参考に、本体のDIP SW3をONにして立ち上げます。(SATA起動)
SATA起動に切り替えた場合のconsoleメッセージは以下の通りです。

U-Boot 1.1.4 (Feb  5 2014 - 12:38:30)
Plat'Home version: 1.2.13 A7 (Base: Marvell version: 3.5.9)

U-Boot code: 00600000 -> 0067FFF0 BSS: -> 006CF480

Soc: 88F6282 A1CPU running @ 600Mhz L2 running @ 300Mhz
SysClock = 300Mhz , TClock = 200Mhz

DRAM (DDR3) CAS Latency = 6 tRP = 5 tRAS = 15 tRCD=5
DRAM CS[0] base 0x00000000 size 256MB
DRAM CS[1] base 0x10000000 size 256MB
DRAM CS[2] base 0x20000000 size 256MB
DRAM CS[3] base 0x30000000 size 256MB
DRAM Total size 1GB 16bit width
Addresses 8M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (8M - 7M): Done
NAND:256 MB
POST: mac verify Eth0 PASSED Eth1 PASSED

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

Module 0 is RGMII

USB 0: host mode
USB 1: host mode
USB 2: host mode
USB 3: host mode
Net: egiga0, egiga1
Hit any key to stop autoboot: 0

Run Boot Selection Script

*** SW 1 IS OFF ***

*** SW 2 IS OFF ***

*** SW 3 IS ON, Boot from SATA ***


Reset IDE:
Marvell Serial ATA Adapter
Integrated Sata device found
[0 0 0]: Enable DMA mode (6)
Device 0 @ 0 0:
Model: ADATA SSD S396 30GB Firm: 3.3.2 Ser#: 02501132500100000227
Type: Hard Disk
Supports 48-bit addressing
Capacity: 30533.8 MB = 29.8 GB (62533296 x 512)


Loading ...

2926770 bytes read
Bootargs: ramdisk_size=8192 root=LABEL=/ vmalloc=200M rootdelay=7 mtdparts=nand_mtd:0x1c0000@0x0(uboot)

ro,0x2c0000@0x1c0000(env),0x160000@0x480000(test)ro,0x540000@0x5e0000(conf),0x3d40000@0xb20000(linux),0x9660000@0x4860000

(user),0x2140000@0xdec0000(opt) console=ttyS0,115200
## Booting image at 02000000 ...
Image Name: OBS-A7-3.2.40-4
Created: 2014-04-18 2:37:42 UTC
Image Type: ARM Linux Multi-File Image (uncompressed)
Data Size: 2926706 Bytes = 2.8 MB
Load Address: 00008000
Entry Point: 00008000
Contents:
Image 0: 2542808 Bytes = 2.4 MB
Image 1: 383886 Bytes = 374.9 kB
Verifying Checksum ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 3.2.40 (root@release-firmware) (gcc version 4.7.2 (Debian 4.7.2-4) ) #1 Fri Mar 7 16:24:48 JST 2014
CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053977
CPU: VIVT data cache, VIVT instruction cache
Machine: Plat'Home OpenBlocks A7
Memory policy: ECC disabled, Data cache writeback
BUG: mapping for 0xf4000000 at 0xf4000000 overlaps vmalloc space
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260096
Kernel command line: ramdisk_size=8192 root=LABEL=/ vmalloc=200M rootdelay=7 mtdparts=nand_mtd:0x1c0000@0x0(uboot)

ro,0x2c0000@0x1c0000(env),0x160000@0x480000(test)ro,0x540000@0x5e0000(conf),0x3d40000@0xb20000(linux),0x9660000@0x4860000

(user),0x2140000@0xdec0000(opt) console=ttyS0,115200
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 1024MB = 1024MB total
Memory: 1033400k/1033400k available, 15176k reserved, 229376K highmem

電源を入れ直すか、bootと入力して起動してください。

4. 補足


SATA起動は、ext3以前のファイルシステムをサポートしており、現状では、ext4でフォーマットされたドライブからの起動が出来ません。
rootfsをext4で使用したい場合は、起動用のパーティションとして、/dev/sda1を、rootfs用のパーティションとして/dev/sda2を別に作成して使用してください。



[.tested] RXTXによるjavaのシリアル通信について [debian Wheezy][AX3][A7][A6]

$
0
0
RXTXライブラリを使用したjavaのシリアル通信を行う際のパッケージ導入方法について説明します。

<検証環境>
Debian 7.1 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A7 Ketnel 3.2.40
OpenBlocks A6 kernel: 3.2.40

<使用機器>
OpenBlocks AX3 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A6 DPパッケージ (DPパッケージのみjavaライセンス付きでの出荷をしています)

1. RXTXライブラリおよびlibrxtxSerialのインストール


それぞれ、Debainのパッケージによりインストールします。

# aptitude install librxtx-java
# aptitude install libserializer-java

RXTXライブラリを以下の場所にコピーします。

# cp /usr/share/java/RXTXcomm.jar /usr/lib/jre/lib/ext/

librxtxSerialを以下の場所にコピーします。

# cp /usr/lib/jni/librxtxSerial-2.2pre1.so /usr/lib/jre/lib/arm/librxtxSerial.so

2. 動作確認および開発環境の構築について


RXTXによるシリアル通信を行うのであれば、上記のセットアップにより、基本的には、他のプラットフォーム上で開発したclassファイルやjarファイルを実行できるかと思います。

OpenBlocks上で開発も行う場合は、一つの方法としては、Debianのパッケージより、java7-jdkなどを導入する方法があります。( 導入されるのはopenjdkです )

# aptitude install java7-jdk

java7-jdkにも、librxtxSerialが含まれますので、こちらを使用する場合は、libserializer-javaの導入の必要はありません。

作成したプログラムは、以下のようにjavacにてクラスファイルに変換してください。

# javac -cp /usr/lib/jre/lib/ext/RXTXcomm.jar test.java

[.tested] Tomcat7の導入について [debian Wheezy][AX3][A7][A6]

$
0
0
Apache Tomcatの導入方法について、若干のTipsも交えてご紹介します。



<検証環境>
Debian 7.1 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A7 Ketnel 3.2.40
OpenBlocks A6 kernel: 3.2.40

<使用機器>
OpenBlocks AX3 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A6 DPパッケージ (DPパッケージのみjavaライセンス付きでの出荷をしています)

1.Tomcat 7 のインストール


Apache Tomcat 7は、Debian Wheezyのパッケージとしても用意されていますが、合わせてOpenJDK6を導入してしまいます。
OpenBlocksシリーズは、Oracle Javaを標準搭載していますので(A6はDPモデルのみ)、Tomcatのパッケージのみを公式のサイトよりダウンロードしてインストールすることをおすすめします。

Apache Tomcat

# wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat-7/v7.0.53/bin/apache-tomcat-7.0.53.tar.gz

/usr/localの下に展開します。

# tar zxpvf apache-tomcat-7.0.53.tar.gz -C /usr/local

setenv.shを作成します。

# vi /usr/local/apache-tomcat-7.0.53/bin/setenv.sh

下記の内容を記述してください。

#!/bin/bash
JRE_HOME=/usr/lib/jre
JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"

JAVA_OPTSの設定は、linuxの/dev/randumの仕様によるもので、特にOpenBlocks A7の場合において、再起動時の環境ノイズの再収集時間に起因する起動遅延を解消するものです。
randomを使用する場合は、上記の記述を削除してください。(A7の場合30分程度、AX3の場合はばらつきがあり、20秒程度で立ち上がる場合もあれば、6分かかる場合もありました)

2. 動作確認および開発環境の構築について


手動での立ち上げは以下の様に行ってください。


# /usr/local/apache-tomcat-7.0.53/bin/startup.sh

ブラウザで動作確認をする場合は、以下のURLとなります。

http://URLまたはIPアドレス:8080


[.tested] node.js [debian Wheezy][AX3][A7][A6]

$
0
0
node.jsはサーバサイドのJavaScriptインタプリタです。
今回は、node.jsのOpenBlocks Aシリーズへの導入を行いました。

<検証環境>
Debian 7.1 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A7 Ketnel 3.2.40

<使用機器>
OpenBlocks AX3 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)

1. 導入前の準備


node.jsは、公式サイトからソースコードをダウンロードしてビルドを行います。
そのため、開発環境のインストールを行っておく必要があります。

OpenBlocks における開発環境構築手順について [debian Wheezy][AX3][A7][A6]

検索などをすると、npmのインストールのためにcurlを入れる事例などありますが、現状では、node.jsのインストールによりnpmもインストールされますので必要ありません。

2. node.jsのビルド


node.jsの公式サイトより最新のソースパッケージを入手してください。


以下の例は、2014/05/09時点での最新のバージョンです。

# wget http://nodejs.org/dist/v0.10.28/node-v0.10.28.tar.gz

展開します。

# tar xvzf node-v0.10.28.tar.gz
# cd node-v0.10.28

一般的には、ここでconfigureしてmakeするだけなのですが、Aシリーズの場合は、以下のパラメータを指定する必要があります。

AX3の場合

# ./configure --without-snapshot --with-arm-float-abi=hard

A7/6の場合

# ./configure --without-snapshot

また、A7/6の場合、一部のソースコードを修正する必要があります。

# vi deps/v8/src/arm/macro-assembler-arm.cc

以下のイタリック表記の3行を追加してください。

// We always generate arm code, never thumb code, even if V8 is compiled to
// thumb, so we require inter-working support
#if defined(__thumb__) && !defined(USE_THUMB_INTERWORK)
#error "flag -mthumb-interwork missing"
#endif

// ADD THESE THREE LINES TO macro-assembler-arm.cc

#if !defined(CAN_USE_THUMB_INSTRUCTIONS)
# define CAN_USE_THUMB_INSTRUCTIONS 1
#endif


// We do not support thumb inter-working with an arm architecture not supporting
// the blx instruction (below v5t).  If you know what CPU you are compiling for
// you can use -march=armv7 or similar.
#if defined(USE_THUMB_INTERWORK) && !defined(CAN_USE_THUMB_INSTRUCTIONS)
# error "For thumb inter-working we require an architecture which supports blx"
#endif

上記の修正および、configureの実行を行った後、makeを実行し、インストールします。

# make
# make install


3. 動作確認その他


インストール後、nodeコマンドを実行し動作を確認してください。

# node -v
v0.10.28

前述しましたが、npmは同時にインストールされます。
例えば、expressなどを導入したい場合は、

# sudo npm install -g express

とします。 rootアカウント中であっても、sudoを使用します。
また、現バージョンのexpressは、expressコマンド自体は導入されません。
使用したい場合は、express-generatorを導入して下さい。

# sudo npm install -g express-generator

socket.ioなどの導入/評価については次回にてご紹介します。

[.tested] express + socket.ioによるWebSocket実装方法について [debian Wheezy][AX3][A7][A6]

$
0
0
前回インストールした、node.js上でexpressおよびsocket.ioを使用した、Websocket通信のテストを行ってみました。
Aシリーズでのnode.jsのビルド方法については、前回の記事を参考にしてください。

[.tested] node.js [debian Wheezy][AX3][A7][A6]

<検証環境>
Debian 7.1 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A7 Ketnel 3.2.40

<使用機器>
OpenBlocks AX3 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)

1. 導入前の準備


express 4.0以降、雛形を作成するexpressコマンドは分離されているため、express-generatorをインストールします。

# sudo npm install -g express-generator

2. socket.ioのサンプルプログラムの作成


下記の記事を参考に、chatのサンプルプログラムをexpress 4.0向けに導入してみました。


雛形を作成します。

# express -e sample

以下、sampleというディレクトリに雛形が作成されます。

package.jsonを以下の内容に修正します。
  socket.ioを追加することにより、npm installによりsocket.ioも組み込まれます。

{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "express": "~4.0.0",
    "static-favicon": "~1.0.0",
    "morgan": "~1.0.0",
    "cookie-parser": "~1.0.1",
    "body-parser": "~1.0.0",
    "debug": "~0.7.4",
    "ejs": "~0.8.5",
    "socket.io": "~*"
  }
}

bin/wwwにchatプログラム本体を記述します。
// add以下が追加される部分です。

#!/usr/bin/env node
var debug = require('debug')('my-application');
var app = require('../app');

app.set('port', process.env.PORT || 3000);

var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});

// add start
var socketIO = require('socket.io');
// クライアントの接続を待つ(IPアドレスとポート番号を結びつけます)
var io = socketIO.listen(server);

// クライアントが接続してきたときの処理
io.sockets.on('connection', function(socket) {
console.log("connection");
// メッセージを受けたときの処理
socket.on('message', function(data) {
// つながっているクライアント全員に送信
console.log("message");
io.sockets.emit('message', { value: data.value });
});

// クライアントが切断したときの処理
socket.on('disconnect', function(){
console.log("disconnect");
});
});

クライアントサイドとして、views/index.ejsを作成します。

<script src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect('http://接続するサーバのURLまたはIPアドレス:3000');
socket.on('connect', function(msg) {
console.log("connet");
document.getElementById("connectId").innerHTML =
"あなたの接続ID::" + socket.socket.transport.sessid;
document.getElementById("type").innerHTML =
"接続方式::" + socket.socket.transport.name;
});

// メッセージを受けたとき
socket.on('message', function(msg) {
// メッセージを画面に表示する
document.getElementById("receiveMsg").innerHTML = msg.value;
});

// メッセージを送る
function SendMsg() {
var msg = document.getElementById("message").value;
// メッセージを発射する
socket.emit('message', { value: msg });
}
// 切断する
function DisConnect() {
var msg = socket.socket.transport.sessid + "は切断しました。";
// メッセージを発射する
socket.emit('message', { value: msg });
// socketを切断する
socket.disconnect();
}
</script>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>

<h1>socket.ioのサンプルプログラム</h1>
<div id="connectId"></div>
<div id="type"></div>
<br>
<input type="text" id="message" value="">
<input type="button" value="メッセージを送る" onclick="SendMsg()">
<input type="button" value="切断する" onclick="DisConnect()">
<div id="receiveMsg"></div>

</body>
</html>

必要なパッケージをインストールします。

# npm install

3. 動作確認


サーバを起動します。

# ./bin/www

Webブラウザを立ち上げ、以下のURLまたはIPアドレスを指定してアクセスしてください。

http://サーバのURLまたはIPアドレス:3000

複数のブラウザ画面を立ち上げ、相互に入力した文字が表示されることを確認してください。


4. さいごに


上記の手順により、Aシリーズ上でビルドしたnode.jsのsocket.ioモジュールによるWebSocket通信の確認を行いました。

今回は、express 4の場合、functionの定義方法などが異なるため、参考にしたサイトより、必要な部分だけを抜き出して利用させていただきました。

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

$
0
0
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ボタンの使用方法に関しては、前回の記事を参考に試してみてください。

Viewing all 98 articles
Browse latest View live