mt-daapd の調子が悪いなぁと思ったけど

2007-02-01 20:57:38 | | このエントリーを含むはてなブックマーク | Tag: iptables linux インターネット ソフトウェア ネットワーク パソコン プログラミング 自宅サーバ

ここ二日間ずっと mt-daapd のソースを眺めていたけど、一向に不具合の発生しうる場所が見つからなかった。症状として、サーバを立ち上げた直後はちゃんと認識されるが、一定時間経った後では iTunes から認識されないというもの。

大学の研究室でも mt-daapd の iTunes サーバが走っているようなので、設定ファイルによる不具合かと思い config ファイルを見ても原因となりうる場所がわからない。つまり設定ファイルに因る不具合ではない。

続いて Ethereal を用いてパケットを調べてみたが、ちゃんとマルチキャストされているようでサーバにも届いている。つまりパケット関連ではなさそう。

しかし、よくよく考えてみるとマルチキャスト用のソケットを開放しているにも拘わらず、デバッグで select*1 でマルチキャストパケットを受信できていない。というわけでこの辺りを重点的に調べるが、全くのお手上げ状態。

Ethereal ではちゃんとパケットを拾えているけど、本当にパケットを取れるのかUDPでマルチキャストを使う(マルチキャスト受信)のプログラムを使って実験するが失敗。つまりマルチキャストパケットは届いていなかった。

ここで怪しいとなれば iptables によるパケットフィルタリング。要するに個別許可していなかったために、INPUT のポリシーである DROP 処理されていた。

mt-daapd のマルチキャストパケットを許可する

iptables -A INPUT -j ACCEPT -p udp -s 192.168.0.0/24 -d 224.0.0.251

これで無事解決しました。Ethereal は iptables 関係なしに(言い換えるとフィルタリングされる前の)パケットを取っているんですね……。

  • 注1: man 2 select 参照。

Related Entries

Trackbacks

Trackback URI: http://blog.c--v.net/trackback/2007/02/01/2

There is no trackback.

Comments

There is no comment.

Name
URI (Homepage or Email)
Body