Makalem ürünün tam bir açıklaması değil, yalnızca "FusionPBX veya yine harika FreeSWITCH" adlı iyi yayının hafif bir iyileştirmesidir. Bana öyle geliyor ki FusionPBX'teki ACL konusu burada pek iyi açıklanmadı. FreeSWITCH/FusionPBX ile olan kendi deneyimlerime dayanarak bu boşluğu doldurmaya çalışacağım.
Ve böylece, domain.local etki alanında kayıtlı dahili numarası 1010 olan ve şehre yapılan harici aramalar için yapılandırılmış bir rotaya sahip kurulu bir FusionPBX'imiz var. Telefon sistemimizi paramızı çalacak yetkisiz çağrılara karşı korumak için ACL'leri kullanıyoruz. Onlar. yalnızca ACL'de açıklanan ağlardan yapılan aramalara izin verilir. Ve burada ACL'nin FusionPBX'te nasıl çalıştığını, özelliklerini, mantığını ve bağlantı noktasını tamamen net bir şekilde anlamanız gerekiyor.
Yukarıdaki makalenin saygın yazarı gibi ben de ACL ile ilgili tüm komisyonlara bastım.
İle başlayacağım SipProfilleri.
Hem iç hem de dış profillerin her ikisi de (onlara öyle diyeceğim) Kamusal bağlamdadır ve bu tesadüfi değildir. Numaraların kaydı dahili profilde gerçekleşir ve buna dikkat edeceğiz. Dahili profilde ACL etki alanları, application-inbound-acl olarak bağlanır. ACL'nin profil düzeyinde çalışmasından sorumlu olan bu hattır. Şu ana kadar profiller bu kadar.
bağlam
Çağrı yönlendirmede diğer şeylerin yanı sıra bağlam kullanılır. Tüm gelen rotalar Genel bağlama bağlıdır.
Giden aramalar (şehir içi, cep telefonu, şehirlerarası, uluslararası ve diğer tüm aramalar) varsayılan olarak adın bağlamı içinde yer alır. domain (Buna domain.local diyelim).
ACL
Şimdi ACL'lerle ilgilenelim. Yeni kurulan FusionPBX'in varsayılan olarak iki ACL'si vardır:
etki alanları varsayılan eylemi: reddet - bu sayfa dahili profile bağlıdır
LAN varsayılan eylemi: izin ver
Etki alanları ACL listesinde, ağı yazıyoruz (örneğin, 192.168.0.0/24), bu ağ için izin verme iznini veriyoruz, reloadacl'ı kullanıyoruz.
Daha sonra, bu ağdan bir telefon kaydediyoruz ve her şey yolunda, talimatlara göre ve mantıksal olarak görünüyor.
Test etmeye başlıyoruz, harici bir numarayı arıyoruz ve ... bir çörek, daha doğrusu bir çörek deliği alıyoruz. Birden!
Günlüğü konsolda veya Log Viewer FusioPBX aracılığıyla analiz etmeye başlıyoruz.
Zorluklarımızı görüyoruz:
switch_channel.c:1104 New Channel sofia/internal/1010@domain.localİşe yarayan ACL'yi görüyoruz:
sofia.c:10208 IP 192.168.0.150 Approved by acl "domains[]". Access Granted.Ve dahası:
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] Rota yok! Dürüstçe kaydettiğimiz rotaya rağmen.
Cevap gerçekten çok basit.
Çağrı geldi. ACL bunu kaçırdı. Ve ACL dahili profile bağlı olduğundan ve bu profil genel bağlamda olduğundan, FreeSWITCH dürüstçe yönlendirmeyi genel bağlamda ele alır. Ancak kamusal bağlamda yalnızca gelen yönlendirmeler var ve sistem bize dürüstçe orada şehre giden hiçbir yol olmadığını söylüyor.
Bu durumdan çıkmanın en az iki yolu var.
- Bu ACL'yi profile değil dahili numaranın kendisine ekleyin. En doğru çözüm yolu bu olabilir çünkü. Daha hassas ayar için ACL'yi Uzantıya mümkün olduğunca yakın bağlamak daha iyidir. Onlar. giden arama yapabileceği telefonun belirli bir adresini / ağ adresini belirleyebilirsiniz. Bu seçeneğin dezavantajı her Uzantının bunu yapmak zorunda olmasıdır.
- ACL'yi profil düzeyinde doğru çalışacak şekilde düzeltin. Bu seçeneği seçtim çünkü ağı ACL'ye bir kez eklemek, her Uzantıda belirtmekten daha kolay görünüyordu. Ama bu özellikle benim görevim için. Diğer görevler için farklı bir karar verme mantığına ihtiyacınız olabilir.
Bu yüzden. ACL domainlerini şu şekilde düzeltelim:
etki alanları varsayılan eylemi: izin ver
Etki alanları ACL listesinde ağı kaydediyoruz:
reddet 192.168.0.0/24
Uygula, yeniden yükle.
Test ediyoruz: 98343379xxxx numarasını tekrar çeviriyoruz ve ... kontrol noktası geliyor ... MERHABA. Her şey çalışıyor.
FreeSWITCH'te neler olduğuna bakalım:
çağrı başlıyor:
switch_channel.c:1104 New Channel sofia/internal/1010@domain.localACL kaçırmadı:
[DEBUG] sofia.c:10263 IP 192.168.0.150 Rejected by acl "domains". Falling back to Digest auth.ve dahası:
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 Yönlendirme geçti, ardından konunun kapsamı dışında kalan bağlantı kurulumu geliyor.
ACL'deki ağ adresini değiştirirsek ancak ilk testten resim alırsak, ör. ACL çağrıyı atlayacak ve yönlendirme NO_ROUTE_DESTINATION diyecektir.
Muhtemelen ACL FusionPBX'e eklemek istediğim tek şey buydu.
Umarım birisi için faydalı olur.
Kaynak: habr.com
