警告メッセージ

Howtoは、Armadilloシリーズを有効に活用するための参考資料です。使用ソフトウェアのバージョンなど諸条件の差異によって、記載内容と実際の動作が異なる場合があります。また、すべての機能検証や長期の動作試験を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。

Howto : Armadillo-300をアクセスポイントとして使う

対象製品: Armadillo-300

Armadillo-300を無線LANアクセスポイントとして使用する方法について説明します。 Armadillo-300の無線LANインターフェースをアクセスポイントに設定し、ルーティングなどの設定を行うことで、PCなどの無線LANクライアントから外部ネットワーク(インターネットなど)に接続できるようになります。

以下のLinuxが持つ機能を利用して実現します。これらは全て、Armadillo-300の開発環境に含まれています。

  • ネットワークインターフェースの設定コマンド
  • Linux 2.6のIPv4ルーティング機能
  • Linux 2.6のIPv4 NAT機能

これから説明する例では、以下のネットワーク環境を想定しています。ご利用の環境に合わせて適宜読みかえてください。

  • 外部ネットワーク(Ethernet LAN)
    ネットワークアドレス:172.16.0.0/16
    Armadillo-300のIPアドレス:172.16.19.100

  • 内部ネットワーク(無線LAN)
    ネットワークアドレス:192.168.10.0/24
    Armadillo-300のIPアドレス:192.168.10.100

1. カーネルとユーザランドイメージの準備

まず、NAT機能を有効にした、Armadillo-300のカーネルとユーザランドのイメージを作ります。 カーネル設定の変更により、iptablesコマンドをリコンパイルする必要があるため、ユーザランドのイメージも再作成する必要があります。

カーネルのコンフィギュレーションやatmark-distのビルド方法、イメージファイルの書き込み方法は、Armadillo-300のソフトウェアマニュアルを参照してください。

iptablesコマンドが正常にリコンパイルされるように、新規に展開したatmark-distで作業されることをお薦めします。すでにビルドされたatmark-distを利用する場合は、次のコマンドを先に実行してください。

[PC ~/atmark-dist]$ cd user/iptables
[PC ~/atmark-dist/user/iptables]$ make clean

atmark-distのコンフィギュレーションを行います。


[PC ~/atmark-dist]$ make menuconfig 

カーネル設定を選択します。


Kernel/Library/Defaults Selection  --->
  [*] Customize Kernel Settings (NEW)

カーネル設定でNATを有効にするために、以下の項目を選択します。


Device Drivers  --->
  Networking support  --->
    Networking options  --->
      [*] Network packet filtering (replaces ipchains)  --->
            IP: Netfilter Configuration  --->
          
            <*> Connection tracking (required for masq/NAT)
            <*> FTP protocol support
            <*> IRC protocol support
            <*> TFTP protocol support
            <*> IP tables support (required for filtering/masq/NAT)
            <*>   Full NAT
            <*>     MASQUERADE target support

NAT機能を含むカーネルイメージをビルドします。


[PC ~/atmark-dist]$ make

できあがったカーネルとユーザランドのイメージファイル(linux.bin.gz, romfs.bin.gz)をArmadillo-300のフラッシュメモリに書き込みます。

2. ネットワークインターフェースの設定

無線LANインタフェース

シリアルコンソールからArmadillo-300にログインします。 wlanconfigコマンドでArmadillo-300の無線LANインタフェース(ath0)の通信モードをアクセスポイントに指定して再作成します。


[armadillo ~]# wlanconfig ath0 destroy
[armadillo ~]# wlanconfig ath0 create wlandev wifi0 wlanmode ap

WEP-KEY を使用する場合、iwconfigコマンドを使用して設定します。
ここでは使用するアクセスポイントのWEP-KEYが「00-01-02-03-04-05-06-07-08-09-10-11-12」であると仮定します。


[armadillo ~]# iwconfig ath0 enc 00010203040506070809101112

iwconfigコマンドを使用して、アクセスポイントのESS-IDを設定します。
ここでは使用するアクセスポイントのESS-ID が「myap」であると仮定します。そして、ath0インタフェースのIPアドレスを設定します。


[armadillo ~]# iwconfig ath0 essid myap
[armadillo ~]# ifconfig ath0 192.168.10.100

以上で、設定はおしまいです。Armadillo-300と無線で通信できるか確認してみましょう。
Windows PCでワイヤレスネットワーク接続の表示機能で、「myap」というネットワークが表示されたでしょうか? 表示されない場合は、もう一度、設定内容を確認してください。

Windows Wireless Networks

