Buffalo製のザコいルータを強くするまとめ 
Saturday, January 12, 2013, 12:35 AM - OS / Misc
Posted by Administrator
Buffalo製のザコいルータを強くするまとめ
前提としてDD-WRT準拠

まず手持ちの製品の一覧とその区分
この区分に関しては一般的な定義ではなく、あくまでこのぶろぐの中のお話でしかない
BLR3-TX4Broadcom0世代
WBR2-G54Broadcom1世代
WLR-G54Broadcom1世代
WHR-G54SBroadcom1世代
WZR-G54Broadcom1世代
WZR-G144NHBroadcom1世代
WHR-G300NRalink2世代
WHR-G301NAtheros2世代
WZR-HP-G300NHAtheros2.5世代
WZR-HP-AGL300NHAtheros2.5世代?
WZR-HP-AG300HAtheros2.5世代


世代による差違

0世代
0世代は基本的にDD-WRTなどの非正規Firmwareへの載せ替えができない
もしくはできるとしても難度が高く、H/Wそのものに関する知識を要する
少なくとも自分の持ち合わせている環境では不可能だった (参考:BLR3-TX4をシリアルポート無しでいけるところまでやる)
W*Rで始まる筐体はまずこの世代に該当しないが、例外としてWHR-G54のみ0世代と推測される

1世代
1世代は全てBroadcomであるためDD-WRTの機能を全て使用でき、TFTPからDD-WRTへの載せ替えが非常に簡単に行える
このTFTPによる載せ替えは何のチェックも受けず、また自らarpでmacアドレスを通知してくるため、DD-WRTへ載せ替える前段階が存在しない
但しDD-WRTのリビジョンによって完全に動作する/しないと不確定要素が存在している (DD-WRTのなんか)
TFTPのアドレスは192.168.11.1だと記載しているが、先日試したWBR2-G54は192.168.1.1が正しかった

前述する不具合が存在するものの全体的に見ればこの世代は非常に有用だが、WZR-G144NHを除けば11nで無線通信できる筐体が存在しない

2世代/2.5世代
2世代の筐体は黒色で、Broadcomではなくなり、初期はRalinkでそれ以外は全てAtherosを積んでいる
TFTPによる載せ替えはいくつかのチェック機構が存在するため、前準備が必要になった (OpenWRTでUT-VPNを動かす (2))
初期化状態ならばhttp://bufpy:otdpopy@192.168.11.1/cgi-b ... debug.htmlにアクセスしデバッグページから
ubootenv set accept_open_rt_fmt 1
ubootenv set tftp_wait 10 #必須ではない
ubootenv set region US

を発行しておく必要がある
但しregionは変更すると当然ながら日本の正規Firmwareが"Error on server : Unsupport REGION"で弾かれるようになる
これを避けるには素直にwebから載せ替えるしかないが、一部うまくいかなかった事がある
また自らmacアドレスを通知することがなくなったので、自らarp -sする必要がある (OpenWRTでUT-VPNを動かす (2))
この時のmacアドレスは印字されているSSIDと対応しているが、2.5世代は02:AA:BB:CC:DD:**が正しい (?)
例えばWZR-HP-G300NHは末尾1A、WZR-HP-AG300Hは末尾20となっている
この値はデバッグページで
ubootenv list
で確認できる

チップによる差違

DD-WRTの機能を全て生かすならばBroadcomである必要がある
Ralink/AtherosではPort based VLANが機能しない、各ポートを別のセグメントとして運用する必要があるなら、この時点でBroadcom以外の選択肢が消える
加えてRalinkでは無線のClient Bridge、いわゆる子機として運用ができない(と思う、検証が甘いかもしれない)
Atherosでは無線の電波強度やOCなどのAdvanced Settingが使用できなくなる
しかしAtherosはBroadcomでは不可能な5つ目のVAPを運用することができる(最大値不明、未検証)
これはRalinkでも可能かもしれない
add comment ( 1082 views )   |  permalink
Guildwars2 Warrior Calculator 
Saturday, December 22, 2012, 06:01 PM - Misc
Posted by Administrator
Guildwars2 Warrior Calculator Beta

Read More...
add comment ( 707 views )   |  permalink
OpenWRTでUT-VPNが動く 
Tuesday, August 14, 2012, 08:08 AM - OS / Misc
Posted by Administrator
OpenWRTでUT-VPNを動かす……の一環でSDKでUT-VPNの.ipkが作成できるようなものを書いた

