2013年6月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にて若干手順が変わっているようなので、 別途ご報告します。

0 件のコメント:

コメントを投稿