Tôi có một hộp linux Slackware nơi tôi không thể bắt đầu bất kỳ dịch vụ nào nghe trên một cổng cụ thể trên localhost. Bằng cách sử dụng strace tôi phát hiện ra rằng lỗi xảy ra trong bind()
cuộc gọi và lỗi là 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)
Điều này xảy ra với bất kỳ quá trình nào tôi cố gắng bắt đầu nghe trên cổng đó, vì vậy nó không liên quan đến chính quá trình đó. Đầu ra strace ở trên đến từ lệnh strace -ff nc -l -p 874 -s 127.0.0.1
.
Vì vậy, điều này cho thấy có một quá trình đã lắng nghe trên cổng localhost 874. Tuy nhiên, tôi dường như không thể tìm thấy nó. Tất cả các lệnh sau đây không trả về gì cả:
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
Nếu tôi cố nghe trên 0.0.0.0:874
đó thì thất bại với cùng một lỗi. Nghe trên một trong những địa chỉ IP được cấu hình trên nic hoạt động tốt và nghe 127.0.0.2:874
cũng hoạt động tốt. Nghe trên một cổng khác hoạt động tốt, cũng trên 127.0.0.1
hoặc 0.0.0.0
.
Vì vậy, bây giờ tôi tò mò. Làm cách nào tôi có thể tìm hiểu lý do tại sao ngăn xếp mạng trả về EADDRINUSE tại đây? Những thứ khác tôi có thể xem, hoặc những lệnh khác tôi có thể chạy để có thêm thông tin?
Thông tin bổ sung:
- Hạt nhân 4.1.31.
- Selinux không được sử dụng ở đây.
- Đang cố gắng kết nối với 127.0.0.1 bằng telnet trả về "Kết nối bị từ chối"
- Tôi đang chạy các lệnh với quyền root
netstat -na | grep 874
trong trường hợp netstat
cờ hiện tại của bạn quá hạn chế.
iptables -S
đầu ra?