そのうち修正するつもりでいるけど、現時点でmakeするには……
ncurses
openssl
libreadline
libiconv-full
が、先にmakeされている必要があって、opensslは
$ sed -i 's/no-sha0//' package/openssl/Makefile
で、修正されている必要がある (参考:OpenWRTでUT-VPNを動かす)

環境が揃ったら
$ git clone git://github.com/el1n/OpenWRT-package-utvpn.git package/utvpn
$ make package/utvpn/compile V=99

事前にmake menuconfigでNetwork/VPN/utvpnにチェックが恐らく必要

検索でここに辿り着く人には大して説明も不要(というか俺が不要、OpenWRTでUT-VPNを動かす (2)OpenWRTでUT-VPNを動かすに書いてあるから)だろうからこの先は省く

ちなみにリポジトリの1で始まるパッチはOpenWRT以外でも使用できることを確認済み
OpenSSL 1.0.xのヘッダしかなくてコンパイルできないとかはこれで通るようになる
linuxなら120*は当てなくていい、当ててもいい

WZR-HP-G300NHの一時的なばいなり
utvpn_1.01-7101_ar71xx.ipk
libopenssl_0.9.8r-1_ar71xx.ipk
ar71xxのbackfire 10.03.1ならどれでも使える気がする
add comment ( 721 views )   |  permalink
OpenWRTでUT-VPNを動かす (2) 
Monday, August 13, 2012, 07:49 AM - OS / Misc
Posted by Administrator
OpenWRTでUT-VPNを動かす……ためのおもちゃを買ってOpenWRTにする

手持ちは全てスペック不足で動かせない(結局メモリ不足)ようなので@xmmsがWHR-G301Nで試すことになったが、結局別問題でうまくいかず、そのまま会話の流れで買うことになった
ちなみにWHR-G301Nは余っているらしいので、近々検体として送られてくるとか
届き次第試してみようと思う

ここによるとWZR-HP-AG300Hが最強だが、中古でも高くて真面目な値段(5000円くらい)なので「これはおもちゃの値段じゃねーよなー」とか思って他の手頃なのを探しているとWZR-HP-G300NHが2180円で売っていたのでこれにすることにした
4段階で表すと3段階目のスペックなので強い部類だ
3000円で送料無料だそうなので、ついでに500円のWLA-G54/Pと300円の謎のusb無線インターフェースと25円の謎のハブも買った

話は違うが、届いてみると値札が
WZR-HP-G300NH 2480円
WLA-G54/P 1280円
謎のusb無線インターフェース 380円
謎のハブ 480円
で、どれも一致しないという凄まじく同期の取れて無さにびっくりした
謎のハブの値上がり具合ワロタ

しかし買ってみてからだがこんな話があるようで先が思いやられる

結論から言えばDD-WRTは恐らく問題ない、公式のv24 preSP2とBrainSlayerのr17990しか試してないが
buffalo_to_ddwrt_webflash-MULTI.binがBUFFALO純正ファームからweb経由で書くやつ
wzr-hp-g300nh-dd-wrt-webupgrade-MULTI.binが一度DD-WRTにした状態から書くやつ

しかしこれ、DD-WRTにしろOpenWRTにしろ焦って書き換えてはいけない
WZR-HP-G300NHはそのままだとTFTPが使えないので、仮に問題が発生するとシリアルが必須になる

TFTPを有効にするには純正ファームでhttp://bufpy:otdpopy@192.168.11.1/cgi-bin/cgi?req=frm&frm=py-db/55debug.htmlから
ubootenv set accept_open_rt_fmt 1
と発行してブートローダの設定を書き換える必要がある
ちなみに
ubootenv set tftp_wait 10
でTFTPの受付時間を10秒にできる、シビアなTFTPじゃなくなるらしい

あとotdpopyはパスワードを設定しているとそれを後ろに付け足す必要があるらしい
初期化状態なら空欄なのでotdpopyだけ

もし先にDD-WRTか何かで書き換えてしまってこれができない場合、ここからwzrg300nh_original.binを手に入れてきて普通にDD-WRTのweb経由で突っ込んだ後に、純正ファームwzrhpg300nh-179を同じくweb経由で突っ込んだ後に初期化してやればいい
wzrhpg300nh-179を入れる必要はないかもしれないな、まあ完全純正に戻るということで

