مقالي ليس وصفًا كاملاً للمنتج ، ولكنه مجرد توضيح بسيط للمنشور الجيد "FusionPBX ، أو مرة أخرى ، رائع ، FreeSWITCH". يبدو لي أن موضوع ACL في FusionPBX لم يتم تغطيته جيدًا. سأحاول سد هذه الفجوة ، بناءً على تجربتي الخاصة مع FreeSWITCH / FusionPBX.
وهكذا ، قمنا بتثبيت FusionPBX برقم الامتداد المسجل 1010 في المجال domain.local ومسار مكوّن للمكالمات الخارجية إلى المدينة. نحن نستخدم قوائم ACL لحماية نظام الاتصال الهاتفي الخاص بنا من المكالمات غير المصرح بها والتي ستأخذ أموالنا. أي فقط من الشبكات الموصوفة في ACL تسمح للمكالمات الصادرة. وهنا تحتاج إلى فهم واضح جدًا لكيفية عمل ACL في FusionPBX وميزاته ومنطقه ونقطة ربطه.
مثل المؤلف المحترم في المقالة أعلاه ، صعدت أيضًا على جميع المكابس المرتبطة بـ ACL.
سأبدأ مع
SipProfiles .
كلا التشكيلات الجانبية (سأدعو لهم ذلك) ، والداخلية ، والخارجية هي في سياق عام ، وهذا ليس من قبيل الصدفة. يتم تسجيل الأرقام في ملف التعريف الداخلي ، مع الانتباه إلى ذلك. في ملف التعريف الداخلي ، يتم ربط المجالات ACL كـ application-inbound-acl. هذا الخط مسؤول عن تشغيل قائمة ACL على مستوى ملف التعريف. حتى الآن مع التشكيلات.
السياق
يتم استخدام السياق ، من بين أشياء أخرى ، في توجيه المكالمات. جميع المسارات الواردة مرتبطة بالسياق العام.
توجد الطرق الصادرة (إلى المدينة ، إلى الخلوية ، بين المدن ، الدولية ، وأي طرق أخرى) (بشكل افتراضي) في سياق اسم المجال (دعنا نسميها domain.local).
ACL
الآن دعونا نتعامل مع دوري أبطال آسيا. بشكل افتراضي ، يحتوي FusionPBX المثبت حديثًا على ACLs:
الإجراء الافتراضي للنطاقات: الرفض - هذه الورقة مرتبطة بالملف الشخصي الداخلي
الإجراء الافتراضي للشبكة المحلية: اسمح
في المجالات ACL- قائمة قمنا بتعيين الشبكة (حسنا ، على سبيل المثال ، 192.168.0.0/24) ، وجعل شبكة تسمح لهذه الشبكة ، استخدم reloadacl.
بعد ذلك ، قم بتسجيل الهاتف من هذه الشبكة ، ويبدو أن كل شيء على ما يرام وفقًا للتعليمات والمنطقية.
نبدأ في الاختبار ، وإجراء مكالمة على رقم خارجي و ... نحصل على الخبز ، أو بالأحرى حفرة من الخبز. فجأة!
نبدأ في تحليل السجل في وحدة التحكم أو من خلال Log Viewer FusioPBX.
نرى دعوتنا:
switch_channel.c:1104 New Channel sofia/internal/1010@domain.local
نرى 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/1010@domain.local [CS_ROUTING] [NO_ROUTE_DESTINATION]
لا طريق! على الرغم من أن الطريق سجلنا بصدق.
الجواب بسيط حقا.
لقد حان الدعوة. غاب دوري أبطال آسيا. ونظرًا لأن ACL مرتبط بالملف الشخصي الداخلي ، وهذا الملف الشخصي في السياق العام ، فإن FreeSWITCH تنظر بصدق إلى التوجيه في السياق العام. ولكن في سياق الجمهور ، لا يوجد سوى توجيه وارد ، والنظام يخبرنا بصدق أنه لا توجد طرق للمدينة هناك.
هناك طريقتان على الأقل للخروج من هذا الموقف.
- نعلق هذا ACL ليس إلى الملف الشخصي ، ولكن إلى الرقم الداخلي. قد تكون هذه هي الطريقة الصحيحة للحل ، لأن يجب أن تكون قوائم ACL مرتبطة بأقرب وقت ممكن للضبط الدقيق. أي يمكنك تحديد عنوان / عنوان شبكة معين للهاتف يمكنه من خلاله إجراء مكالمة صادرة. عيب هذا الخيار هو أنه في كل ملحق عليك القيام بذلك.
- قم بتصحيح ACL بحيث يعمل بشكل صحيح على مستوى ملف التعريف. لقد اخترت هذا الخيار ، لأن إضافة شبكة إلى قائمة التحكم في الوصول (ACL) بدا لي أسهل من كتابتها في كل ملحق. ولكن هذا هو خصيصا لمهمتي. بالنسبة للمهام الأخرى ، قد تحتاج إلى منطق قرار مختلف.
و كذلك. دعونا إصلاح مجالات ACL على النحو التالي:
المجالات العمل الافتراضي: سماح
في المجالات ACL- قائمة قمنا بتعيين الشبكة:
رفض 192.168.0.0/24
تطبيق reloadacl.
نختبر: نطلب مرة أخرى الرقم 98343379xxxx و ... يذهب CPV ... ALLO. كل شيء يعمل.
نحن ننظر إلى ما حدث في FreeSWITCH:
تبدأ المكالمة:
switch_channel.c:1104 New Channel sofia/internal/1010@domain.local
دوري أبطال آسيا لم تفوت:
[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/1010@domain.local Regex (PASS) [Sity] destination_number(98343379xxxx) =~ /^9(8343[23]\d{6})$/ break=on-false
لقد مر التوجيه ، ومن ثم يتم تأسيس اتصال يتجاوز نطاق الموضوع.
إذا قمنا بتغيير عنوان الشبكة في قائمة التحكم في الوصول (ACL) ، ولكن حصلنا على الصورة من الاختبار الأول ، أي سيتم تخطي استدعاء ACL وسيشير التوجيه إلى NO_ROUTE_DESTINATION.
ربما هذا كل ما أردت إضافته على FusionPBX ACL.
آمل أن يأتي شخص في متناول اليدين.