طريقتان لتشغيل FastDDNS على pfSense
توفر لوحة hostname لديك إعدادين. الطريقة 2 تضيف FastDDNS إلى العميل المدمج Services > Dynamic DNS كمزوّد Custom — وهذه هي الطريقة التي ينبغي اعتمادها، لأن pfSense يحفظها في التكوين ويُدرجها في النسخ الاحتياطية. الطريقة 1 تلصق سكريبتًا من سطر واحد في الطرفية، فيُنشئ مهمة cron تعمل كل دقيقتين. تعمل فورًا، لكن pfSense لا يدير هذه المهمة.
يتبع الترقيم أدناه التسميات الموجودة في لوحتك، وليس الترتيب الذي نوصي به. أعد إعداد الطريقة 2 للاستخدام طويل الأمد؛ واستخدم الطريقة 1 عندما تريد إرسال تحديث فورًا من دون ملء نموذج.
| الطريقة 2 — عميل DDNS المدمج | الطريقة 1 — سكريبت crontab | |
|---|---|---|
| مكان التنفيذ | Services > Dynamic DNS في واجهة الويب | Diagnostics > Command Prompt، أو عبر SSH |
| محفوظ في تكوين pfSense | نعم | لا — راجع الحد أدناه |
| يستمر بعد استعادة التكوين أو إعادة التثبيت | نعم | لا |
| موعد إرسال التحديث | عند تغيّر عنوان الواجهة المراقَبة، بالإضافة إلى إعادة التحقق يوميًا | كل دقيقتين، بغض النظر عن أي شيء |
| جهد الإعداد | سبعة حقول، أربعة منها تُنسخ من اللوحة | لصق واحد |
| مناسب لـ | الإعداد الدائم | إرسال تحديث أولي فوري، أو إجراء اختبار سريع |
قبل أن تبدأ
أربعة أشياء، اثنان منها يحددان ما إذا كان الوصول عن بُعد سيعمل أصلًا.
- اسم مضيف FastDDNS. أنشئ واحدًا مجانًا على FastDDNS، ثم افتحه وانتقل إلى DDNS Configuration Parameters > Firewall pfSense.
- وصول المسؤول إلى واجهة pfSense على الويب، وإلى الصدفة فقط إذا كنت تخطط لاستخدام الطريقة 1.
- عنوان IP عام حقيقي على واجهة WAN. إذا كان مزود خدمة الإنترنت يضعك خلف Carrier-Grade NAT، فلن يستطيع DNS الديناميكي مساعدتك — إذ سيشير hostname إلى عنوان لا يمكن لأي شخص خارج شبكة مزود الخدمة الوصول إليه. تحقق من عنوان WAN في لوحة تحكم pfSense، أو شغّل CGNAT Checker في تطبيق FastDDNS للجوال.
- قواعد الجدار الناري وNAT لأي شيء تريد الوصول إليه. يحافظ DDNS فقط على توجيه الاسم إلى العنوان الصحيح؛ أما طريقة الوصول فهي مسؤوليتك. أكّد ذلك بعد الإعداد باستخدام فحص المنفذ.
في لوحة تحكم pfSense، يعني وجود عنوان في 10.0.0.0/8، 172.16.0.0/12، 192.168.0.0/16 أو 100.64.0.0/10 على واجهة WAN أن جهةً ما upstream تنفّذ NAT. أما النطاق 100.64.0.0/10 فهو النطاق المحجوز لـ Carrier-Grade NAT.
الطريقة 2 — أضف FastDDNS كعميل DNS ديناميكي مخصص
هذا هو الإعداد الذي يستحق الاحتفاظ به. يخزّنه pfSense في config.xml، لذلك يعود بعد استعادة الإعدادات ويستمر بعد إعادة التثبيت.
الخطوة 1 — انسخ عنوان التحديث من لوحة hostname
افتح hostname الخاص بك، وانتقل إلى DDNS Configuration Parameters ثم وسّع Firewall pfSense. كل ما تحتاجه للطريقتين موجود في هذه اللوحة الواحدة:

