ECONNREFUSED (errno 111)
errno 111
الرسالة الرسمية (كما تظهر على الشاشة): Connection refused
يُبحث عنه أيضًا باسم: Connection refused, errno 111, connect ECONNREFUSED, ECONNREFUSED 127.0.0.1
ماذا يعني
تعني ECONNREFUSED، أي 'Connection refused' (errno 111 في Linux و61 في macOS)، أن المضيف المستهدف رد لكن لا يوجد برنامج يقبل الاتصالات على ذلك المنفذ. يعرضها Node.js بصيغة 'connect ECONNREFUSED 127.0.0.1:5432'. إما أن الخدمة متوقفة، أو تستمع في مكان آخر، أو أن جدار حماية يرفض الاتصال.
ينطبق على: Linux, macOS (BSD errno), WSL, حاويات Docker
كيفية إصلاح ECONNREFUSED (errno 111)
- تأكد من أن الخدمة تعمل ('systemctl status <service>' أو 'docker ps')
- افحص عنوان الاستماع والمنفذ على الخادم بالأمر 'sudo ss -ltnp'؛ فقاعدة بيانات مرتبطة بـ 127.0.0.1 ترفض العملاء البعيدين
- في Docker، 'localhost' داخل الحاوية هو الحاوية نفسها؛ استخدم اسم الخدمة من docker-compose أو 'host.docker.internal' للوصول إلى المضيف
- إذا فشل 'localhost' ونجح '127.0.0.1' (أو العكس)، فإن الخادم يستمع على IPv4 فقط أو على IPv6 فقط
- افحص قواعد REJECT في جدار الحماية ('sudo iptables -L -n' أو 'sudo nft list ruleset')
- إذا كانت الخدمة تبدأ ببطء، فأضف محاولات إعادة أو انتظاراً للجاهزية قبل الاتصال
سبب حدوثه
ردّت نواة الطرف البعيد بحزمة RST لأنه لا يوجد مقبس يستمع على ذلك العنوان/المنفذ، أو لأن قاعدة جدار حماية رفضته فعلياً. وأسبابه المعتادة: خدمات متوقفة، ومنافذ خاطئة، وارتباطات بواجهة الحلقة المحلية (loopback) فقط، والخلط في شبكات الحاويات.
الأسئلة الشائعة
لماذا يحصل تطبيقي على ECONNREFUSED عند الاتصال بقاعدة البيانات في Docker؟
داخل الحاوية، يشير 'localhost' إلى الحاوية نفسها. اتصل باسم خدمة حاوية قاعدة البيانات بدلاً من ذلك.
أخطاء ذات صلة
المصدر: Linux kernel errno.h · حلول كتبها المحررون وراجعوها (راجع السياسة التحريرية)
آخر تحديث: