IPv6のネットワーク構築 無線LAN
IPv6使ってネットワークを構築しました.
目標
無線LAN(GW-US54Mini2B)を使って,2台のノートPC(Vine Linux "カーネルバージョン2.6.16-0vl68")を繋げる.しかもIPv6で繋げる.
このときアクセスポイントやルータを使わない.GW-US54Mini2B同士を直接繋げる.所謂アドホックネットワークを目指す.
アドホックネットワークとは - IT用語辞典
無線LANのようなアクセスポイントを必要としない、無線で接続できる端末(パソコン、PDA、携帯電話など)のみで構成されたネットワーク。「無線アドホックネットワーク」、「自立分散型無線ネットワーク」とも言われる。
無線LANを使えるようにする
今回使用したGW-US54Mini2BのドライバはWin用とMac用しか用意されていないので,Linuxで動くようにがんばる.
といってもドライバを一から自作する…なんてことはしなくてすんだ.peugeot405.orgにあるとおりにやればできる.
一応まとめておく
1) http://www.ralinktech.com/ralink/Home/Support/Linux.htmlからRT73_Linux_STA_Drv1.0.4.0.tar.gzをダウンロードし,展開する.
2)
{USB_DEVICE(0x2019,0xab50)}, /* Planex GW-US54MINI2 */ \
の一行をrtmp_defs.h の #define RT73_USB_DEVICES { ... } の中に追加する.
3) あとは中にあるREADMEファイルを参考にしてコンパイルする.
1> $tar -xvzf RT73_Linux_STA_Drv_x.x.x.x.tar.gz go to "./RT73_Linux_STA_Drv_x.x.x.x/Module" directory. (引用者注:以下のコマンドはこのディレクトリで行う) 2> $cp Makefile.4 ./Makefile # [kernel 2.4] (引用者注:カーネルのバージョンが2.4シリーズの場合はMakefile.4の名前をMakefileに変更する) or $cp Makefile.6 ./Makefile # [kernel 2.6] 3> [kernel 2.4] $chmod 755 Configure $make config # config build linux os version (引用者注:カーネルバージョンが2.4シリーズの場合はバージョンを調べて,configの中身を書き換えてからmakeする必要があると思う) 4> $make all # compile driver source code (引用者注:コンパイルする.エラーがなければすんなり通ります) 5> $cp rt73.bin /etc/Wireless/RT73STA/ # copy firmware 6> $dos2unix rt73sta.dat $cp rt73sta.dat /etc/Wireless/RT73STA/rt73sta.dat # !!!check if it is a binary file before loading !!! 7> $load #[kernel 2.4] # $/sbin/insmod rt73.o # $/sbin/ifconfig rausb0 inet YOUR_IP up #[kernel 2.6] # $/sbin/insmod rt73.ko # $/sbin/ifconfig rausb0 inet YOUR_IP up (今回はifconfig rausb0 upって打つだけで良い.インタフェースを立ち上げることができさえすれば…)
4) 7>で起動する前に/etc/Wireless/RT73STA/内のrt73sta.datを編集する必要がある.これもREADMEを参考にする.
# Use "vi -b rt73sta.dat" to modify settings according to your need. # # 1.) set NetworkType to "Adhoc" for using Adhoc-mode, otherwise using Infrastructure (引用者注:今回はAdhocモードで通信したいのでデフォルトのInfraをAdhocに書き換える) # 2.) set Channel to "0" for auto-select on Infrastructure mode # 3.) set SSID for connecting to your Accss-point. # 4.) AuthMode can be "WEPAUTO", "OPEN", "SHARED", "WPAPSK", "WPA2PSK", "WPANONE" # 5.) EncrypType can be "NONE", "WEP", "TKIP", "AES" # for more information refer to the Readme file. (引用者注:他は別にいじる必要性はなかった)
IPv6…
2台のPCともに以上のようにセットアップして,無線LANを使えるようにして…IPv6でネットワークを構築する.
この時点でifconfigしてみると…
rausb0 リンク方法:イーサネット ハードウェアアドレス **:**:**:**:**:** inet6アドレス: fe80::290:ccff:fee5:ed95/64 範囲:リンク (引用者注:このアドレスは勝手に割り振られるみたいだ.MACアドレスとかで計算してるらしい) UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RXパケット:130 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:1603 エラー:0 損失:2 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RX bytes:7863 (7.6 Kb) TX bytes:130812 (127.7 Kb)
こんな感じになっている.これに
[root@localhost root]# ifconfig rausb0 add 2001:240:ff:1::10/64 up
というコマンドでIPv6のアドレスを追加する.
rausb0 リンク方法:イーサネット ハードウェアアドレス **:**:**:**:**:** inet6アドレス: 2001:240:ff:1::10/64 範囲:グローバル inet6アドレス: fe80::290:ccff:fee5:ed95/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RXパケット:136 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:1817 エラー:0 損失:2 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RX bytes:8157 (7.9 Kb) TX bytes:148356 (144.8 Kb)
すると,こんな感じになる.これで設定終了だったりします.(もう片方のPCには2001:240:ff:1::11/64というアドレスを与えてやります.)
(arpとかDHCPとか無いんですね…つかよくわからん.なんでこれだけで繋がるんだろうか?)
2001:240:ff:1::11/64のPCの方のインタフェース情報
rausb0 リンク方法:イーサネット ハードウェアアドレス **:**:**:**:**:** inet6アドレス: 2001:240:ff:1::11/64 範囲:グローバル inet6アドレス: fe80::290:ccff:fee2:a97b/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RXパケット:3291 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:643 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RX bytes:8157 (180.3 Kb) TX bytes:65472 (63.9 Kb)
接続確認(テスト)
2001:240:ff:1::10/64のPCでping6をリンクローカル/全ノード/マルチキャストアドレス「ff02::1」に飛ばしてみる.
[root@localhost root]# ping6 -I rausb0 ff02::1 PING ff02::1(ff02::1) from fe80::290:ccff:fee5:ed95 rausb0: 56 data bytes 64 bytes from fe80::290:ccff:fee5:ed95: icmp_seq=0 ttl=64 time=0.239 ms 64 bytes from fe80::290:ccff:fee2:a97b: icmp_seq=0 ttl=64 time=7.56 ms (DUP!) 64 bytes from fe80::290:ccff:fee5:ed95: icmp_seq=1 ttl=64 time=0.245 ms 64 bytes from fe80::290:ccff:fee2:a97b: icmp_seq=1 ttl=64 time=7.08 ms (DUP!) ・・・・ --- ff02::1 ping statistics --- 8 packets transmitted, 8 received, +8 duplicates, 0% packet loss, time 7001ms rtt min/avg/max/mdev = 0.239/3.632/7.563/3.390 ms, pipe 2
正直これもよくわかってない.……どうなってるんだろうか?
[root@localhost root]# ping6 2001:240:ff:1::11 PING 2001:240:ff:1::11(2001:240:ff:1::11) 56 data bytes 64 bytes from 2001:240:ff:1::11: icmp_seq=0 ttl=64 time=4.33 ms 64 bytes from 2001:240:ff:1::11: icmp_seq=1 ttl=64 time=2.01 ms 64 bytes from 2001:240:ff:1::11: icmp_seq=2 ttl=64 time=1.99 ms --- 2001:240:ff:1::11 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 1.998/2.781/4.333/1.097 ms, pipe 2
普通にping6を2001:240:ff:1::10のPCから2001:240:ff:1::11のPCに向かって打ってみるとこんな感じです.
グローバルでないリンクに対してping6を打ってみたがだめだった.(fe80::290:ccff:fee5:ed95→fe80::290:ccff:fee2:a97b)
[root@localhost root]# ping6 fe80::290:ccff:fee2:a97b connect: 無効な引数です
参考文献
http://www.linux.or.jp/JF/JFdocs/Wireless-HOWTO.html
【 ifconfig 】 ネットワーク・インタフェースの参照・設定・起動・停止 | 日経 xTECH(クロステック)
IPv6コース
http://www2h.biglobe.ne.jp/~hnakamur/technolab/freebsd/os/ipv6/ipv6.htm
http://www.dadd9.com/tech/networkadmin_04.html
http://query.freak.ne.jp/howtouse.html
IPv6ネットワーク構築とパケットフィルタリング (2/3):Linuxで作るIPv6ネットワーク環境(3) - @IT
IPv6 コマンド仕様