انسخ عنوان التحديثضمن Method 2. يحتوي بالفعل على hostname وبيانات اعتماد حسابك:
https://client.fastddns.net/?hostname=myhome.fastddns.net&user_name=YOUR-USERNAME&user_pass=YOUR-UPDATE-PASSWORDالقيم الثلاثة المكتوبة بالأحرف الكبيرة تمثّل المعلومات الخاصة بحسابك — وتملؤها اللوحة نيابةً عنك.
الخطوة 2 — افتح عميل DNS الديناميكي
في واجهة الويب الخاصة بـ pfSense، انتقل إلى Services > Dynamic DNSوانقر على + إضافة.
الخطوة 3 — املأ الحقول
| الحقل | القيمة | السبب |
|---|---|---|
| Service Type | Custom |
لا يظهر FastDDNS في قائمة المزوّدين المضمّنة، ولا حاجة إلى ظهوره فيها |
| Interface to Monitor | WAN |
الواجهة التي ينبغي أن يؤدي تغيّر عنوانها إلى تشغيل التحديث |
| Hostname | hostname الخاص بك على FastDDNS | يحتوي رابط التحديث عليه بالفعل، لذا فهو في نوع Custom مجرد التسمية التي ستراها في القائمة |
| Update URL | الرابط من الخطوة 1 | الصقه كاملًا. لا يوجد %IP% يجب استبداله — يسجّل FastDDNS العنوان الذي يصل منه الطلب |
| Force IPv4 DNS Resolution | مفعّل | يحلّ hostname التحديث عبر IPv4 فقط، لذا يكون العنوان الذي يسجّله FastDDNS هو عنوان WAN الخاص بـ IPv4، وليس عنوان IPv6 |
| Result Match | اتركه فارغًا | يقارن pfSense هذه القيمة بالرد الكامل. يجيب FastDDNS بـ "good"goodبعد حدوث تغيير، وبـ "nochg"nochgعندما لا يتغيّر شيء، لذلك لا توجد سلسلة ثابتة واحدة تطابق الردّين — ولا تحدد تعليمات اللوحة نفسها أيًّا منهما |
| Description | FastDDNS.net |
نص حر للرجوع إليه |

الخطوة 4 — احفظ، ثم اقرأ عمود الحالة
انقر على حفظ وفرض التحديث. عند العودة إلى قائمة Services > Dynamic DNS، يجب أن يمتلئ عمود IP المخزن مؤقتًايجب أن يمتلئ العمود بعنوان WAN الحالي لديك. ويعني الإدخال الفارغ، أو الإدخال الذي يظل قديمًا بعد فرض التحديث، أن التحديث لم ينجح — ويوضح جدول استكشاف الأخطاء وإصلاحها أدناه السبب.
هناك أمر مهم يجب فهمه بشأن هذه الطريقة: فهي تعمل وفقًا للأحداث، وليس عبر نبضة كل دقيقتين. وتوثّق Netgate أن الخدمة تُحدّث العنوان عند تغيّر عنوان الواجهة، كما يأتي pfSense مزودًا بإدخال cron افتراضي يُشغَّل /etc/rc.dyndns.updateمرة واحدة يوميًا في الساعة 01:01 كإجراء احتياطي. لذلك يُعاد尝ى التحديث الفاشل — لكن ليس خلال دقائق. وعندما تحتاج إلى تحديث فوري، استخدم حفظ وفرض التحديث.
إذا كنت تفضّل تشغيل نقطة النهاية نفسها من برنامج نصي خاص بك، فالمعلمات موثّقة في صفحة صفحة API لعميل FastDDNSالتوثيق
الشرح أدناه عبارة عن تسجيل قديم، لذلك تبدو اللوحة مختلفة عن لقطات الشاشة هنا. أما الحقول وترتيب الخطوات فهما متطابقان.
الطريقة 1 — البرنامج النصي المؤلف من سطر واحد في crontab
الخطوة 1 — انسخ البرنامج النصي من لوحة hostname الخاصة بك
في نفس لوحة Firewall pfSense، انسخ المربع الموجود أسفل Method 1البرنامج النصي ذي السطر الواحد
((crontab -l >/dev/null && crontab -l | grep -i "client.fastddns.net") || ((crontab -l; echo '*/2 * * * * fetch "URL" -o /dev/null || curl -s "URL"') | crontab -; fetch "URL" -o /dev/null || curl -s "URL"; printf "\n\nAdded Dynamic DNS Script to crontab successfully\n\n"; exit 1;)) && printf "\n\nFastDDNS is available \n\n";في السطر الفعلي، كل URL أعلاه هو عنوان URL الكامل للتحديث من الخطوة 1 في الطريقة 2. انسخه من اللوحة بدلًا من تركيبه يدويًا.

