いろんな人が少しずついろんなことをやっているのですが、一通りまとめた物がないようなのでここにメモします。タイトルにNintendoDSと書いてありますが、別に限定しているわけではなく、要するにUbuntuを使ってイーモバイルの回線につながる無線ブロードバンドルータを作ろうという話です。
【前提条件】
・Ubuntu 7.10をPCにインストール済みである。
・PCには有線LANアダプタが1系統ついていて、eth0として認識されている。
・eth0以外のLANアダプタは存在しない。
・NATのローカル側は192.168.11.0/24を設定するものとする(変える場合は以下を随時読み替えること)。
【目標】
Ubuntu 7.10にD02HWとGW-US54GXS(USB無線LANモジュール)を接続して、NintendoDSからWi-Fi経由でイーモバイルの回線を使って遊ぶ。
【作業手順】
・zd1211ベンダードライバをインストールする
+ Synapticパッケージ・マネージャを使用して、linux-source-2.6.22をインストールする→/usr/src/linux-source-2.6.22.tar.bz2が生成される
+ cd /usr/srcでカレントディレクトリを移動する
+ sudo bunzip2 linux-source-2.6.22.tar.bz2を実行して圧縮解除→/usr/src/linux-source-2.6.22.tarが生成される
+ sudo tar xvf linux-source-2.6.22.tarを実行して展開する→/usr/src/linux-source-2.6.22フォルダが生成される
+ sudo ln -s linux-source-2.6.22 linuxを実行する。→/usr/srcにlinuxシンボリックリンクが生成される。
+ 任意の作業フォルダにZD1211LnxDrv_2_22_0_0.tar.gz(ここからダウンロード)を置く
+ tar xzvf ZD1211LnkDrv_2_22_0_0.tar.gzを実行して展開する→ZD1211LnkDrv_2_22_0_0ディレクトリができる
+ ZD1211LnkDrv_2_22_0_0フォルダ内のMakeFileを編集する
#replace begin
#ifeq ($(KERN_VER), 2.6)
# KERN_26=y
# KERNEL_SOURCE=/usr/src/linux-2.6.9
#else
# KERN_24=y
# KERNEL_SOURCE=/usr/src/linux-2.4
#endif
KERN_26=y
KERNEL_SOURCE=/usr/src/linux
# replace end
+ make ZD1211REV_B=1を実行してmakeする
+ 生成されたzd1211b.koを/lib/module/2.6.22-14-generic/kernel/drivers/net/wirelessにコピーする
(コマンド:sudo cp zd1211b.ko /lib/module/2.6.22-14-generic/kernel/drivers/net/wireless)
+ sudo depmod -aを実行する。
・Synapticパッケージ・マネージャからdnsmasqをインストールする
・Synapticパッケージ・マネージャからdhcp3-serverをインストールする
・「システム」→「システム管理」→「サービスの管理」で、dhcp3-serverの自動起動を無効にする
・/etc/default/dhcp3-serverにおいて、INTERFACES="eth1"とする
・/etc/dhcp3/dhcpd.confを編集する
option domain-name "<任意ドメイン>"
option domain-name-servers 192.168.11.1
subnet 192.168.11.0 netmask 255.255.255.0 {
range 192.168.11.10 192.168.11.128;
option routers 192.168.11.1;
}
・/etc/network/interfacesを編集する。wireless-essid、wireless-channel、wireless-keyは必要に応じて変更する
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.11.1
network 192.168.11.0
broadcast 192.168.11.255
netmask 255.255.255.0
wireless-mode master
wireless-essid your-ess-id
wireless-channel 11
wireless-key s:your-13s-keys
post-up sh /etc/network/iptables_masq_start.sh
post-up /etc/init.d/dhcp3-server start
post-down /etc/init.d/dhcp3-server stop
post-down sh /etc/network/iptables_masq_stop.sh
auto ppp0
iface ppp0 inet ppp
provider emobile
・/etc/networkにiptablesのスタートアップ・シャットダウンスクリプトをコピーする
[iptables_masq_start.sh]
#! /bin/sh
internal_ip='192.168.11.0/24'
echo 1 > /proc/sys/net/ipv4/ip_forward
##############
#Flush & Reset
##############
iptables -F
iptables -t nat -F
iptables -X
##############
#Deafult Rule
##############
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth1 -s $internal_ip -j ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A FORWARD -i eth1 -o eth0 -s $internal_ip -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp0 -s $internal_ip -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#################
#SNAT(masquerade)
#################
iptables -t nat -A POSTROUTING -o eth0 -s $internal_ip -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s $internal_ip -j MASQUERADE
[iptables_masq_stop.sh]
#! /bin/sh
internal_ip='192.168.11.0/24'
##############
#Flush & Reset
##############
iptables -F
iptables -t nat -F
iptables -X
・sudo pppconfigでダイヤルアップ接続を作成する
+ プロバイダ名:emobile
+ ネームサーバ(DNS)の設定:動的DNSを使う
+ 認証方法:PAP
+ ユーザ名:em
+ パスワード:em
+ 速度:115200(デフォルトのまま)
+ パルスまたはトーン:Tone
+ 電話番号:*99***1#
+ モデムの設定方法:いいえ(手動で指定)
+ モデムポート:/dev/ttyUSB0
【起動方法】
・有線LANケーブルを抜き、D02HWとGW-US54GXSの両方を接続した状態でUbuntuを起動→イーモバイル経由になる
・有線LANケーブルを接続し、GW-US54GXSのみを接続した状態でUbuntuを起動→有線LAN経由になる。
・接続状態が変わったときには次のコマンドを入力する。
sudo /etc/init.d/networking restart
【動作確認】
・まずはPCなどで確認するのが無難→アクセスポイントが検索されること、WEPのKEYを入力後IPアドレスが割り当てられ、Webアクセスができること
・PCからアクセスできれば、NintendoDSからもアクセスできるはず
・あとはご自由に
【検証】
・この環境を使ってマリオカートDSで対戦をしてみましたが、特に通信の遅れなど感じることはありませんでした。また、別段ポート開放などを行う必要もないようです。
【免責事項】
・(お決まりですが)以上の内容について、筆者は一切の責任を負いません。
・イーモバイルは今のところポート制限や帯域制限を行っていないようですが、あまりにもトラヒックを圧迫すれば、当然ポートをふさがれたり帯域制限をかけられたりすることが考えられます。上記はあくまで技術検証のために行った内容であり、イーモバイルのほかに高速な回線が使えるならば、そちらでNintendoDSを楽しんだほうがよいでしょう。