আমার একটি স্ল্যাকওয়ার লিনাক্স বাক্স রয়েছে যেখানে আমি কোনও পরিষেবা চালু করতে পারি না যা লোকালহোস্টের একটি নির্দিষ্ট বন্দরে শোনা যায়। স্ট্রেস ব্যবহার করে আমি জানতে পারি যে 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 -ff nc -l -p 874 -s 127.0.0.1
।
সুতরাং, এটি প্রস্তাব করে যে লোকালহোস্ট বন্দরে 874 এ ইতিমধ্যে শোনার একটি প্রক্রিয়া রয়েছে However তবে, আমি এটি খুঁজে পাচ্ছি বলে মনে হচ্ছে না। নিম্নলিখিত কমান্ডগুলি সমস্ত কিছুই প্রত্যাবর্তন করে:
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
এটি শুনতে চেষ্টা করি তবে একই ত্রুটিটি ব্যর্থ হয়। একটি এনআইপি কনফিগার করা আইপি অ্যাড্রেসের একটিতে শুনে কাজ করা ঠিক আছে, এবং শোনাও ঠিক 127.0.0.2:874
কাজ করে। একটি ভিন্ন বন্দরে শোনা সূক্ষ্ম কাজ করে, এছাড়াও 127.0.0.1
বা এছাড়াও 0.0.0.0
।
সুতরাং, এখন আমি কৌতূহলী। নেটওয়ার্ক স্ট্যাক EADDRINUSE এখানে কেন দেয় তা আমি কীভাবে জানতে পারি? আমি কী কী জিনিসগুলিতে সন্ধান করতে পারি, বা আরও তথ্য পেতে আমি কী কী আদেশ ব্যবহার করতে পারি?
অতিরিক্ত তথ্য:
- কার্নেল 4.1.31।
- সেলিনাক্স এখানে ব্যবহার করা হয় না।
- 127.0.0.1 এর সাথে টেলনেটের সাথে "সংযোগ প্রত্যাখ্যান করা" রিটার্নের সাথে সংযোগ স্থাপনের চেষ্টা করা হচ্ছে
- কমান্ডগুলি মূল হিসাবে চালাচ্ছি
netstat -na | grep 874
আপনার বর্তমান netstat
পতাকাগুলি খুব সীমাবদ্ধ না হলে আমি চেষ্টা করব ।
iptables -S
আউটপুটে কোথাও উল্লেখ করা হয়েছে ?