Hatena::Groupmonsterhunter

yukogetsは3度死ぬ このページをアンテナに追加 RSSフィード

2008-06-10

[][] VMware Fusion でトンネル・・・(期待しないで編) 00:49  VMware Fusion でトンネル・・・(期待しないで編) - yukogetsは3度死ぬ を含むブックマーク はてなブックマーク -  VMware Fusion でトンネル・・・(期待しないで編) - yukogetsは3度死ぬ  VMware Fusion でトンネル・・・(期待しないで編) - yukogetsは3度死ぬ のブックマークコメント

一応やってみたんですが。

仮想ネットワークの問題を踏みたくなかったので、VMware 内の Windows XP から直接イーモバイルでダイヤルアップするという逃げ道に走ってみた。以前からこの接続自体は問題なく出来てるのでさっくり繋げてクライアント起動。サーバに正常にログインできた。

問題は WiFi の PSP との接続。これがとても不安定で、ちゃんと繋がるときと繋がらないときがある。繋がってるときは特にラグもなく正常にクエを終えられたりもするけど、一度オンライン集会所を出てまた戻ろうとしたらもう入れなかったり・・・。

実際に使うにはまだ問題があるようです。

2008-06-05

[] Mac でネイティブにトンネルしたい! 11:25  Mac でネイティブにトンネルしたい! - yukogetsは3度死ぬ を含むブックマーク はてなブックマーク -  Mac でネイティブにトンネルしたい! - yukogetsは3度死ぬ  Mac でネイティブにトンネルしたい! - yukogetsは3度死ぬ のブックマークコメント

という話になって、ちょっと調べてみました。

あ、ちなみにクライアントの方のお話です。tunnel-server は前に書いたとおり Wine 上で動作可能です。

WinPcap と libpcapの互換性

tunnel-client の動作には WinPcap が必要ですが、Mac には当然 WinPcap は導入できません。ただし、MacUNIX ですから libpcap なら使えます。

というわけで libpcap が WinPcap のかわりになればいいなーと思っていたら、WinPcap ユーザーズマニュアルによると

wpcap.dll はよく知られたUNIXのパケットキャプチャライブラリであるlibpcap と互換性があります。この互換性は、全てのWin32OSファミリー上と主要なUNIXフレーバー上で動作するポータブルネットワークツールを作成することを可能にします。

とのこと。マジで?!

ためしに WinPcap のサンプルソースである pktdump_exMac でコンパイル。

% cc -lpcap -o pktdump_ex pktdump_ex.c
pktdump_ex.c: In function 'main':
pktdump_ex.c:119: warning: passing argument 3 of 'pcap_next_ex' from incompatible pointer type

なんか warning 出たけどとりあえず無視。コンパイル通った!

実行してみます。

% sudo ./pktdump_ex
Password:
pktdump_ex: prints the packets of the network using WinPcap.
         Usage: pktdump_ex [-n adapter] | [-f file_name]

1. en0 (No description available)
2. fw0 (No description available)
3. en1 (No description available)
4. lo0 (No description available)
Enter the interface number (1-4):3
1212555407:302934 (106)
00 80 bd 14 f8 e8 00 11 24 95 fb b9 08 00 45 10
00 5c d2 e8 40 00 40 06 3c 32 c0 a8 ...

1212555407:323127 (458)
00 80 bd 14 f8 e8 00 11 24 95 fb b9 08 00 45 10
01 bc d2 e9 40 00 40 06 3a d1 c0 a8 ...

1212555407:343680 (1130)
00 80 bd 14 f8 e8 00 11 24 95 fb b9 08 00 45 10
04 5c d2 ea 40 00 40 06 38 30 c0 a8 ...

1212555407:387156 (1130)
...
^C
(実際はもっとダンプのデータが続くのですがパスワードとか含まれてそうなので削りました!)

ものの数秒で数万行のデータになります。

というわけで、動いてしまいました。これいけるんじゃね?


しかし、Winsock2 とかにも依存してる

というわけで、wktkしながら公開されてる MHPTunnel 0.5 のソースを見てみると、

#include <winsock2.h>
#include <windows>

などという記述が・・・。

こればっかりはちゃんと sys/socket.h とかを使うように書き換えないとダメかな・・・。

もしくは、Wine に含まれる winsock2.h とかを使ってうまくいくなら若干楽できるかも。と思って無理矢理コンパイルを試みる。