LANインタフェース

ifconfigコマンドを使用して、LANインタフェース(eth0)IPアドレスを設定します。


[armadillo ~]# ifdown eth0
[armadillo ~]# ifconfig eth0 172.16.19.100

通信できることを確認するのは、pingコマンドで内部ネットワークにあるPCやサーバのアドレス(例: 172.16.0.1)を指定します。


[armadillo ~]# ping -c 2 172.16.0.1
PING 172.16.0.1 (172.16.0.1): 56 data bytes
64 bytes from 172.16.0.1: icmp_seq=0 ttl=64 time=1.2 ms
64 bytes from 172.16.0.1: icmp_seq=1 ttl=64 time=0.7 ms

3. ルーティング設定

外部ネットワークと内部ネットワークの間にデータが転送されるように設定します。


[armadillo ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[armadillo ~]# cat /proc/sys/net/ipv4/ip_forward
1

次に、他のネットワークに通信できるように、routeコマンドでデフォルトルータを指定します。


[armadillo ~]# route add -net default gw 172.16.0.1 dev eth0

ルート情報は以下のようになります。


[armadillo ~]# route
Kernel IP routing table                                                         
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface   
192.168.10.0    *               255.255.255.0   U     0      0        0 ath0    
172.16.0.0      *               255.255.0.0     U     0      0        0 eth0    
default         172.16.0.1      0.0.0.0         UG    0      0        0 eth0

4. NAT設定

データが外部ネットワークから内部ネットワークに正しく転送されるように設定する必要があります。

外部ネットワークのデフォルトルータで内部ネットワーク(192.168.10.0)のルーティング情報を追加することが1つの方法ですが、デフォルトルータの設定を簡単に変えられない場合があると思いますので、今回はSNAT (Source NAT)機能を利用します。

以下のコマンドで、内部ネットワークからのデータのIPアドレスがArmadillo-300の外部ネットワークのIPアドレス(172.16.19.100)に変換されて、外部にあるサーバやPCと通信できるようになります。


[armadillo ~]# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.10.0/24 -j SNAT --to-source 172.16.19.100

これで、Armadillo-300をアクセスポイントとして利用する準備が完了です。

5. 動作確認

Windows PCでワイヤレスネットワーク接続の表示機能で、「myap」ネットワークを選択して、必要に応じてWEP-KEYを入力してから、ワイヤレスネットワーク接続に適切な固定IPアドレスやネットワークアドレスを設定すると、外部のネットワークと通信できるようになります。以下が推奨のアドレスです。

  • IPアドレス:内部ネットワークの範囲にあるアドレス(例:192.168.10.150)
  • サブネットマスク:255.255.255.0
  • デフォルトゲートウェイ:Armadillo-300の無線LANインターフェースのIPアドレス(192.168.10.100)

6. 設定を起動時から有効にする

上記で行った設定を起動時から有効にするには、/etc/config/intefaces と /etc/config/ath0-pre-up を修正します。以下のように修正してから、flatfsdコマンドで保存して、再起動してください。

/etc/config/intefaces


# /etc/network/interfaces

auto lo eth0 ath0

iface lo inet loopback

iface eth0 inet static
        address 172.16.19.100
        netmask 255.255.0.0
        broadcast 172.16.255.255
        gateway 172.16.0.1
        up echo 1 > /proc/sys/net/ipv4/ip_forward
        up iptables -t nat -A POSTROUTING -o eth0 -s 192.168.10.0/24 -j SNAT --to-source 172.16.19.100
        down iptables -t nat -F

iface ath0 inet static
        address 192.168.10.100
        netmask 255.255.255.0
        broadcast 192.168.10.255
        pre-up /etc/config/ath0-pre-up

/etc/config/ath0-pre-up


#!/bin/sh

IFACE=ath0
ESSID=myap
ENC=00010203040506070809101112
MODE=ap

if [ "$MODE" = "ap" ]; then
        wlanconfig ath0 destroy
        wlanconfig ath0 create wlandev wifi0 wlanmode ap
fi

if [ "$ESSID" = "" ]; then
        echo "Error: not set SSID."
        echo ""
        wlanconfig $IFACE list scan
        exit 1
fi

iwconfig $IFACE essid $ESSID &&
if [ ! "$ENC" = "" ]; then
        iwconfig $IFACE enc $ENC
fi

7. おわりに

このHowtoでは、PCからArmadillo-300経由で外部のネットワークに接続できるようになりました。これができたら、DHCPサーバやファイアーウォール、DNSサーバなど動かしてみてはどうでしょうか?