Slackwareのlinuxボックスがあり、localhostの特定のポートでリッスンするサービスを開始できません。straceを使用するbind()
と、呼び出しでエラーが発生することがわかりました。エラーはEADDRINUSE (Address already in use)
次のとおりです。
bind(3, {sa_family=AF_INET, sin_port=htons(874), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EADDRINUSE (Address already in use)
これは、そのポートでリッスンを開始しようとするプロセスで発生するため、プロセス自体とは関係ありません。上記のstrace出力は、コマンドから取得されますstrace -ff nc -l -p 874 -s 127.0.0.1
。
したがって、これはlocalhostポート874ですでにリッスンしているプロセスがあることを示唆しています。しかし、それを見つけることができないようです。次のコマンドはすべて何も返しません。
netstat -aplunt | grep :874
netstat -na | grep :874
lsof -i :874
lsof -i tcp | grep 874
fuser 874/tcp
socklist | grep 874
iptables -t filter -S | grep 874
iptables -t nat -S | grep 874
iptables -t mangle -S | grep 874
conntrack -L | grep 874
私がリッスンしようとする0.0.0.0:874
と、同じエラーで失敗します。nicで構成されたIPアドレスの1つでリッスンする127.0.0.2:874
ことは問題なく動作し、リッスンすることも問題なく動作します。別のポートでリッスンしても、127.0.0.1
またはで正常に動作し0.0.0.0
ます。
それで、今、私は興味があります。ネットワークスタックがここでEADDRINUSEを返す理由を確認するにはどうすればよいですか?他に何を見ることができますか、または他のどのコマンドを実行して詳細情報を取得できますか?
追加情報:
- カーネル4.1.31。
- ここではSelinuxは使用されません。
- Telnetで127.0.0.1に接続しようとすると、「接続が拒否されました」が返される
- rootとしてコマンドを実行しています
netstat -na | grep 874
あなたの現在のnetstat
フラグがあまりにも制限的である場合に備えて試みます。
iptables -S
出力のどこかにポートが記載されていますか?