عندما تُعدّ خادم ألعاب على خادم VPS بنظام Windows ولا يستطيع أحد الاتصال به، يكون السبب في الغالب واحدًا: جدار حماية Windows يحظر المنفذ. إليك كيف تفتحه بالأوامر، وهي طريقة أسرع من التنقل بين القوائم، والأهم أنها تتيح لك النسخ واللصق دون أخطاء.
لا يوجد في خادم VPS جهاز توجيه (راوتر) يحتاج إلى إعداد. انسَ «إعادة توجيه المنافذ» (port forwarding) التي تراها في الشروحات: فهي للخوادم المنزلية. لخادم VPS عنوان IP عام خاص به، لذا فإن الشيء الوحيد الذي يقف بين لاعبيك وخادمك هو جدار حماية Windows.
افتح PowerShell بصلاحيات المسؤول
اتصل بخادم VPS عبر سطح المكتب البعيد (نشرح طريقة ذلك هنا)، ثم انقر بزر الفأرة الأيمن على زر Start (ابدأ) واختر Terminal (Admin) أو Windows PowerShell (Admin) (أي بصلاحيات المسؤول). وإن لم تظهر فيه كلمة «Admin»، فستفشل الأوامر بخطأ في الصلاحيات.
فتح منفذ: TCP وUDP، للاتصالات الواردة والصادرة
يفتح هذا المثال المنفذ 30120؛ غيّر الرقم والاسم بما يناسبك. والصق الكتلة كاملة دفعة واحدة:
$puerto = 30120
$nombre = "Game server"
New-NetFirewallRule -DisplayName "$nombre TCP $puerto (in)" -Direction Inbound -Protocol TCP -LocalPort $puerto -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "$nombre UDP $puerto (in)" -Direction Inbound -Protocol UDP -LocalPort $puerto -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "$nombre TCP $puerto (out)" -Direction Outbound -Protocol TCP -LocalPort $puerto -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "$nombre UDP $puerto (out)" -Direction Outbound -Protocol UDP -LocalPort $puerto -Action Allow -Profile Any
ما الذي يفعله كل جزء، في حال أردت تعديله:
-
-Direction Inboundهو ما يصل من الخارج (وهو ما تحتاجه فعلًا)، وOutboundهو ما يخرج. -
-Protocolهو TCP أو UDP. ولا يُغني أحدهما عن الآخر. فإذا كانت لعبتك تستخدم UDP وفتحت TCP فقط، فلن يدخل أحد: وهذا أكثر الأخطاء تكرارًا. -
-LocalPortهو المنفذ الذي يستمع عليه خادمك. -
-Profile Anyيطبّق القاعدة على ملفات تعريف الشبكة الثلاثة (Domain وPrivate وPublic، أي المجال والخاص والعام). وفي خادم VPS يكون الاتصال عادةً ضمن ملف التعريف «Public»، لذا فهذا الخيار مهم.
هل تلزم قواعد الاتصالات الصادرة؟ في Windows Server تكون حركة البيانات الصادرة مسموحة افتراضيًا، لذا لا تلزم عادةً. أدرجناها لأنها لا تضر، ولأنه إذا كان أحدهم قد شدّد إعدادات جدار الحماية من قبل، فستكون هي بالضبط ما كان ينقص.
لنطاق من المنافذ
New-NetFirewallRule -DisplayName "Game UDP 7777-7778 (in)" -Direction Inbound -Protocol UDP -LocalPort 7777-7778 -Action Allow -Profile Any
وتصلح أيضًا قائمة مفصولة بفواصل: -LocalPort 27015,27020.
التحقق من أن القواعد أُنشئت بشكل صحيح
Get-NetFirewallRule -DisplayName "*30120*" | ForEach-Object {
$f = $_ | Get-NetFirewallPortFilter
[pscustomobject]@{
Regla = $_.DisplayName
Activa = $_.Enabled
Sentido = $_.Direction
Accion = $_.Action
Protocolo= $f.Protocol
Puerto = $f.LocalPort
}
} | Format-Table -AutoSize
يجب أن تظهر القواعد الأربع، وقيمة العمود Activa (مفعّلة) فيها True، وقيمة العمود Accion (الإجراء) فيها Allow.
التحقق من أن خادمك يستمع
لا فائدة من فتح المنفذ إن لم يكن هناك ما يستمع خلفه. ومع تشغيل خادم الألعاب:
Get-NetTCPConnection -LocalPort 30120 -State Listen
Get-NetUDPEndpoint -LocalPort 30120
إذا لم يُرجع الأمران شيئًا، فالمشكلة ليست في جدار الحماية: خادمك لم يبدأ، أو توقف بسبب عطل، أو مضبوط على منفذ آخر. راجع وحدة تحكم اللعبة (console) قبل أن تواصل تعديل القواعد.
حذف قاعدة
Remove-NetFirewallRule -DisplayName "Game server TCP 30120 (in)"
إذا كنت تفضّل استخدام الفأرة
اضغط على Win + R، واكتب wf.msc ثم اضغط على Enter. في اللوحة اليسرى اختر Inbound Rules (القواعد الواردة) ← New Rule… (قاعدة جديدة) في العمود الأيمن ← Port (منفذ) ← اختر TCP أو UDP واكتب الرقم في Specific local ports (منافذ محلية محددة) ← Allow the connection (السماح بالاتصال) ← اترك ملفات التعريف الثلاثة محددة ← أعطِ القاعدة اسمًا وأنهِ المعالج. وكرّر العملية للبروتوكول الآخر: فالقاعدة الواحدة تغطي TCP أو UDP فقط، ولا تغطيهما معًا أبدًا.
لا يزال لا يعمل
راجع الأمور بهذا الترتيب، فهو الأسرع في استبعاد الأسباب:
- هل الخادم يستمع؟ استخدم الأمرين السابقين. وهذا هو العطل الأكثر شيوعًا بفارق كبير.
- هل فتحت البروتوكول الصحيح؟ نصف الألعاب تعمل عبر UDP. افتح TCP وUDP معًا وتخلّص من الشك.
- هل تختبر من الخادم نفسه؟ من الداخل ينجح الاتصال دائمًا. اختبر من اتصال آخر، أو اطلب من أحدهم أن يدخل.
- تصفية AntiDDoS. في صفحة خدمتك، في تبويب الأمان، توجد فلاتر الشبكة. فإذا كنت قد أنشأت فلاتر يدويًا، فتأكد من أنها تشمل منفذ لعبتك وبروتوكولها.
لا تعطّل جدار الحماية بالكامل أبدًا «للتجربة». فأي خادم VPS بعنوان IP عام يتعرض لعمليات فحص آلية خلال دقائق من تشغيله. افتح المنافذ التي تحتاجها واترك البقية مغلقة.