mt-daapd の調子が悪いなぁと思ったけど
2007-02-01 20:57:38
| Permalink
| ![]()
| 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
- AirTunes を実装しようと思っていた (2007-02-06)
Trackbacks
Trackback URI: http://blog.c--v.net/trackback/2007/02/01/2
There is no trackback.
There is no comment.