さて、OpenWRTだがWZR-HP-G300NHは2種類存在しているということがまずわかっていて、このWZR-HP-G300NHはどうもA0 A3と印字されておりAG71ナントカをつんでいる
基盤の印字を見れば早いが、どうもこのA0 A3の印字で判断できるようで、検索してみるとA0 A3は問題ないらしい
Bで始まるのもあるが要するにこれがつまるところ、Aで始まれば問題ないのか?
買ってみないと何もわからん……Bで始まるやつ誰かください

現段階ではAかBかで決まると言い切れないので、まあ純正ファームでもtelnetdを有効にできるのでdmesgでも見て判断しましょう

OpenWRT backfire 10.03.1で問題ないみたいなので普通においてあるバイナリopenwrt-ar71xx-wzr-hp-g300nh-squashfs-tftp.binをTFTPから突っ込んでみる
問題なく動く
ところでWindows 7のTFTP.EXEは何かがおかしい、XPのを持ってくるべきか

あとはUT-VPNをコンパイルする
OpenWRTでUT-VPNを動かすのそのまま、make menuconfigでTarget SystemをAtheros AR71xx/AR7240/AR913xにするだけ

何の問題もなく動く(起動しただけ)
しいて言えば自前で用意しなくてはならないlibopenssl_0.9.8r-1_ar71xx.ipkがmd5sum mismatchでコケる、これはパッケージのリストを取得する前なら通る
つまるところ/etc/opkg.confのそれを消してopkg -fで読ませれば通るということ

ここまで書いて忘れてたけど、この機器のシビアなTFTPは直結(必須)してIPを固定して通電させたら
>arp -s 192.168.11.1 **-**-**-**-**-** 192.168.11.2
を連打
直結している以上機器のインターフェースがupしてない場合当然もう片方もupしない(少なくともWindowsは、細かいことは気にしないで)ので"ARP: 無効な IP アドレス: 192.168.11.2。"が出る
これが出なくなった瞬間にTFTPで投げたら通る

おわり
add comment ( 2520 views )   |  permalink
OpenWRTでUT-VPNを動かす 
Monday, August 6, 2012, 01:37 PM - OS / Misc
Posted by Administrator
OpenWRTでUT-VPNを動かす……ための開発環境を作る

warning: ld-uClibc.so.0, needed by /.../usr/lib/libdl.so, not found (try using -rpath or -rpath-link)
とか
cannot find -lssl
collect2: ld returned 1 exit status
とか
cannot find -lgcc_s
collect2: ld returned 1 exit status
とか
Internat.c:(.text+0x205b): undefined reference to `iconv_close'
tmp/as/Ham.a(Internat.o): In function `IconvStrToWideInternal':
Internat.c:(.text+0x208e): undefined reference to `iconv_open'
Internat.c:(.text+0x20af): undefined reference to `iconv_open'
tmp/as/Ham.a(Internat.o): In function `IconvWideToStrInternal':
Internat.c:(.text+0x20de): undefined reference to `iconv_open'
Internat.c:(.text+0x20ff): undefined reference to `iconv_open'
tmp/as/Ham.a(Internat.o): In function `UnixUniToStr':
Internat.c:(.text+0x2186): undefined reference to `iconv'
tmp/as/Ham.a(Internat.o): In function `UnixStrToUni':
Internat.c:(.text+0x2477): undefined reference to `iconv'
collect2: ld returned 1 exit status
とか
undefined reference to `SHA'
とか、その他諸々でコケるのはなにか間違っている

こんなことがあるのが根本的な問題だが、本当にそうだからワロエナイ
結論から言えば配布されているバイナリを使用してはいけない
少なくともx86ならSDKを落としてきた上でToolchainを上書きすることで通るが、MIPSでは通らない
腐ってる

ここから走り書き

$ mkdir ~/OpenWRT
$ cd ~/OpenWRT

# ソースコードをもってくる
$ svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03.1
$ cd backfire_10.03.1/
$ make menuconfig
# 基本Target System(BUFFALOは殆ど"Broadcom BCM947xx/953xx [2.4]"だろう)をあわせて"Build the OpenWrt SDK"をチェック
$ make V=99