الخطوة 2 — شغّله
الصق السطر في Diagnostics > Command Prompt، داخل مربع تنفيذ أمر Shell، ثم اضغط تنفيذ. وتؤدي جلسة SSH أو الخيار 8 في وحدة التحكم الغرض نفسه.
ينطبق تحذير Netgate الخاص بهذه الصفحة عمومًا: فهي تنفّذ كل ما تلصقه بامتيازات كاملة، وقد يجعل الأمر الخاطئ جدار الحماية غير قابل للاستخدام. الصق السطر من لوحتك فقط، ولا تلصق أي شيء آخر. ويجب أيضًا أن ينتهي الأمر ويعيد النتيجة — وهذا ما يفعله هذا الأمر، ولذلك يمكن تشغيله هنا بأمان.
الخطوة 3 — ماذا تعني الرسالتان
ابحث عن أحد هذين السطرين في نهاية الناتج. فهما يعنيان شيئين مختلفين:
| الرسالة | ما حدث |
|---|---|
| Added Dynamic DNS Script to crontab successfully | لم يكن هناك إدخال لـ FastDDNS في crontab، لذلك أُضيف إدخال وأُرسل تحديث فورًا |
| FastDDNS is available | كان هناك إدخال بالفعل، لذلك لم يتغير أي شيء |
التحقق هو grep عادي لـ client.fastddns.net في crontab بالكامل. وهذا يمنعك من تثبيت المهمة مرتين — لكنه يعني أيضًا أنه إذا أضفت اسم مضيف ثاني على الجدار الناري نفسه، فسيرى البرنامج النصي الاسم الأول ويرفض إضافة أي شيء. يجب إضافة سطر cron الخاص باسم hostname الثاني يدويًا.
وهذا grep هو أيضًا سبب أن التشغيل الثاني يطبع أكثر من سطر واحد: إذ تُطبع نتيجة المطابقة، ويكون السطر المطابق هو إدخال cron الذي يحتوي على عنوان URL للتحديث كاملًا — بما في ذلك اسم المستخدم وكلمة المرور. إذا كنت تشغّل هذا أمام شخص آخر أو تلصق الناتج في تذكرة، فهذا هو السطر الذي ينبغي حذفه.
يشغّل السطر المجدول نفسه fetch، وهو برنامج التنزيل الخاص بـ FreeBSD الذي يأتي مع pfSense، ويستخدم curl إذا فشل ذلك.
الخطوة 4 — الحد الذي ينبغي معرفته قبل الاعتماد عليه
يحتفظ pfSense بمهامه المجدولة في config.xml ويعيد بناء crontab النظام من هناك. أما المهمة المضافة باستخدام crontab - فتوجد في crontab المستخدم root بدلًا من ذلك، ولا يديرها pfSense ولا يضمّنها في نسخة احتياطية للإعدادات. ولهذا نتيجتان:
- عند استعادة الإعدادات أو إعادة تثبيت الجدار الناري، لن تكون المهمة موجودة — بينما سيكون عميل DNS الديناميكي من الطريقة 2 موجودًا.
- إذا كان System > Advanced > Miscellaneous قد فعّل أقراص RAM لـ
/tmpو/var، فسيكون crontab المستخدم root موجودًا في الذاكرة. وتوثّق Netgate أن بيانات RRD وإيجارات DHCP والسجلات وبيانات Captive Portal فقط هي التي تُحفظ بعد إعادة التشغيل باستخدام أقراص RAM هذه — أما crontab فليس من بينها.
لا يعني أيٌّ من ذلك أن الطريقة 1 خاطئة. بل يجعلها طريقة جيدة للحصول على تحديث الآن، لكنها طريقة سيئة لترك المهمة تعمل لمدة عام. إذا أردت مهمة cron يحتفظ بها pfSense فعلًا، فثبّت حزمة Cron وأضف السطر نفسه من خلالها.
تسجيل أقدم آخر يوضّح استخدام مسار البرنامج النصي في تصميم اللوحة السابق.
تحقّق من أن hostname يتحدّث فعلًا
أيًا كانت الطريقة التي استخدمتها، تحقّق منها من ثلاث زوايا.
في pfSense، Services > Dynamic DNS يعرض IP مخزّن مؤقت لكل إدخال — ويجب أن يطابق عنوان WAN لديك. وإذا استخدمت الطريقة 1، فتحقّق من وجود المهمة وشغّلها مرة واحدة يدويًا من shell:
crontab -l
fetch -o - "PASTE-YOUR-UPDATE-URL-HERE"يطبع الأمر الثاني ردّ الخادم. ويجب أن يبدأ بـ good إذا تغيّر العنوان للتو، أو nochg إذا كان صحيحًا بالفعل — وقد يضيف FastDDNS العنوان الذي سجّله. badauth هو الرد الوحيد الذي يحدّد المشكلة بوضوح: اسم المستخدم أو كلمة مرور التحديث غير صحيحة. أما أي رد آخر، أو عدم ظهور أي رد، فلا يفسّر المشكلة تلقائيًا — اقرأ الرد الفعلي، ثم تحقّق من سجل النظام.
من خارج الشبكة، نفّذ resolve للـ hostname وقارنه بعنوانك العام:
nslookup myhome.fastddns.netأخيرًا، تعرض لوحة hostname لديك طابعًا زمنيًا باسم آخر تحديث يتغيّر من Not yet updated عند أول اتصال من جدار الحماية. يطبّق FastDDNS العنوان الجديد خلال أقل من 60 ثانية، لكن قد تحتفظ ذاكرة DNS المحلية بالعنوان القديم لفترة أطول قليلًا.
استكشاف أخطاء pfSense DDNS وإصلاحها
| ما تراه | السبب | ما يجب فعله |
|---|---|---|
الرد هو badauth |
اسم المستخدم أو كلمة مرور التحديث غير صحيحة في عنوان URL | انسخ Update URL من اللوحة مرة أخرى؛ وإذا كنت قادمًا من موفّر آخر، فراجع الدليل حول استبدال عنوان خادم No-IP أو DynDNS |
| يبقى Cached IPتعذّر على العميل الوصول إلى مضيف التحديث، أو اقتُطع عنوان URL عند لصقه | لم يتمكن العميل من الوصول إلى مضيف التحديث، أو تم اقتطاع عنوان URL عند اللصق | استخدم حفظ وإجبار التحديث، ثم اقرأ Status > System Logs > System > General؛ يؤدي تفعيل Verbose Logging في الإدخال إلى عرض التبادل الكامل |
| اسم المضيف يتم حله إلى عنوان IPv6 | تم الوصول إلى مضيف التحديث عبر IPv6، ولذلك سُجّل ذلك العنوان | حدّد Force IPv4 DNS Resolution في إدخال Dynamic DNS وأجبر على إجراء تحديث |
| يُسجَّل كل تحديث على أنه فاشل رغم أن hostname صحيح | تم تعيين Result Match إلى سلسلة ثابتة، ويتناوب الرد بين good و nochg |
امسح الحقل Result Matchلإيقاف التحقق من النتيجة |
| نجحت الطريقة 1، ثم توقفت بعد إعادة التشغيل أو استعادة التكوين | ، ويمكن وضعها على قرص RAMconfig.xml ويمكن أن توضع على قرص RAM |
أعد إعداد الطريقة 2 بدلًا من ذلك، أو أضف السطر من خلال حزمة Cron |
| يُحل hostname، لكن لا يستجيب شيء على port الخاص بك | يعمل DDNS؛ لكن المسار إلى الشبكة لا يعمل | أضف قواعد NAT والجدار الناري، ثم اختبر من خارج الشبكة باستخدام Port Check |
| يُحل hostname إلى عنوان ليس عنوان IP العام الخاص بك | يقع جدار الحماية خلف طبقة NAT أخرى، غالبًا CGNAT | قارن عنوان WAN في لوحة التحكم بما يظهره فحص عنوان IP عام؛ وإذا اختلفا، فاطلب من مزود خدمة الإنترنت عنوان IP عامًا |
| كان كل شيء يعمل، ثم توقف بعد أشهر | يُجدَّد hostname المجاني مرة واحدة سنويًا، بينما يستمر hostname المؤقت 30 يومًا | جدّده من حسابك، أو انتقل إلى خطة لا تنتهي صلاحية أسماء مضيفيها |
احتفظ بعنوان التحديث الخاص بك سريًا
يتضمن عنوان التحديث URL الخاص بـ hostname واسم المستخدم وكلمة مرور التحديث كمعلمات استعلام عادية. ويُخزَّن بهذه الطريقة في إعدادات pfSense، وكذلك في crontab عند استخدام الطريقة 1 — لذا يمكن لأي شخص يستطيع قراءة نسخة احتياطية من الإعدادات قراءة بيانات الاعتماد تلك. تعامل مع تصدير إعدادات pfSense كما تتعامل مع ملف كلمات مرور، ولا تلصق أبدًا عنوان تحديث غير منقّح في موضوع على المنتدى أو في تذكرة دعم. وإذا كنت قد فعلت ذلك بالفعل، فغيّر كلمة مرور التحديث في حسابك وأعد تهيئة الإدخال.
الأسئلة الشائعة
هل أستخدم عميل Dynamic DNS أم نص cron؟
استخدم عميل Dynamic DNS ضمن Services > Dynamic DNS لأي إعداد تريد الاحتفاظ به. يخزّنه pfSense في التكوين، لذلك يكون جزءًا من النسخة الاحتياطية ويعود بعد إعادة التثبيت. أما نص cron فهو أسرع طريقة لإجراء أول تحديث، لكن pfSense لا يدير هذه المهمة، وقد تُفقد عند إعادة التشغيل أو استعادة التكوين.
هل أحتاج إلى فتح port لتحديث DDNS نفسه؟
لا. يفتح pfSense اتصال HTTPS صادرًا إلى FastDDNS، لذلك لا تحتاج إلى قاعدة واردة للتحديث. ومع ذلك، ستظل بحاجة إلى port forwarding وقواعد الجدار الناري للخدمات التي تريد الوصول إليها عبر hostname، مثل 554 لـ RTSP أو port الويب الخاص بالكاميرا.
لماذا تطلب مني اللوحة فرض حل IPv4؟
لأن FastDDNS يسجّل عنوان IP الذي يصل منه طلبك. إذا حلّ pfSense مضيف التحديث إلى عنوان IPv6 واتصل عبر IPv6، فسيسجّل ذلك العنوان، وقد ينتهي بك الأمر إلى A record خاطئ أو فارغ. ويضمن فرض حل IPv4 تنفيذ التحديث باستخدام البروتوكول نفسه للعنوان الذي تريد نشره.
هل سيعمل هذا إذا كان مزود خدمة الإنترنت لدي يستخدم CGNAT؟
لا. عند استخدام CGNAT، لا يملك firewall لديك عنوان IP عامًا خاصًا به، لذلك لا يوجد عنوان يمكن أن يشير إليه hostname بشكل مفيد، كما يحظر مزود الخدمة الاتصالات الواردة. يحل DDNS مشكلة تغيّر العناوين، لا مشكلة غيابها. اطلب من مزود الخدمة عنوان IP عامًا، أو استخدم خدمة تنشئ نفقًا للاتصالات الصادرة.
هل تشغّل شيئًا آخر على الشبكة الطرفية؟ يعمل عنوان URL نفسه للتحديث في أي مكان يمكنه إجراء طلب HTTPS مجدول، بما في ذلك إعداد MikroTik RouterOS.





