趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。※サイト移転しました(tomono.eleho.net ⇒ tomono.tokyo)
RSS icon
  • IPv6を使う他の方法(Debian+gogoNET その3)・・・一応接続成功

    投稿日 2011年 2月 25日 コメントはありません

    正しいクライアントは、gogoCLIENT で gogonet.gogo6.com からソースのアーカイブの形で持ってきます。(コンパイルの手間を省こうとしたのが tspc で嵌った原因でした・・・)

    # tar xvfz gogoc-1_2-RELEASE.tar.gz

    で展開します。

    READMEをみると、依存関係がいろいろ書いてあるので、apt-get でインストールしました。

    # apt-get install make
    # apt-get install gcc
    # apt-get install g++

    で、いよいよコンパイルです。

    va50j:~/gogoc-1_2-RELEASE# make platform=linux all
    cd gogoc-tsp && make all
    make[1]: ディレクトリ /root/gogoc-1_2-RELEASE/gogoc-tsp' に入ります
    Building gogoCLIENT for platform linux ...
    Building gogoc-pal module ...
    make[2]: ディレクトリ
    /root/gogoc-1_2-RELEASE/gogoc-pal’ に入ります
    Setting up PAL for platform linux …
    Building PAL objects for platform linux …
    make[3]: ディレクトリ /root/gogoc-1_2-RELEASE/gogoc-pal/platform' に入ります
    make[4]: ディレクトリ
    /root/gogoc-1_2-RELEASE/gogoc-pal/platform/common’ に入ります
    gcc -c -O2 -I/root/gogoc-1_2-RELEASE/gogoc-pal/defs -Iinc -DPLATFORM=\”linux\” -D_REENTRANT -o /root/gogoc-1_2-RELEASE/gogoc-pal/objs/pal_version.o src/pal_version.c
    make[4]: ディレクトリ /root/gogoc-1_2-RELEASE/gogoc-pal/platform/common' から出ます
    make[4]: ディレクトリ
    /root/gogoc-1_2-RELEASE/gogoc-pal/platform/unix-common’ に入ります
    make[4]: platform-obj' に対して行うべき事はありません.
    make[4]: ディレクトリ
    /root/gogoc-1_2-RELEASE/gogoc-pal/platform/unix-common’ から出ます
    make[3]: ディレクトリ /root/gogoc-1_2-RELEASE/gogoc-pal/platform' から出ます

    Creating libgogocpal.a PAL library for platform linux ...
    a - /root/gogoc-1_2-RELEASE/gogoc-pal/objs/pal_version.o

    Copying PAL header files for platform linux ...
    make[3]: ディレクトリ
    /root/gogoc-1_2-RELEASE/gogoc-pal/platform’ に入ります
    make[4]: ディレクトリ /root/gogoc-1_2-RELEASE/gogoc-pal/platform/common' に入ります
    make[4]: ディレクトリ
    /root/gogoc-1_2-RELEASE/gogoc-pal/platform/common’ から出ます
    make[4]: ディレクトリ /root/gogoc-1_2-RELEASE/gogoc-pal/platform/unix-common' に入ります
    make[4]: ディレクトリ
    /root/gogoc-1_2-RELEASE/gogoc-pal/platform/unix-common’ から出ます
    make[3]: ディレクトリ /root/gogoc-1_2-RELEASE/gogoc-pal/platform' から出ます

    make[2]: ディレクトリ /root/gogoc-1_2-RELEASE/gogoc-pal’ から出ます
    Building gogoc-config module …
    make[2]: ディレクトリ /root/gogoc-1_2-RELEASE/gogoc-config' に入ります
    mkdir -p objs
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/namevalueparser.o src/namevalueparser.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/config.o src/config.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/namevalueconfig.o src/namevalueconfig.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/gogocvalidation.o src/gogocvalidation.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/gogocconfig.o src/gogocconfig.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/gogoc_c_wrapper.o src/gogoc_c_wrapper.cc
    gcc -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/gogocuistrings.o src/gogocuistrings.c
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/haccess_devmap_c_wrap.o src/haccess_devmap_c_wrap.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/haccessdevicemappingconfig.o src/haccessdevicemappingconfig.cc
    mkdir -p lib
    ar cru lib/libgogocconfig.a objs/namevalueparser.o objs/config.o objs/namevalueconfig.o objs/gogocvalidation.o objs/gogocconfig.o objs/gogoc_c_wrapper.o objs/gogocuistrings.o objs/haccess_devmap_c_wrap.o objs/haccessdevicemappingconfig.o
    ranlib lib/libgogocconfig.a
    mkdir -p bin
    make[2]: ディレクトリ
    /root/gogoc-1_2-RELEASE/gogoc-config’ から出ます
    Building gogoc-messaging module …
    make[2]: ディレクトリ /root/gogoc-1_2-RELEASE/gogoc-messaging' に入ります
    mkdir -p objs
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/ipcserver.o src/ipcserver.cc
    src/ipcserver.cc: In member function ‘virtual bool gogocmessaging::IPCServer::WaitReady(long unsigned int)’:
    src/ipcserver.cc:133: warning: suggest parentheses around assignment used as truth value
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/ipcclient.o src/ipcclient.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/servent.o src/servent.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/message.o src/message.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/messagesender.o src/messagesender.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/communicationsmgr.o src/communicationsmgr.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/clientmsgtranslator.o src/clientmsgtranslator.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/clientmsgsender.o src/clientmsgsender.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/servermsgtranslator.o src/servermsgtranslator.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/servermsgsender.o src/servermsgsender.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/clientmessengerimpl.o src/clientmessengerimpl.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/guimessengerimpl.o src/guimessengerimpl.cc
    g++ -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/gogoc_c_wrapper.o src/gogoc_c_wrapper.cc
    gcc -O2 -I. -I../gogoc-pal/out_inc -I../gogoc-pal/defs -Wall -D_REENTRANT -DNDEBUG -c -o objs/gogocuistrings.o src/gogocuistrings.c
    mkdir -p lib
    ar cru lib/libgogocmessaging.a objs/ipcserver.o objs/ipcclient.o objs/servent.o objs/message.o objs/messagesender.o objs/communicationsmgr.o objs/clientmsgtranslator.o objs/clientmsgsender.o objs/servermsgtranslator.o objs/servermsgsender.o objs/clientmessengerimpl.o objs/guimessengerimpl.o objs/gogoc_c_wrapper.o objs/gogocuistrings.o
    ranlib lib/libgogocmessaging.a
    mkdir -p bin
    make[2]: ディレクトリ
    /root/gogoc-1_2-RELEASE/gogoc-messaging’ から出ます
    mkdir -p /root/gogoc-1_2-RELEASE/gogoc-tsp/objs
    mkdir -p /root/gogoc-1_2-RELEASE/gogoc-tsp/bin
    make[2]: ディレクトリ /root/gogoc-1_2-RELEASE/gogoc-tsp/src/lib' に入ります
    gcc -O2 -Wall -I/root/gogoc-1_2-RELEASE/gogoc-tsp/platform/linux -I/root/gogoc-1_2-RELEASE/gogoc-tsp/include -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/out_inc -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/defs -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-config -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-messaging -D_REENTRANT -c base64.c -o /root/gogoc-1_2-RELEASE/gogoc-tsp/objs/base64.o
    gcc -O2 -Wall -I/root/gogoc-1_2-RELEASE/gogoc-tsp/platform/linux -I/root/gogoc-1_2-RELEASE/gogoc-tsp/include -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/out_inc -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/defs -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-config -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-messaging -D_REENTRANT -c cli.c -o /root/gogoc-1_2-RELEASE/gogoc-tsp/objs/cli.o
    gcc -O2 -Wall -I/root/gogoc-1_2-RELEASE/gogoc-tsp/platform/linux -I/root/gogoc-1_2-RELEASE/gogoc-tsp/include -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/out_inc -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/defs -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-config -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-messaging -D_REENTRANT -c config.c -o /root/gogoc-1_2-RELEASE/gogoc-tsp/objs/config.o
    gcc -O2 -Wall -I/root/gogoc-1_2-RELEASE/gogoc-tsp/platform/linux -I/root/gogoc-1_2-RELEASE/gogoc-tsp/include -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/out_inc -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/defs -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-config -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-messaging -D_REENTRANT -c lib.c -o /root/gogoc-1_2-RELEASE/gogoc-tsp/objs/lib.o
    gcc -O2 -Wall -I/root/gogoc-1_2-RELEASE/gogoc-tsp/platform/linux -I/root/gogoc-1_2-RELEASE/gogoc-tsp/include -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/out_inc -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/defs -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-config -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-messaging -D_REENTRANT -c log.c -o /root/gogoc-1_2-RELEASE/gogoc-tsp/objs/log.o
    gcc -O2 -Wall -I/root/gogoc-1_2-RELEASE/gogoc-tsp/platform/linux -I/root/gogoc-1_2-RELEASE/gogoc-tsp/include -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/out_inc -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/defs -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-config -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-messaging -D_REENTRANT -c md5c.c -o /root/gogoc-1_2-RELEASE/gogoc-tsp/objs/md5c.o
    gcc -O2 -Wall -I/root/gogoc-1_2-RELEASE/gogoc-tsp/platform/linux -I/root/gogoc-1_2-RELEASE/gogoc-tsp/include -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/out_inc -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/defs -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-config -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-messaging -D_REENTRANT -c buffer.c -o /root/gogoc-1_2-RELEASE/gogoc-tsp/objs/buffer.o
    gcc -O2 -Wall -I/root/gogoc-1_2-RELEASE/gogoc-tsp/platform/linux -I/root/gogoc-1_2-RELEASE/gogoc-tsp/include -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/out_inc -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-pal/defs -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-config -I/root/gogoc-1_2-RELEASE/gogoc-tsp/../gogoc-messaging -D_REENTRANT -c bufaux.c -o /root/gogoc-1_2-RELEASE/gogoc-tsp/objs/bufaux.o
    bufaux.c:54:24: error: openssl/bn.h: そのようなファイルやディレクトリはありません
    In file included from bufaux.c:55:
    /root/gogoc-1_2-RELEASE/gogoc-tsp/include/bufaux.h:34: error: expected declaration specifiers or ‘...’ before ‘BIGNUM’
    /root/gogoc-1_2-RELEASE/gogoc-tsp/include/bufaux.h:35: error: expected declaration specifiers or ‘...’ before ‘BIGNUM’
    bufaux.c:84: error: expected declaration specifiers or ‘...’ before ‘BIGNUM’
    bufaux.c: In function ‘buffer_put_bignum’:
    bufaux.c:86: warning: implicit declaration of function ‘BN_num_bits’
    bufaux.c:86: error: ‘value’ undeclared (first use in this function)
    bufaux.c:86: error: (Each undeclared identifier is reported only once
    bufaux.c:86: error: for each function it appears in.)
    bufaux.c:96: warning: implicit declaration of function ‘BN_bn2bin’
    bufaux.c: At top level:
    bufaux.c:115: error: expected declaration specifiers or ‘...’ before ‘BIGNUM’
    bufaux.c: In function ‘buffer_get_bignum’:
    bufaux.c:131: warning: implicit declaration of function ‘BN_bin2bn’
    bufaux.c:131: error: ‘value’ undeclared (first use in this function)
    make[2]: *** [/root/gogoc-1_2-RELEASE/gogoc-tsp/objs/bufaux.o] エラー 1
    make[2]: ディレクトリ
    /root/gogoc-1_2-RELEASE/gogoc-tsp/src/lib’ から出ます
    make[1]: *** [build-gogoc] エラー 1
    make[1]: ディレクトリ `/root/gogoc-1_2-RELEASE/gogoc-tsp’ から出ます
    make: *** [all] エラー 2
    va50j:~/gogoc-1_2-RELEASE#

    ということで、エラーになってしまいました。しょんぼり。でも、BIGNUMをキーワードに調べてみると、

    # apt-get install libssl-dev

    とするとよいという情報があったので、試してみたところ、無事に make が通るようになりました。

    # make platform=linux installdir=/usr/local/gogoc install

    とすると、あっさりインストールは成功しました。この場合、設定ファイルは /usr/local/gogoc/bin の下にあるものが使われるようで、デフォルトではAnonymousな接続になるようです。
    で、起動してみます。

    va50j:/usr/local/gogoc/bin# ./gogoc
    gogoCLIENT v1.2-RELEASE build Feb 18 2011-03:14:49
    Built on ///Linux va50j 2.6.26-2-686 #1 SMP Thu Jan 27 00:28:05 UTC 2011 i686 GNU/Linux///
    Received a TSP redirection message from server anonymous.freenet6.net (1200 Redi).ction
    The server redirection list is [ anon-amsterdam.freenet6.net, anon-taipei.freenet6.net, anon-montreal.freenet6.net ].
    The optimized server redirection list is [ anon-taipei.freenet6.net, anon-montreal.freenet6.net, anon-amsterdam.freenet6.net ].

    ということであっさり動作しました。早速、ifconfig で見てみます。

    va50j:/usr/local/gogoc/bin# ifconfig
    eth0 Link encap:イーサネット ハードウェアアドレス xx:xx:xx:xx:xx:xx
    inetアドレス:192.168.x.xx ブロードキャスト:192.168.1.255 マスク:255.255.255.0
    inet6アドレス: fe80::200:xxxx:xxxx:xxxx/64 範囲:リンク
    UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
    RXパケット:28712 エラー:0 損失:0 オーバラン:41 フレーム:41
    TXパケット:12941 エラー:0 損失:0 オーバラン:0 キャリア:0
    衝突(Collisions):0 TXキュー長:1000
    RXバイト:20038867 (19.1 MiB) TXバイト:2025306 (1.9 MiB)

    lo Link encap:ローカルループバック
    inetアドレス:127.0.0.1 マスク:255.0.0.0
    inet6アドレス: ::1/128 範囲:ホスト
    UP LOOPBACK RUNNING MTU:16436 メトリック:1
    RXパケット:2321 エラー:0 損失:0 オーバラン:0 フレーム:0
    TXパケット:2321 エラー:0 損失:0 オーバラン:0 キャリア:0
    衝突(Collisions):0 TXキュー長:0
    RXバイト:1143936 (1.0 MiB) TXバイト:1143936 (1.0 MiB)

    tun Link encap:不明なネット ハードウェアアドレス 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    inet6アドレス: 2001:xxx:xxxx:xxxx::xx:xxxx/128 範囲:グローバル
    UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1280 メトリック:1
    RXパケット:6 エラー:0 損失:0 オーバラン:0 フレーム:0
    TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
    衝突(Collisions):0 TXキュー長:500
    RXバイト:416 (416.0 B) TXバイト:0 (0.0 B)

    ということで、トンネルデバイスが無事に生成されました。
    さらに、traceroute6 で見てみます。

    va50j:/usr/local/gogoc/bin# traceroute6 www.kame.net
    traceroute to www.kame.net (2001:200:dff:fff1:216:3eff:feb1:44d7), 30 hops max, 40 byte packets
    1 2001:c08:xxxx:xxxx::xx:xxxx (2001:c08:xxxx:xxxx::xx:xxxx) 37.097 ms 38.083 ms 37.652 ms
    2 2001:c08:xx:x::xxx:x (2001:c08:xx:x::xxx:x) 37.156 ms 36.605 ms 37.127 ms
    3 2001:c08:xx::xx (2001:xxx:xx::xx) 38.393 ms 37.964 ms 37.471 ms
    4 2001:288:xxx:x::x (2001:288:xxx:x::x) 36.975 ms 36.603 ms 37.433 ms
    5 2001:c08:7f::21 (2001:c08:7f::21) 67.240 ms 66.780 ms 67.386 ms
    6 2001:200:0:fe00::9c4:11 (2001:200:0:fe00::9c4:11) 69.532 ms 70.818 ms 74.719 ms
    7 2001:200:0:1802:20c:dbff:fe1f:7200 (2001:200:0:1802:20c:dbff:fe1f:7200) 69.995 ms 70.116 ms 72.552 ms
    8 ve42.foundry4.nezu.wide.ad.jp (2001:200:0:11::66) 72.891 ms 72.831 ms 72.275 ms
    9 cloud-net1.wide.ad.jp (2001:200:0:1c0a:218:8bff:fe43:d1d0) 72.556 ms 72.521 ms 72.461 ms
    10 2001:200:dff:fff1:216:3eff:feb1:44d7 (2001:200:dff:fff1:216:3eff:feb1:44d7) 72.831 ms 72.773 ms 72.737 ms
    va50j:/usr/local/gogoc/bin#

    ということで、無事につながりました。

    ・・・が、再起動して、無線APの下に移動(同時にクラスCの固定プライベートアドレスからクラスBのDHCPアドレスに移動)したら、つながらなくなっちゃいました。(泣)

    ・・・なんてことになって、しょんぼりしながらこの日記をここまで書いた後、改めて試してみたら何故かつながって、www.kame.netに接続したら無事に亀が踊りました。時計が結構ずれてたからなにか関係あるのかな??
    とにかくよくわかりません・・・(泣)


  • IPv4/IPv6メーターをつけてみました

    投稿日 2011年 2月 24日 コメントはありません

    右下のウィジェットにインテックシステム研究所さんIPv4/IPv6メーターIPv4枯渇時計をつけてみました。IPv6の普及具合とIPv4のX-Dayが目に見える・・・・かもしれない。

    インテックシステム研究所さんでは他にも、IPv4/IPv6 checkerなんてものもあって、真ん中のチェックボタンを押すとアクセスしているIPv4/IPv6アドレスを表示してくれます。

    Internet Metricsというページでは、IPv4/v6関連のネットワーク計測結果が見れるのですが、色々興味深いです。例えば、

    • IPv4/IPv6の遅延比較を全体と日本で見比べてみると、全体ではv4/v6どちらが遅いということははっきりしないのだが、日本では明らかにv6の方が遅延が大きいことがわかる。枯渇枯渇と叫ばれていても、海外と比較して実態として準備が進んでいないことを表しているのでしょう。
    • OS別アクセス比率IPv4というページでは、今なおWindowsXPの比率が40%くらいを占めているのがわかる。さらによく見ると、小刻みにヒゲ状のグラフになっていて、これは週末になるとWindowsXPの比率が下がることを示していると思う。つまり、パーソナルユースではWindows7などへの置き換えが進んでいるのだけど、ビジネスユースでは遅れているということなのでしょう。
    • OS別アクセス比率IPv6では今年に入って上記のヒゲ状のものが見えます。週末にIPv6にトライする人が増えたということでしょうかね?

    などなど。


  • IPv6を使う他の方法(Debian+gogoNET その2)・・・失敗事例

    投稿日 2011年 2月 24日 コメントはありません

    gogoNETを使う debian PC の準備ができたので、実際にインストールを行ってみる。

    インストールしてみる。(これはやってはいけない!)

    # apt-get install tspc
    パッケージリストを読み込んでいます… 完了
    依存関係ツリーを作成しています
    状態情報を読み取っています… 完了
    以下の特別パッケージがインストールされます:
    radvd
    以下のパッケージが新たにインストールされます:
    radvd tspc
    アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 12 個。
    104kB のアーカイブを取得する必要があります。
    この操作後に追加で 438kB のディスク容量が消費されます。
    続行しますか [Y/n]?
    取得:1 http://ftp.jaist.ac.jp lenny/main radvd 1:1.1-3 [62.1kB]
    取得:2 http://ftp.jaist.ac.jp lenny/main tspc 2.1.1-6.1 [42.0kB]
    104kB を 0s で取得しました (275kB/s)
    未選択パッケージ radvd を選択しています。
    (データベースを読み込んでいます … 現在 120112 個のファイルとディレクトリがインストールされています。)
    (…/radvd_1%3a1.1-3_i386.deb から) radvd を展開しています…
    未選択パッケージ tspc を選択しています。
    (…/tspc_2.1.1-6.1_i386.deb から) tspc を展開しています…
    man-db のトリガを処理しています …
    radvd (1:1.1-3) を設定しています …
    Starting radvd:
    * /etc/radvd.conf does not exist or is empty.
    * See /usr/share/doc/radvd/README.Debian
    * radvd will *not* be started.
    tspc (2.1.1-6.1) を設定しています …
    Setting up IPv6 tunnel: tspGetCapabilities error 2: SOCKET_ERROR
    if you are using udp, there is probably no udp listener at anon.freenet6.net

    All transports failed, quitting

    Error is 2: SOCKET_ERROR
    TSP session done
    invoke-rc.d: initscript tspc, action “start” failed.
    dpkg: tspc の処理中にエラーが発生しました (–configure):
    サブプロセス post-installation script はエラー終了ステータス 1 を返しました
    以下のパッケージの処理中にエラーが発生しました:
    tspc
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    #

    となって、エラーになってしまった。

    調べてみると、apt-get でインストールできるクライアントは非常に古いものらしく、NGなのだそうだ。

    で、

    # apt-get purge tspc

    とやってもエラーになってうまくいかず、嵌ってしまった・・・。

    さらに調べると、

    # rm /etc/init.d/tspc

    としてから

    # apt-get purge tspc

    とすれば削除できるとのこと。

    これだと依存関係で入った radvd が削除されないので、併せて、

    # apt-get purge radvd

    で削除して戻した。

    参考:


  • IPv6を使う他の方法(Debian+gogoNET その1)

    投稿日 2011年 2月 23日 コメントはありません

    WindowsでのTeredo、Ubuntu環境でのMiredoによるIPv6接続を試してみましたが、他にgogoNET(旧Freenet6)というIPv6トンネルサービスがあるようですので、かつてインストールしたDebian(でも最近は電源を落としたままだった)上で試してみることにしました。調べてみると(旧Freenet6時代の話しか見えないのですが)固定のIPv6アドレスが取れるようなのです。

    利用するにはまず gogonet.gogo6.com にアクセスし、サインアップします。姓名、メールアドレスと誕生日、パスワードに続いて、居住国や都市、アンケートなどに答えるとサインアップできます。

    次に、実際に設定を行う前に、今回使用するDebianマシンもIPv6経由で外に晒されることになりますから、Firewall(iptablesベース)を設定します。今回は簡単にWebminで設定し、デフォルトで全ての接続を破棄し、必要なポートだけ開けることにしました。

    受信の設定は以下の通りとしました。DNS、ssh、ident、http、https、webminだけを利用可能な設定です。webminは実際にはIPv4のローカルアドレス(=プライベートアドレス)からしか接続を受け付けないようにしてあります。

    許可 : もし 着信インターフェースが eth0 でない
    許可 : もし プロトコルが TCP である 且つ TCPフラグ ACK が ACK である
    許可 : もし 接続の状態が ESTABLISHED である
    許可 : もし 接続の状態が RELATED である
    許可 : もし プロトコルが UDP である 且つ 宛先ポートが 1024:65535 である 且つ 発信元ポートが 53 である
    許可 : もし プロトコルが ICMP である 且つ ICMPタイプが 0 である
    許可 : もし プロトコルが ICMP である 且つ ICMPタイプが 3 である
    許可 : もし プロトコルが ICMP である 且つ ICMPタイプが 4 である
    許可 : もし プロトコルが ICMP である 且つ ICMPタイプが 11 である
    許可 : もし プロトコルが ICMP である 且つ ICMPタイプが 12 である
    許可 : もし プロトコルが TCP である 且つ 宛先ポートが 22 である
    許可 : もし プロトコルが TCP である 且つ 宛先ポートが 113 である
    許可 : もし プロトコルが TCP である 且つ 宛先ポートが 80 である 且つ 接続の状態が NEW である
    許可 : もし プロトコルが TCP である 且つ 宛先ポートが 443 である 且つ 接続の状態が NEW である
    許可 : もし プロトコルが TCP である 且つ 宛先ポートが 10000 である 且つ 接続の状態が NEW である

    送信の設定は以下の通りとしました。DNS、http(apt-getのため)のみ開けてあります。

    許可 : もし 発信インタフェースが eth0 でない
    許可 : もし 接続の状態が ESTABLISHED である
    許可 : もし 接続の状態が RELATED である
    許可 : もし プロトコルが ICMP である 且つ ICMPタイプが echo-reply である
    許可 : もし プロトコルが ICMP である 且つ ICMPタイプが echo-request である
    許可 : もし プロトコルが TCP である 且つ 宛先ポートが 80 である 且つ 接続の状態が NEW である
    許可 : もし プロトコルが TCP である 且つ 宛先ポートが 53 である 且つ 接続の状態が NEW である
    許可 : もし プロトコルが UDP である 且つ 宛先ポートが 53 である
    許可 : もし プロトコルが UDP である 且つ 宛先ポートが 67 である

    とりあえず、外部からNATを越えてローカル(正確には専用セグメントですが)のIPv6のhttpサーバにアクセスすることを目標にします。

    ~~続く~~


  • WindowsXPでIPv6を使ってみる

    投稿日 2011年 2月 19日 コメントはありません

    WindowsXPの場合は簡単です。今回は、Tokyo6to4 PROJECTのページの記載と、アクセンステクノロジー社のWebの記述を参考にしました。

    コマンドプロンプトで「ipv6 install」と入力します。「Installing…」と表示され、しばらくすると「Succeeded.」と表示されます。

    次に、teredoのサーバを教えてやります。(Miredoの開発者が提供しているサーバではうまくいかないようです)

    netsh interface ipv6 set teredo enterpriseclient teredo.ipv6.microsoft.com

    その後、ポリシーテーブルを変更してIPv6を優先で使うために、以下の内容を入力します。

    赤字の部分はtokyou6to4のサイトの記述から変更した部分です。変更しないとブラウザでhttp://www.kame.netにアクセスしても亀さんが踊ってくれませんでした。本当はもうちょっとちゃんと設定値を考えないといけないのでしょうが、とりあえずここまでということで。

    ・・・というわけで、あっさり完了です。

    元に戻すときは、

    • 「ipv6 reset」でIPv6の設定を初期化
    • 「ipv6 uninstall」でIPv6をアンインストール
    • 「netsh interface ipv6 reset」でポリシーテーブルをデフォルトに戻す

    ということのようです。

    ・・・・と思ったら、一度アンインストールしたら同じ手順では動かなくなってしまいました。tracert6などは正常に動作していますが、なぜかブラウザではアクセスできません。

    で、いろいろ1時間くらい悩んだ結果、一瞬だけKerperskyの動作を禁止し、その間にアクセスすると、その後は大丈夫(再起動しても大丈夫でした)、ということがわかりました。一体何なんでしょうね・・・。


  • UbuntuでIPv6対応する手順のまとめ

    投稿日 2011年 2月 18日 コメントはありません

    先の記事では作業過程で書いていたので、結局何が必要なのかわかりにくくなってしまいました。他のPCでもIPv6対応するときのために、NAT環境下のUbuntu10.04LTSでIPv6対応する手順をまとめておきます。(自分では確認していませんので、そのつもりで見てください)

    1. Gufwをインストールして起動する(これはIPv6のためではありません)
      クライアントPCなら設定はそのまま(受信はすべて拒否)でOK
    2. ufwの設定として、/etc/ufw/ufw.conf に
      IPV6=yes
      と書き足して、IPv6を使うことを知らせる。
    3. Synapticパッケージマネージャでmiredoを選択してインストールする
    4. Teredoサーバを選択するなら、/etc/midero.conf を編集する
    5. ネットワークマネージャの接続情報で、ターゲットとなる設定のIPv6設定の「メソッド」を「無視」に設定する
    6. ホスト名の解決のため、/etc/gai.confの
      #label 2001:0::/32 7
      という行を、
      label 2001:0::/32 1
      に修正する
    7. 再起動する
    8. ブラウザで http://www.kame.net に接続し、踊る亀が見えればOK

    と、意外にあっさりしたものになりました。


  • UbuntuにIPv6パッケージ(miredo)を入れる

    投稿日 2011年 2月 17日 コメントはありません

    FireWallも入ったので、いよいよIPv6にトライしていきます。

    1. まず、Ubuntu用のTeredoパッケージ(という位置づけでいいのかな?)のmiredoを入れます。例によってSynapticから検索してインストールするだけです。
    2. pingを打ってみます。
      ~$ ping6 www.kame.net
      PING www.kame.net(2001:200:xxx:xxxx:xxx:xxxx:xxxx:xxxx) 56 data bytes
      ping: sendmsg: Operation not permitted
      ping: sendmsg: Operation not permitted

      ということで、名前解決はできているようなのですが、ping自体がエラーになります。うーん。

    3. その他情報取得
      ・インタフェース情報: $ ifconfig teredo
      ・設定情報: /etc/miredo.conf にある
      (デフォルトでは、teredo-debian.remlab.net がteredo serverのようである)
      ・Routing Tableの表示:
      $ ip -6 route show
      $ route -A inet6
      $ netstat -rn -net6
    4. Gufwでファイヤウォールの動作を停止すると、ping6が通ることがわかりました。
      そこから、ufwの設定として、/etc/ufw/ufw.conf に
      IPV6=yes
      と書き足してやることが必要なことがわかりました。
    5. 次に、ネットワークマネージャのアイコン(通常だと右上のネットワーク状態を示すアイコン)を右クリックして、「接続情報」を選択します。
    6. ターゲットの無線接続(もちろん有線でもいいはず)を選択し、「編集」を押す。
    7. その中の「IPv6設定」タブを選び、「メソッド」を「自動」に変更して、「適用」を押す。
      →ここは再起動するとこれではダメで、「無視」にしておかないと再起動時に一切通信できなくなってしまう。「無視」のままでもTeredoにはつながっている。
    8. なぜか一旦Gufwの動作中を外してやると、その後はping6が通るようになった。(戻しても大丈夫だった)
    9. ダイレクトにURLに「http://[2001:200:dff:fff1:216:3eff:feb1:44d7]/」といれてやると、www.kame.netの踊る亀(これはIPv6で接続すると踊る亀になり、IPv4で接続すると踊らない亀になる)を見ることができた!
    10. ホスト名の解決について、

      /etc/gai.conf の
      #label ::1/128       0
      #label ::/0          1
      #label 2002::/16     2
      #label ::/96         3
      #label ::ffff:0:0/96 4
      #label fec0::/10     5
      #label fc00::/7      6
      label 2001:0::/32   1

      の最後の行が元々7になっているのを1にしてコメントアウトするとホスト名が引ける、という情報があったが、(試している時点では)うまくいっていない。

    再起動してみたところ、 IPv4のアドレスすら取得できず、一切通信ができなくなってしまった。syslogを見ると、IPv6のアドレス取得に失敗してすべてを放棄してしまっているようなので、ネットワーク設定で「『IPv6設定』タブを選び、『メソッド』を『自動』に変更」したところを、『無視』に変更したところ、アドレス取得がうまくいくようになった。そして、そのまま http://www.kame.net にアクセスしたところ、踊る亀が見えるようになった!(嬉しい!)

    参考にしたページ
    UbuntuでIPv6(とある技術屋の戯言さん)・・・設定情報を参考にさせていただきました
    ・その他ググったら出てきたページ(あっちこっち見てたのでわからなくなりました。ごめんなさい。)


  • Ubuntuで802.11nを動かす(4)Gufwの導入

    投稿日 2011年 2月 16日 コメントはありません

    よくみるとわけのわからないタイトルだった前回ですが、気を取り直して(?)Ubuntuに戻ります。

    IPv4プライベートアドレスの元でも、IPv6の導入によって(たぶん)外界に晒されることになるのでFireWallくらいは設定しておくことにします。

    調べると、UbuntuではGufwというのが定番なようなので、これを導入します。導入にあたっては、「Gufw Ubuntuのファイアウォールで外部からのアクセスを拒否する」のページを参考にさせていただきました。

    1. 例によって、Synapticパッケージマネージャで検索すると、一発で見つかりますので、インストールします。
    2. インストールが完了すると、「システム」→「システム管理」→「ファイアウォールの設定」で設定を確認できるようになります。初回起動時は、
      となっていて、動作していません。
    3. そこで、「□ 動作中」にチェックを入れると、となって動作を開始します。デスクトップ環境なので、とりあえず設定はこれだけです。

  • Ubuntuで802.11nを動かす(3)WindowsXPで動かしてみる

    投稿日 2011年 2月 15日 コメントはありません

    USBメモリ上のUbuntuで動くようになったところで、ついでにHDDにインストールされているWindowsXPでも動くようにすることにしました。

    #USBメモリで動かすからといって、遅い以外は作業は何も変わらないんですけどね。

    添付されている説明によると、CD-ROMのインストーラに沿って作業するだけ・・・のはずです。

    アダプタを接続する前にCD-ROMのインストーラを起動して、指示にしたがえ、とのことなので、そのようにしました。

    ・・・・・・

    しかし、最後に「ドライバをインストールできませんでした」と表示してそれっきり・・・。

    ・・・・・・

    結局、PLANEXのホームページから最新版のドライバをダウンロードしてインストールしたら動くようになりました。添付CDROMの意味無いじゃん・・・。


  • Ubuntuで802.11nを動かす(2)無事に動いた!

    投稿日 2011年 2月 14日 コメントはありません

    ≪前回のUbuntuでPlanexのGW-US300MinSを動かす件の続きです≫

    で、気を取り直して、ドライバのコンパイルにかかります。

    Ralink社のホームページからソフトウェアのダウンロードページに移動します。

    名前とメールアドレスを記入すると、ダウンロードがスタートします。(が、異常に時間がかかります。600kB程度で10分くらいかかりました。台湾との線が細いんですかね??)

    今回ダウンロードしたのは、「2010_0709_RT2870_Linux_STA_v2.4.0.1.tar.bz2」というファイルで、これを適当なディレクトリに展開しました。

    さっそくreadmeを見ると、”MODE = STA”にセットしろ、と書いてありますが、先頭の行は”RT28xx_MODE = STA”だったりします。サーチすると、RT28xx_MODEを使っているところがあるので、そっちが正しいのでしょう(つまり、多分readme.txtがいい加減)。

    次に、os/linux/config.mk を修正します。

    HAS_WPA_SUPPLICANT=y
    HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

    これらの行はもともと”n”なので、”y”に変更します。

    次に、common/rtusb_dev_id.cにデバイスIDを追加します。

    {USB_DEVICE(0x2019,0xAB24)}, /* Planex GW-US300MiniS */

    という感じです。

    $ sudo make
    (中略)
    $ sudo make install
    make -C /home/usb/rt2870/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux -f Makefile.6 install
    make[1]: ディレクトリ /home/usb/rt2870/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux' に入ります
    rm -rf /etc/Wireless/RT2870STA
    mkdir /etc/Wireless/RT2870STA
    cp /home/usb/rt2870/2010_0709_RT2870_Linux_STA_v2.4.0.1/RT2870STA.dat /etc/Wireless/RT2870STA/.
    install -d /lib/modules/2.6.32-28-generic/kernel/drivers/net/wireless/
    install -m 644 -c rt2870sta.ko /lib/modules/2.6.32-28-generic/kernel/drivers/net/wireless/
    /sbin/depmod -a 2.6.32-28-generic
    make[1]: ディレクトリ /home/usb/rt2870/2010_0709_RT2870_Linux_STA_v2.4.0.1/os/linux’ から出ます
    $

    完了後、

    $ cd os/linux
    $ sudo insmod rt2870sta.ko

    した後、 『新しい無線ネットワークを作成』で、WPA-PSKの設定をしてやると認識でき、IPアドレスの取得まではできました。

    $ modinfo
    filename:       /lib/modules/2.6.32-28-generic/kernel/drivers/staging/rt2870/rt2870sta.ko

    ということで、読み込まれているのは、stagingの下のファイルのようです。で、rt2870sta.koを検索してタイムスタンプを見ると、

    $ ls -la /lib/modules/2.6.32-28-generic/kernel/drivers/net/wireless/rt2870sta.ko
    -rw-r–r– 1 root root 688693 2011-02-13 03:04 /lib/modules/2.6.32-28-generic/kernel/drivers/net/wireless/rt2870sta.ko
    $ ls -la /lib/modules/2.6.32-28-generic/kernel/drivers/staging/rt2870/rt2870sta.ko
    -rw-r–r– 1 root root 576072 2011-01-11 10:19 /lib/modules/2.6.32-28-generic/kernel/drivers/staging/rt2870/rt2870sta.ko

    となっており、インストールしたものではないようです。ですので、

    $ sudo make uninstall

    として、一旦アンインストールした後、makefileを

    ifeq ($(PLATFORM),PC)
    # Linux 2.6
    LINUX_SRC = /lib/modules/$(shell uname -r)/build
    # Linux 2.4 Change to your local setting
    #LINUX_SRC = /usr/src/linux-2.4
    ##LINUX_SRC_MODULE = /lib/modules/$(shell uname -r)/kernel/drivers/net/wireless/
    LINUX_SRC_MODULE = /lib/modules/$(shell uname -r)/kernel/drivers/staging/rt2870/
    CROSS_COMPILE =
    endif

    と修正しました。(青字がコメントアウトした元の行、赤字が修正後の行です)
    改めて、

    $ sudo make install

    としてインストールすると、

    $ ls -la /lib/modules/2.6.32-28-generic/kernel/drivers/staging/rt2870/rt2870sta.ko
    -rw-r–r– 1 root root 688693 2011-02-13 03:32 /lib/modules/2.6.32-28-generic/kernel/drivers/staging/rt2870/rt2870sta.ko
    $

    となり、タイムスタンプが反映され、以下のようにモジュールとして認識されるようになりました。

    $ modinfo rt2870sta | grep 2019
    alias:          usb:v2019pAB24d*dc*dsc*dp*ic*isc*ip*
    alias:          usb:v2019pED06d*dc*dsc*dp*ic*isc*ip*
    $

    しかし、ifconfigなどで見るとIPアドレスが取れるようになったのですが、外部への接続はまだうまくいきません。なぜか、クラスAのプライベートアドレスを取得しています。(本来はプロバイダから配布されるクラスBのプライベートアドレスのはずなのですが・・・)

    が、ネットワークアイコンから再度アクセスポイントを選択したら、なぜか快調につながるようになりました。・・・が、再起動するとNG。

    読み込まれているドライバをみると、やはりrt2800usbが読み込まれているようです。ですので、/etc/modprobe.d/blacklist.confに、

    # Planex USB Wifi
    blacklist rt2800usb
    blacklist rt2x00usb
    blacklist rt2x00lib

    と書き足して再起動しましたが、やはりクラスAのプライベートアドレスを取りに行ってしまいます。

    ここで設定をよくみると、adhocモードになっていましたので、一旦無線の設定を消して改めて利用可能なアクセスポイント(AP)を選択して設定し直したら再起動しても安定して動作するようになりました。

    ・・・というわけで、Ubuntu10.04でPlanexの1000円USB無線LANアダプタ GW-US300MinSが使えるようになりました。802.11nがLinuxで1000円で使えるなんていい時代になったものです。