bonjourフォワーディングまとめ
これも一応転送しておこう。bunruimemoはもうobsoleteになっていて、今はbashomemoというのに変わっているが同じであろう。なんかtcpによるsyncがおかしいんだけどね。
-
-
- -
-
今日はしょうもないことではまった。ipod touchの設定をいろいろやっていて、データ管理アプリのbunruimemoのデータバックアップをとりたくなった。研究室のmac mini上のbunruimemoアプリと同期すればよいわけだが、VPNがないのでsshでなんとかならないかと考えた。結果まだうまくいってないわけだが、以下そのまとめ。
bunruimemoは由緒正しくmac/iphoneアプリなので、当然サービス連携はbonjour(rendezvous)を使う。
bonjourのサービスはmulticast DNSでqueryされるが、コマンドでやるにはdns-sdコマンドを使う。
dns-sd -B _daap._tcp ->ブラウジングで名前が引ける(daapはiTunes共有の場合)
dns-sd -L 名前 _daap._tcp local -> 名前で閲覧できるサービスのアドレス・ポートがわかる
これでサービス名がわかっているときはフォワードすべきアドレスとポートがわかるが、bunruimemoの場合サービス名がまずわからなかった。anyスキャンするコマンドがありそうなものだが、dns-sdコマンドはその機能がないみたい(不思議)。
しかたないので、研究室のmac miniにVNCかけて、mac上のGUIアプリである、Bonjour Browserをとってきて調べてみる。するとbunruimemoのサービス名は、_bunruimemo2._tcpだとわかった。
ここまでくれば、sshで当該ポートをフォワードする(bunnruimemoの同期ポートは同期するごとに毎回変わるので、いちいち調べる必要がある。)。
- g なのはiphoneからフォーワードポートへのアクセスを許可するため。
こうしておいて、ローカルのVaioから、20000/tcpをbonjourで広告する。dns-sdコマンドが使える。こいつはbonjour for windowsをつかえばよい。
dns-sd -R VAIO _bunruimemo2._tcp local 20000 txt=VAIO
これで広告されていることは、ipod touch側のmDNS watchアプリで確認できた。しかし、残念ながらここでbunruimemoアプリを起動して同期かけても、サーバがみつからなかった。touchの中にsshして、そこからフォワードポートにtelnetかけるとVNCでつないでいる研究室Mac mini側のbunruimemoで同期がはじまるので、通信としては成立している。問題はbonjourのサービス広告が何か足りないので、bunruimemoアプリがサービスを見つけられないのだと思う。
dns-sdコマンドの最後の引数はTXTレコードの内容で、ここにはkey=dataの形式でいろいろな情報が入る。AirTunesのサービス(_raop._tcp)なんかをbonjour browserでみてみると興味深い。
しかし、bunruimemoのサービスについてはそういうキーがはっているようにはみえなかった(bonjour browserの表示による)。なにがトリガーになるのかしらん。
ちなみにdns-sdコマンドにはproxyコマンドというのもあって、dns-sd -P でできるが、結局これはIPアドレスとFQDNを既定できるだけで-Rと同じように思われる。こちらでもうまくいかなかった。
同じように広告アプリである、Rendezvous Proxyでもやってみたが結果は同じ。
ここまでくるのにおよそ9時間かけたが、だめであった。ひさびさに粘着的に追求してみた。時間があればこそである。
-
-
- -
-
続きで、以下のように解決した。
-
-
- -
-
眠い、しかし決着。同期用のサービス名がかわってた。
_bunruimemo2_5._tcp
になってた(とほほ)。iphoneアプリのバージョンが2.8で、最近だったので、研究室macのbunruimemoは少なくとも入院前のものだから、これはいやな予感、とおもってbunruimemoの公式サイトいって確認したら、macアプリも5月に2.8になっていて、履歴をみると、同期処理の改良、とかいうのがあった。もしやサービス名変えたか?、とおもってふたたびVNC経由でアプリをインストールしなおして、bonjour browserで確認したら、案の定。。。。サービスプロトコルをかえたのね。もともと_bunruimemo2._tcpと、「2」がついてたから変わる可能性は高いとにらんでたが、やっぱこれだったか。
よしよし、これでいくだろうとおもって先の手順でやってみたら、OKOK.実にあっさりと同期完了。考え方は正しかったのだ。うーむ、もっと早く思い至るんだった。勘がにぶってきてるなあ。
ちなみに、rendezvous proxyはローカルPCに対してしかproxyしてくれないので、今回のようにiphoneからのアクセスには役に立たない。
あー、すっきりした。これでbonjour系のサービスのremote accessはだいたいものにした。いい勉強であった。寝よ寝よ。