مشكلة اتصال SSH: لا يمكن الاتصال بالخادم — الحل
دليل حل مشاكل اتصال SSH: قواعد جدار حماية Path.net، Default Block، إنشاء قاعدة تصفية لمنفذ SSH وخطوات استكشاف الأخطاء وإصلاحها.
دليل لتشخيص مشاكل الوصول إلى المنافذ باستخدام netstat وss وiptables وufw وفحص استماع الخدمات.
عدم القدرة على الوصول إلى خدمة تعمل على خادمك من الخارج يكون عادةً بسبب مشاكل الوصول إلى المنافذ. في هذا الدليل، سنشرح بالتفصيل الأدوات والطرق التي يمكنك استخدامها لتشخيص وحل مشاكل الوصول إلى المنافذ بشكل منهجي.
يُستخدم أمر ss في أنظمة Linux الحديثة لعرض إحصائيات المقابس:
# قائمة جميع منافذ TCP المستمعة
ss -tlnp
# قائمة جميع منافذ UDP المستمعة
ss -ulnp
# فحص منفذ محدد
ss -tlnp | grep :80
ss -tlnp | grep :443
ss -tlnp | grep :3306
# عرض جميع الاتصالات (مستمعة + متصلة)
ss -tanp
# معلومات مفصلة عن المقابس
ss -tlnp -e
# مثال على المخرجات:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=5678,fd=6))
LISTEN 0 128 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=9012,fd=22))
| الحقل | الوصف |
|---|---|
| State LISTEN | المنفذ يستمع بنشاط |
| 0.0.0.0:port | قابل للوصول من جميع الواجهات |
| 127.0.0.1:port | قابل للوصول فقط من localhost |
| Process | معلومات العملية المستمعة على المنفذ |
إذا كانت الخدمة تستمع على 127.0.0.1، فلا يمكن الوصول إليها من الخارج. تحتاج إلى تغيير توجيه bind-address أو listen إلى 0.0.0.0 في تكوين الخدمة.
# قائمة جميع المنافذ المستمعة
netstat -tlnp
# جميع المنافذ بما في ذلك UDP
netstat -tulnp
# فحص منفذ محدد
netstat -tlnp | grep :8080
# عرض عدد الاتصالات
netstat -an | grep :80 | wc -l
# قائمة جميع القواعد
sudo iptables -L -n -v
# فحص سلسلة INPUT
sudo iptables -L INPUT -n -v --line-numbers
# فحص جدول NAT
sudo iptables -t nat -L -n -v
# البحث عن قواعد لمنفذ محدد
sudo iptables -L -n -v | grep 80
# فتح منفذ TCP 80
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# فتح منفذ TCP 443
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# الوصول إلى المنفذ من IP محدد
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT
# فتح نطاق منافذ
sudo iptables -A INPUT -p tcp --dport 8000:9000 -j ACCEPT
# حفظ القواعد
sudo iptables-save > /etc/iptables/rules.v4
sudo netfilter-persistent save
# فحص حالة UFW
sudo ufw status verbose
# قائمة القواعد المرقمة
sudo ufw status numbered
# فتح المنافذ
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp
# الوصول إلى المنفذ من IP محدد
sudo ufw allow from 192.168.1.100 to any port 3306
# فتح نطاق منافذ
sudo ufw allow 8000:9000/tcp
# حذف قاعدة
sudo ufw delete allow 8080/tcp
# تفعيل UFW
sudo ufw enable
# إعادة تحميل UFW
sudo ufw reload
# فحص المنطقة النشطة
sudo firewall-cmd --get-active-zones
# قائمة جميع القواعد
sudo firewall-cmd --list-all
# فتح منفذ (مؤقت)
sudo firewall-cmd --add-port=80/tcp
# فتح منفذ (دائم)
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
server {
listen 80; # الاستماع على جميع الواجهات
listen [::]:80; # بما في ذلك IPv6
server_name example.com;
}
[mysqld]
bind-address = 0.0.0.0 # الاستماع على جميع الواجهات
# bind-address = 127.0.0.1 # localhost فقط (افتراضي، آمن)
port = 3306
listen_addresses = '*' # جميع الواجهات
port = 5432
bind 0.0.0.0
port 6379
protected-mode yes
requirepass كلمة_مرور_قوية
عند فتح خدمات قواعد البيانات والتخزين المؤقت للخارج، استخدم دائماً كلمات مرور قوية وقيود IP.
# اختبار المنفذ البعيد من الجهاز المحلي
nc -zv IP_الخادم 80
nc -zv IP_الخادم 443
# مسح منافذ مفصل باستخدام nmap
nmap -p 80,443,3306,5432,6379 IP_الخادم
# كشف إصدار الخدمة
nmap -sV -p 80,443 IP_الخادم
# اختبار منفذ HTTP باستخدام curl
curl -I http://IP_الخادم:80
في خوادم REXE، عندما لا توجد أي قاعدة على عنوان IP تكون جميع المنافذ مفتوحة. أما عند وجود قاعدة واحدة على الأقل على عنوان IP فيدخل Default Block التلقائي حيز التنفيذ ولا تبقى مفتوحة سوى المنافذ المسموح بها. للسماح بالوصول الخارجي إلى خدمتك، تحتاج إلى إنشاء قاعدة تصفية للمنفذ المعني في Path Panel:
1. سجل الدخول إلى Path Panel (x.rexe.tr)
2. انقر على عنوان IP المعني
3. انقر على "إضافة قاعدة جديدة"
4. البروتوكول: TCP (أو UDP)
5. الاتجاه: Symmetric (ثنائي الاتجاه)
6. منفذ الوجهة: المنفذ الذي تريد فتحه
7. الإجراء: Allow
8. احفظ القاعدة وانتظر حالة propagated
حتى إذا ظهرت القاعدة في اللوحة على أنها لم تُنشر بعد (لم تُحدَّث)، فمن المرجّح أن القاعدة قد تم نشرها بالفعل خلال 2-5 دقائق. قد تتأخر حالة التحديث بسبب فترة فحص الحالة في اللوحة أو الوقت اللازم لتطبيق القاعدة على جميع العُقد في جانب Path (باستثناء جانبنا). هذا مجرد تأخير مرئي في اللوحة؛ أما المنفذ فقد تم فتحه فعليًا في النظام.
#!/bin/bash
PORT=$1
SERVER_IP=$2
if [ -z "$PORT" ] || [ -z "$SERVER_IP" ]; then
echo "الاستخدام: $0 <المنفذ> <ip_الخادم>"
exit 1
fi
echo "=== فحص الوصول إلى المنفذ $PORT ==="
echo -e "\n[1] فحص استماع الخدمة:"
ss -tlnp | grep ":$PORT" || echo "المنفذ $PORT لا يستمع!"
echo -e "\n[2] فحص جدار الحماية:"
if command -v ufw &> /dev/null; then
sudo ufw status | grep "$PORT"
else
sudo iptables -L -n | grep "$PORT"
fi
echo -e "\n[3] اختبار الوصول الخارجي:"
nc -zv -w 5 $SERVER_IP $PORT 2>&1
echo -e "\n=== اكتمل الفحص ==="
| المشكلة | السبب | الحل |
|---|---|---|
| المنفذ لا يستمع | الخدمة لا تعمل | systemctl start اسم_الخدمة |
| يستمع على 127.0.0.1 | عنوان الربط هو localhost | تغيير إلى 0.0.0.0 في التكوين |
| جدار الحماية يحظر | لا توجد قاعدة للمنفذ | فتح المنفذ عبر iptables/ufw/firewalld |
| Path Panel يحظر | لا توجد قاعدة تصفية | إنشاء قاعدة في Path Panel |
| Connection refused | تم تغيير منفذ الخدمة | فحص تكوين الخدمة |
لحل مشاكل الوصول إلى المنافذ، تحتاج إلى إجراء فحص ثلاثي المستويات: حالة استماع الخدمة، قواعد جدار حماية الخادم، وقواعد REXE Path Panel. تأكد أولاً من أن الخدمة تستمع على المنفذ والواجهة الصحيحة، ثم تحقق من قواعد جدار الحماية، وأخيراً أنشئ القواعد اللازمة في Path Panel.
ثلاثة أسباب محتملة: 1) الخدمة قد تستمع على 127.0.0.1 (غيّر إلى 0.0.0.0)، 2) جدار حماية الخادم قد يحظر المنفذ (افتح عبر iptables/ufw)، 3) قد لا توجد قاعدة تصفية في REXE Path Panel (أنشئ قاعدة).
ss (إحصائيات المقابس) حل محل netstat في أنظمة Linux الحديثة. يعمل بشكل أسرع ويوفر معلومات أكثر تفصيلاً. يمكن استخدام netstat في الأنظمة القديمة، لكن ss مفضل في الأنظمة الأحدث.
UFW مبني فعلياً فوق iptables. إدارة كليهما يدوياً في نفس الوقت قد يسبب ارتباكاً. يُنصح باختيار أحدهما واستخدامه بشكل متسق.
الفتح المباشر يشكل خطراً أمنياً. استخدم كلمات مرور قوية، أضف قيود IP، وإن أمكن اتصل عبر نفق SSH أو VPN.
قد يستغرق انتقال القاعدة إلى حالة propagated من 2 إلى 5 دقائق. تأكد أيضاً من أن جدار الحماية على جانب الخادم قد فتح المنفذ أيضاً. Path Panel وجدار حماية الخادم يعملان بشكل مستقل.
دليل حل مشاكل اتصال SSH: قواعد جدار حماية Path.net، Default Block، إنشاء قاعدة تصفية لمنفذ SSH وخطوات استكشاف الأخطاء وإصلاحها.
دليل حل مشاكل اتصال RDP: قواعد جدار حماية Path.net، Default Block، إنشاء قاعدة تصفية لمنفذ RDP وخطوات استكشاف الأخطاء وإصلاحها.
دليل اختبار الشبكة باستخدام WinMTR وLinux MTR، إنشاء قاعدة فلترة ICMP وإرسال النتائج لفريق الدعم. تشخيص فقدان الحزم والتأخير في الشبكة.