FusionPBX və ACL

Mənim məqaləm məhsulun tam təsviri deyil, yalnız "FusionPBX və ya yenə də əla, FreeSWITCH" yaxşı nəşrinin bir qədər dəqiqləşdirilməsidir. Mənə elə gəlir ki, FusionPBX-də ACL mövzusu orada çox yaxşı açıqlanmayıb. Mən FreeSWITCH/FusionPBX ilə öz təcrübəmə əsaslanaraq bu boşluğu doldurmağa çalışacağam.

Beləliklə, bizdə domain.local domenində qeydiyyatdan keçmiş daxili nömrə 1010 olan quraşdırılmış FusionPBX və şəhərə xarici zənglər üçün konfiqurasiya edilmiş marşrut var. Biz telefon sistemimizi pulumuzu əlimizdən alacaq icazəsiz zənglərdən qorumaq üçün ACL-dən istifadə edirik. Bunlar. yalnız ACL-də təsvir edilən şəbəkələrdən gedən zənglərə icazə verir. Və burada ACL-nin FusionPBX-də necə işlədiyini, onun xüsusiyyətlərini, məntiqini və lövbər nöqtəsini tam aydın başa düşməlisiniz.

Yuxarıdakı məqalənin hörmətli müəllifi kimi, mən də ACL ilə əlaqəli bütün dırmıqlara basdım.

ilə başlayacağam SipProfiles.
Həm daxili, həm də xarici profillərin hər ikisi (onları belə adlandıracağam) İctimai kontekstdədir və bu təsadüfi deyil. Nömrələrin qeydiyyatı daxili profildə aparılır və biz buna diqqət yetirəcəyik. Daxili profildə ACL domenləri tətbiq-inbound-acl kimi bağlıdır. ACL-nin profil səviyyəsində işləməsinə cavabdeh olan bu xəttdir. İndiyə qədər profillərlə belədir.

Kontekst

Kontekst, başqa şeylərlə yanaşı, zəng yönləndirməsində istifadə olunur. Bütün daxil olan marşrutlar İctimai kontekstlə bağlıdır.

Gedən (şəhərə, mobil rabitəyə, uzun məsafəyə, beynəlxalq və hər hansı digər) marşrutlar (defolt olaraq) domen adı kontekstindədir (gəlin onu domain.local adlandıraq).

ACL

İndi ACL ilə məşğul olaq. Varsayılan olaraq, təzə quraşdırılmış FusionPBX-də iki ACL var:

domenlərin defolt hərəkəti: rədd et - bu vərəq daxili profilə bağlıdır
lan default fəaliyyət: icazə

Domenlərin ACL siyahısında biz şəbəkəni təyin edirik (yaxşı, məsələn, 192.168.0.0/24), biz bu şəbəkəyə icazə veririk, reloadacl istifadə edirik.

Sonra, bu şəbəkədən bir telefonu qeydiyyatdan keçiririk və hər şey qaydasında və təlimatlara uyğun olaraq və məntiqlə görünür.
Test etməyə başlayırıq, xarici nömrəyə zəng edirik və ... bir pişi, daha doğrusu pişi çuxuru alırıq. Birdən!

Konsolda və ya Log Viewer FusioPBX vasitəsilə jurnalı təhlil etməyə başlayırıq.

Problemimizi görürük:

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

İşləyən ACL-ni görürük:

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

Və daha çox:

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] 

Marşrut yoxdur! Baxmayaraq ki, marşrutu vicdanla qeyd etmişik.

Cavab həqiqətən sadədir.

Zəng gəldi. ACL bunu əldən verdi. ACL daxili profilə bağlandığından və bu profil ictimai kontekstdə olduğundan, FreeSWITCH ictimai kontekstdə marşrutlaşdırmaya vicdanla baxır. Ancaq ictimai kontekstdə yalnız gələn marşrutlaşdırma və sistem dürüstcə orada şəhərə heç bir marşrut olmadığını söyləyir.

Bu vəziyyətdən ən azı iki çıxış yolu var.

  1. Bu ACL-ni profilə deyil, daxili nömrənin özünə əlavə edin. Bu həll etməyin ən doğru yolu ola bilər, çünki. Daha incə tənzimləmə üçün ACL-ni Extension-a mümkün qədər yaxınlaşdırmaq daha yaxşıdır. Bunlar. telefonun gedən zəng edə biləcəyi xüsusi ünvan/şəbəkə ünvanını təyin edə bilərsiniz. Bu seçimin dezavantajı ondan ibarətdir ki, hər bir Uzatma bunu etməli olacaq.
  2. Profil səviyyəsində düzgün işləməsi üçün ACL-ni düzəldin. Mən bu seçimi seçdim, çünki mənə şəbəkəni ACL-ə bir dəfə əlavə etmək onu hər Genişlənmədə təyin etməkdən daha asan görünürdü. Amma bu, xüsusi olaraq mənim vəzifəm üçündür. Digər tapşırıqlar üçün fərqli qərar qəbul etmə məntiqinə ehtiyacınız ola bilər.

Belə ki. ACL domenlərini aşağıdakı kimi düzəldək:

domenlərin defolt hərəkəti: icazə verin

Domenlərin ACL siyahısında biz şəbəkəni qeyd edirik:

inkar 192.168.0.0/24

Tətbiq edin, yenidən yükləyin.
Test edirik: 98343379xxxx nömrəsini yenidən yığırıq və ... keçid məntəqəsi gəlir ... SALAM. Hər şey işləyir.
FreeSWITCH-də nə baş verdiyinə baxaq:
zəng başlayır:

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

ACL qaçırmadı:

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

və daha çox:

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 

Marşrutlaşdırma keçdi və sonra mövzunun əhatə dairəsindən kənarda olan əlaqə yaradılması gəlir.

Şəbəkə ünvanını ACL-də dəyişdirsək, ancaq ilk testdən şəkli alsaq, yəni. ACL zəngi atlayacaq və marşrutlaşdırma NO_ROUTE_DESTINATION deyəcək.

Yəqin ki, ACL FusionPBX-ə əlavə etmək istədiyim hamısı budur.

Ümid edirəm kiməsə faydalı olar.

Mənbə: www.habr.com

Добавить комментарий