
Ubuntu日本語フォーラム

ログインしていません。
esoundを使って、リモートPCで再生した音楽をローカルPCで出力したいと思います。
設定は、[システム]->[設定]->[サウンド]の画面でESDに設定して問題なく音声の出力はできます。
そこで、リモートPCでesdplayを使ってローカル側で音を出力しようとしているのですが、
どうもうまくいきません。
いろいろ調べてみるとローカルPCのTCP16001番ポートが空いていないようです。
もしかすると、デーモンを立ち上げるだけではダメで、ポートを開ける設定をすればうまくいくかもしれません。
そこで、教えていただきたいのですが、ubuntuでは、外部にポートを開ける設定はどのように行うのでしょうか。iptablesも起動しているみたいですので、その設定をする必要はありますでしょうか。
あるいは、そこではなく、inet.dの設定をする必要がありますでしょうか。
OSはDesktop版7.10で、ほぼデフォルトの状態です。
追加のファイアウォールは入れておりません。
すみませんが、よろしくお願いいたします。
オフライン
iptablesは他のLinuxと同じように、iptablesコマンドで設定します。
sudo iptables -A INPUT -p tcp --dport 16001 -j ACCEPT
でどうでしょう(ってesdplayってTCP? ダメなら-p udpも足してみてください)
意図通りに設定できたら、
sudo iptables-save
してください。次回以降の起動時に自動的にiptables-restoreが呼び出され、
有効になります。
オフライン
hitoさんレスありがとうございます。
iptablesの設定を追加したのですが、それでもポートは開いていないようです。
$sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:16001
ACCEPT udp -- anywhere anywhere udp dpt:16001
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
$ nmap localhost
Starting Nmap 4.20 ( http://insecure.org ) at 2007-10-31 11:02 JST
Interesting ports on localhost (127.0.0.1):
Not shown: 1696 closed ports
PORT STATE SERVICE
631/tcp open ipp
Nmap finished: 1 IP address (1 host up) scanned in 0.152 seconds
esoundはTCPを使っているらしく、TCPのポートが開いていればよいみたいです。
もしかしたら、UDPも使っているかもと思ってとりあえず設定は入れてみましたが、
外部から見るとすべて閉じているように見えます。
おそらくですが、iptables以外に何か設定が必要な気がしてきました。
ちょっと調べてみます。
オフライン
esdsplayを起動してないとか無いですよね?
サーバ側で lsof -i | grep 16001 すると何か出てきますか?
オフライン
hitoさんレスありがとうございます。
結果から申しますと、できるようになりました。
原因は、esdの起動方法にありました。
サーバ側で[システム]->[設定]->[サウンド]の指定でesdを指定すればできると思っていたのですが、
そうではなかったようです。
[システム]->[設定]->[サウンド]の指定は自動検出にしておいて、次のコマンドでデーモンを立ち上げます。
esd -as 2 -tcp -public &
次にリモート側からesdplayを実行します。
esdplay -s [サーバのIPアドレス] [ファイル名]
そうすると再生できました。
iptablesを疑ってしまったのですが、
特に設定をしなくても大丈夫でした。
nmapを使ってTCPのポートの確認をしたのも混乱した原因でした。
リモートからnmapを使ってもポートは開いていないように見えるのですが、
実際には通信は可能です。
サーバ側でlsof -i | grep 16001をしますと
esd 5861 user_name 3u IPv6 27992 TCP *:16001 (LISTEN)
このように出てきます。
iptablesがデフォルトでどうなっているのはいまいちよくわからないのですが、
まあ、外からは見えないけれど、通信はできているので問題はないと言えばないのですが、
不思議ですね。
何はともあれ、解決しましたので、いろいろありがとうございました。
オフライン
ええと、外から見えないのではなく、nmapがデフォルトでは
16001を見ないのが原因です。
nmapはオプションが与えられない場合、/usr/share/nmap/nmap-servicesに
あるポートしか見に行きません。
そして、ここには16001は含まれていないので、nmap target とやると
スルーされます。
nmap -A target すると、16001が空いているのが見えると思います。
オフライン
hitoさんありがとうございます。
たしかにそうでした。
nmapのデフォルトでは16001までは見ていないようです。
次のようにすると見れました。
$ nmap -A -p 1-20000 localhost
Starting Nmap 4.20 ( http://insecure.org ) at 2007-10-31 18:18 JST
Interesting ports on localhost (127.0.0.1):
Not shown: 19998 closed ports
PORT STATE SERVICE VERSION
631/tcp open ipp CUPS 1.2
16001/tcp open kerberos-sec Microsoft Windows kerberos-sec
Service Info: OS: Windows
Service detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ .
Nmap finished: 1 IP address (1 host up) scanned in 29.445 seconds
実際にはkerberosではないのですが、開いていることは確認できます。
お騒がせしてすみませんでした。
また、ご指摘ありがとうございました。
オフライン