# libiconv-full以外とってくる必要がないかもしらん
$ svn export svn://svn.openwrt.org/openwrt/tags/backfire_10.03.1/package/ncurses package/ncurses
$ svn export svn://svn.openwrt.org/openwrt/tags/backfire_10.03.1/package/openssl package/openssl
$ sed -i 's/no-sha0//' package/openssl/Makefile
$ svn export svn://svn.openwrt.org/openwrt/tags/backfire_10.03.1/package/libreadline package/libreadline
$ svn export svn://svn.openwrt.org/openwrt/packages/libs/libiconv-full@29638 package/libiconv-full

$ make package/ncurses/compile V=99
$ make package/openssl/compile V=99
$ make package/libreadline/compile V=99
$ make package/libiconv-full/compile V=99

$ cd ..
$ wget -q -O - 'http://utvpn.tsukuba.ac.jp/files/utvpn/v1.01-7101-public-2010.06.27/Source%20Code%20(Win32%20and%20Unix)/utvpn-src-unix-v101-7101-public-2010.06.27.tar.gz'|tar zxvf -
$ cd utvpn-*
$ echo -e '1\n1\n'|./configure
# それっぽい環境変数
$ export CCFLAGS="-I`echo ~/OpenWRT/backfire_10.03.1/staging_dir/target-*/include`"
$ export CCFLAGS="-I`echo ~/OpenWRT/backfire_10.03.1/staging_dir/target-*/usr/include` $CCFLAGS"
$ export CCFLAGS="-I`echo ~/OpenWRT/backfire_10.03.1/staging_dir/target-*/usr/lib/libiconv-full/include` $CCFLAGS"
$ export LDFLAGS="-L`echo ~/OpenWRT/backfire_10.03.1/staging_dir/target-*/lib`"
$ export LDFLAGS="-L`echo ~/OpenWRT/backfire_10.03.1/staging_dir/target-*/usr/lib` $LDFLAGS"
$ export LDFLAGS="-L`echo ~/OpenWRT/backfire_10.03.1/staging_dir/target-*/usr/lib/libiconv-full/lib` $LDFLAGS"
$ export LDFLAGS="-liconv $LDFLAGS"
# CCFLAGSとLDFLAGSを読むように、正直これくらい書いてあってほしい
$ sed -i 's/OPTIONS_COMPILE_[[:alnum:]]*=/&$(CCFLAGS) /' Makefile
$ sed -i 's/OPTIONS_LINK_[[:alnum:]]*=/&$(LDFLAGS) /' Makefile


後で調べてみるとここの中の人がパッチをおいてくれているのでこいつを素直に使う
$ svn diff http://lab.mitty.jp/svn/lab/trunk/Dev/u ... 01-public/ -r152:153|patch -p0
具体的にはsrc/Mayaqua/Mayaqua.h:223以降の自前定義が悪さするので"#include <iconv.h>"を入れて自前定義部分を削除すれば良い
手抜きするならifdefをifndefにするとかでもいい

$ make CC=/home/a/OpenWRT/backfire_10.03.1/staging_dir/toolchain-*/usr/bin/*-openwrt-linux-gcc LD=/home/a/OpenWRT/backfire_10.03.1/staging_dir/toolchain-*/usr/bin/*-openwrt-linux-ld
で、完成

ところで上の人のwikiの方法だと依存(OpenWRTに含まれているlibssl.soだかがSHAがないよっていう)で大丈夫なのかなあ
まあ自分で入れ替えているんだろうけど

とりあえずのばいなり
同梱されているlibopenssl_0.9.8r-1_brcm-2.4.ipkを入れないと恐らくなんかコケる
ちなみにlibopenssl_0.9.8r-1_brcm-2.4.ipkはmenuconfigでLibraries/SSL/libopensslにチェックをいれればできる

必要なパッケージ
libiconv-full_1.11.1-1_brcm-2.4.ipk
libncurses_5.7-2_brcm-2.4.ipk
libpthread_0.9.30.1-43.32_brcm-2.4.ipk
libreadline_5.2-2_brcm-2.4.ipk
librt_0.9.30.1-43.32_brcm-2.4.ipk
zlib_1.2.3-5_brcm-2.4.ipk

ちなみにWBR2-G54で動かそうと試みたが、メモリ不足だかなんだかで動かなかった
バイナリは問題ないっぽい
add comment ( 2496 views )   |  permalink

<Back | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Next> Last>>