2011年10月20日木曜日

RPCなデーモンにwell knownポートを先取りされて、ほかのデーモンが困ったの巻

サーバを再起動したらIMAPサーバがエラーを出すようになって、何が起きたんだ?!と思って調べてみたら、rpc.dracdというプロセスが、imapsのポート(993番)を先につかんでしまっていて、imapdがimapsのポートを使えなかった、ということだった[E:shock]



実は、imapdはdracを使うようになってて、でも、dracのせいでimapdが動かなかった、というなんだかな~現象。





RPCなサーバって、起動するたびに違うポート番号を使うものだから、まれにこういうことが起きたりする。普通は、どうやって対処してるんだろう?



最近はファイアウォールを通すために、NFS関係のデーモンなどは、起動時にポート番号を指定できるようになってるけど、rpc.dracd(FreeBSDだとports/mail/dracでインストールできるやつ)は、ポート番号を指定できない。



しょうがないから、ソースコードを斜め読みして眺めてみたけど、どこでソケットを開いてるのかわからない・・・ん?

rpcgen -C -I drac.x

とかいうコマンドを実行して、コード生成してた。



*.xというとHuman68kの実行ファイルの拡張子だったなぁと、どうでもいいことを思い出しつつ、rpcgenというプログラム、RPC protocol compilerなるものがあることを初めて知った。



FreeBSDのypservのソースコードが参考になりそうだな、ということがわかったけど、ここらへんで力尽きて、というか、気力がとぎれて、もういいや、で放置。



RPCなんて、いまどきRPCなんて、… dracなんて実は使ってないし。


20111019




0 件のコメント:

コメントを投稿