なお、MacBook には Wine をまだ入れてないので FreeBSD/i386 6.2-RELEASE でやってみました。

% cc -lpcap -I/usr/local/include/wine/windows tunnel-client.cpp
tunnel-client.cpp:15:19: conio.h: No such file or directory
tunnel-client.cpp: In function `void DoCommand(SOCKET_EX*, DATA_HEADER*, char*)':
tunnel-client.cpp:84: error: invalid conversion from `char*' to `const u_char*'
tunnel-client.cpp:84: error:   initializing argument 2 of `int pcap_sendpacket(pcap_t*, const u_char*, int)'                                                                                                   
tunnel-client.cpp: In function `DWORD DoMain(void*)':
tunnel-client.cpp:289: error: `_T' was not declared in this scope
tunnel-client.cpp:337: warning: converting of negative value `-0x00000000000000001' to `DWORD'
tunnel-client.cpp:350: warning: converting of negative value `-0x00000000000000001' to `DWORD'
tunnel-client.cpp:369: warning: converting of negative value `-0x00000000000000001' to `DWORD'

こんな感じでした。

僕はプログラマじゃないのでこれ以上はよくわかりません><


お客様の中に、一晩でやってくれるジェバンニはいらっしゃいませんか?

2008-06-03

[][] たまにはゲームの進捗を 00:29  たまにはゲームの進捗を - yukogetsは3度死ぬ を含むブックマーク はてなブックマーク -  たまにはゲームの進捗を - yukogetsは3度死ぬ  たまにはゲームの進捗を - yukogetsは3度死ぬ のブックマークコメント

昨日、#mhmhmh の方々とやってて HR6 になりました。

デッドリィタバルジンも作れました!

でも防具の強化が停滞中。鎧玉の類が全然足りない。

お金も足りない。

腕前も成長しませんね・・・モンスターの動きがなかなか見極められないし覚えられないし。

ひょいひょい交わしてざくざく切ってる猛者たちに超あこがれます><

そんな感じです。

2008-06-02

[][] 別々のサーバに繋いでる人同士でハンティング 01:03  別々のサーバに繋いでる人同士でハンティング - yukogetsは3度死ぬ を含むブックマーク はてなブックマーク -  別々のサーバに繋いでる人同士でハンティング - yukogetsは3度死ぬ  別々のサーバに繋いでる人同士でハンティング - yukogetsは3度死ぬ のブックマークコメント

mhp.okoge.org に tunnel-client (0.6) で接続した状態で、なんとなく swirhen.ath.cx に接続する tunnel-client (こちらも 0.6) をもう一個起動してみたら、両方接続されました。

おおっ、と思ってそのまま集会所1に入ってみたら、両方のクライアントで集会所1に入りましたとのメッセージが。それぞれのサーバに他に繋いでる人が一人ずついたのですが、なんと手元の PSP では両方の人が同じ集会所に(つまり3人)居るように見えます!

それぞれの人に聞いてみてもちゃんと3人見えているとのこと。僕以外の、つまり同じサーバに接続していない2人の間でギルドカードの交換も出来ました。

こうなったらもちろん、「このまま狩りにも行けちゃったりして!」と言うことで行ってみました。

結果、全く問題なし!ラグとかも気にならないレベルだった模様です。

すごい、すごいよ MHPTunnel!!!


※問題点が一つだけ。tunnel-client のチャット機能は、別々のサーバ間では無理でした。

2008-05-28

[][] ポート番号を入れ替えた 23:44  ポート番号を入れ替えた - yukogetsは3度死ぬ を含むブックマーク はてなブックマーク -  ポート番号を入れ替えた - yukogetsは3度死ぬ  ポート番号を入れ替えた - yukogetsは3度死ぬ のブックマークコメント

昨日の日記で

Port=30001 (0.6)
Port=30000 (0.7)

で稼働させている旨を書きましたが、id:swirhen の鯖と合わせるのと、やっぱりバージョンとポートの数字の大小がちぐはぐなのは気持ちが悪いので入れ替えました。

今は、

Port=30000 (0.6)
Port=30001 (0.7)

になっています。

そういえば、設定を変更したりするために(wine で動いてる)tunnel-server.exe を ^C で落としてもいちど立ち上げようとすると、ポート使用中で起動しないことがあります。netstat で見ると FIN_WAIT_1 のままポートが解放されてない様子。これ無理矢理解放させるにはどうしたらいいのかなぁ。