فيوجن PBX وACL

مقالتي ليست وصفًا كاملاً للمنتج، ولكنها مجرد تحسين طفيف للمنشور الجيد "FusionPBX، أو FreeSWITCH الرائع مرة أخرى". يبدو لي أن موضوع ACL في FusionPBX لم يتم الكشف عنه جيدًا. سأحاول سد هذه الفجوة بناءً على تجربتي الخاصة مع FreeSWITCH/FusionPBX.

وهكذا، لدينا FusionPBX مثبت برقم داخلي مسجل 1010 في المجال domain.local ومسار تم تكوينه للمكالمات الخارجية إلى المدينة. نحن نستخدم ACL لتأمين نظام الهاتف الخاص بنا من المكالمات غير المصرح بها والتي ستأخذ أموالنا. أولئك. فقط من الشبكات الموضحة في قائمة ACL تسمح بالمكالمات الصادرة. وهنا تحتاج إلى فهم واضح تمامًا لكيفية عمل ACL في FusionPBX وميزاته ومنطقه ونقطة الربط الخاصة به.

مثل المؤلف المحترم للمقال أعلاه، قمت أيضًا بالدوس على جميع أشعل النار المتعلقة بالرباط الصليبي الأمامي.

سأبدأ مع SipProfiles.
كلا الملفين (سأسميهما كذلك)، الداخلي والخارجي، موجودان في السياق العام، وهذا ليس من قبيل الصدفة. يتم تسجيل الأرقام في الملف الداخلي وسننتبه إليه. في ملف التعريف الداخلي، يتم ربط نطاقات ACL كـ application-inbound-acl. هذا الخط هو المسؤول عن تشغيل ACL على مستوى الملف الشخصي. حتى الآن، هذا كل ما يتعلق بالملفات الشخصية.

السياق

يتم استخدام السياق، من بين أمور أخرى، في توجيه المكالمات. ترتبط جميع الطرق الواردة بالسياق العام.

تكون الطرق الصادرة (إلى المدينة، وإلى الهاتف الخلوي، والمسافات الطويلة، والدولية، وأي طرق أخرى) (افتراضيًا) في سياق اسم المجال (دعنا نسميه domain.local).

دوري أبطال آسيا

الآن دعونا نتعامل مع قوائم ACL. افتراضيًا، يحتوي FusionPBX المثبت حديثًا على قائمتي ACL:

الإجراء الافتراضي للمجالات: رفض - هذه الورقة مرتبطة بملف التعريف الداخلي
الإجراء الافتراضي للشبكة المحلية: السماح

في قائمة المجالات ACL، نصف الشبكة (حسنًا، على سبيل المثال، 192.168.0.0/24)، ونمنح إذن السماح لهذه الشبكة، ونستخدم reloadacl.

بعد ذلك، نقوم بتسجيل هاتف من هذه الشبكة، ويبدو أن كل شيء على ما يرام ووفقا للتعليمات ومنطقيا.
نبدأ الاختبار ونتصل برقم خارجي و ... نحصل على كعكة دونات، أو بالأحرى حفرة دونات. فجأة!

نبدأ في تحليل السجل في وحدة التحكم أو من خلال Log Viewer FusioPBX.

نرى التحدي الذي يواجهنا:

switch_channel.c:1104 New Channel sofia/internal/[email protected]

نرى ACL التي نجحت:

sofia.c:10208 IP 192.168.0.150 Approved by acl "domains[]". Access Granted.

وأكثر من ذلك:

mod_dialplan_xml.c:637 Processing 1010 <1010>->98343379xxxx in context public
switch_core_state_machine.c:311 No Route, Aborting 
switch_core_state_machine.c:312 Hangup sofia/internal/[email protected] [CS_ROUTING] [NO_ROUTE_DESTINATION] 

لا طريق! على الرغم من أن الطريق سجلنا بصدق.

الجواب بسيط حقا.

لقد حان المكالمة. غاب ACL ذلك. وبما أن قائمة التحكم بالوصول (ACL) مرتبطة بملف التعريف الداخلي، وهذا الملف الشخصي موجود في السياق العام، فإن FreeSWITCH تنظر بأمانة إلى التوجيه في السياق العام. ولكن في السياق العام، فقط توجيه الوارد، ويخبرنا النظام بصراحة أنه لا توجد طرق إلى المدينة هناك.

هناك طريقتان على الأقل للخروج من هذا الوضع.

  1. قم بإرفاق قائمة التحكم بالوصول (ACL) هذه ليس بالملف التعريفي، بل بالرقم الداخلي نفسه. قد تكون هذه هي الطريقة الصحيحة للحل، لأن. من الأفضل ربط ACL في أقرب وقت ممكن من الامتداد من أجل الضبط الدقيق. أولئك. يمكنك وصف عنوان / عنوان شبكة محدد للهاتف الذي يمكن من خلاله إجراء مكالمة صادرة. عيب هذا الخيار هو أن كل ملحق سيتعين عليه القيام بذلك.
  2. قم بإصلاح قائمة التحكم بالوصول (ACL) بحيث تعمل بشكل صحيح على مستوى الملف الشخصي. لقد اخترت هذا الخيار، لأنه بدا لي أنه من الأسهل إضافة الشبكة إلى قائمة التحكم بالوصول (ACL) مرة واحدة بدلاً من وصفها في كل ملحق. لكن هذا مخصص لمهمتي على وجه التحديد. بالنسبة للمهام الأخرى، قد تحتاج إلى منطق مختلف لاتخاذ القرار.

لذا. دعونا نصلح مجالات ACL كما يلي:

الإجراء الافتراضي للمجالات: السماح

في قائمة النطاقات ACL نقوم بتسجيل الشبكة:

رفض 192.168.0.0/24

تطبيق، إعادة تحميل.
نحن نختبر: نطلب الرقم 98343379xxxx مرة أخرى و ... نقطة التفتيش قادمة ... مرحبًا. كل شيء يعمل.
دعونا نرى ما حدث في FreeSWITCH:
تبدأ المكالمة:

switch_channel.c:1104 New Channel sofia/internal/[email protected]

الرباط الصليبي الأمامي لم يفوتك:

[DEBUG] sofia.c:10263 IP 192.168.0.150 Rejected by acl "domains". Falling back to Digest auth.

و كذلك:

mod_dialplan_xml.c:637 Processing 1010 <1010>->98343379xxxx in context domain.local
sofia/internal/[email protected] Regex (PASS) [Sity] destination_number(98343379xxxx) =~ /^9(8343[23]d{6})$/ break=on-false 

لقد مر التوجيه، ومن ثم يأتي تأسيس الاتصال، وهو خارج عن نطاق الموضوع.

إذا قمنا بتغيير عنوان الشبكة في قائمة ACL، ولكن حصلنا على الصورة من الاختبار الأول، أي. سوف تتخطى قائمة التحكم بالوصول (ACL) المكالمة وسيقول التوجيه NO_ROUTE_DESTINATION.

ربما هذا هو كل ما أردت إضافته إلى ACL FusionPBX.

آمل أن يكون مفيدا لشخص ما.

المصدر: www.habr.com

إضافة تعليق