localhost의 특정 포트에서 수신 대기하는 서비스를 시작할 수없는 Slackware Linux 상자가 있습니다. 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
.
따라서 로컬 호스트 포트 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 주소 중 하나를 수신하면 문제없이 127.0.0.2:874
작동 하며, 수신 상태 에서도 작동합니다. 다른 포트에서 수신해도 127.0.0.1
또는 에서 제대로 작동합니다 0.0.0.0
.
그래서 지금 궁금합니다. 여기서 네트워크 스택이 EADDRINUSE를 반환하는 이유를 어떻게 알 수 있습니까? 다른 정보 나 추가 정보를 얻기 위해 실행할 수있는 다른 명령은 무엇입니까?
추가 정보:
- 커널 4.1.31.
- Selinux는 여기서 사용되지 않습니다.
- 텔넷으로 127.0.0.1에 연결하려고하면 "연결이 거부되었습니다"
- 루트로 명령을 실행하고 있습니다
netstat -na | grep 874
현재 netstat
플래그가 너무 제한적인 경우를 시도 합니다 .
iptables -S
출력에 포트가 언급되어 있습니까?