FusionPBX dhe ACL

Artikulli im nuk është një përshkrim i plotë i produktit, por vetëm një përsosje e lehtë e botimit të mirë "FusionPBX, ose përsëri-i shkëlqyer, FreeSWITCH". Më duket se tema e ACL në FusionPBX nuk është shpalosur shumë mirë në të. Do të përpiqem ta plotësoj këtë boshllëk bazuar në përvojën time me FreeSWITCH/FusionPBX.

Dhe kështu, ne kemi një FusionPBX të instaluar me një numër të brendshëm të regjistruar 1010 në domenin domain.local dhe një rrugë të konfiguruar për thirrjet e jashtme drejt qytetit. Ne përdorim ACL për të siguruar sistemin tonë të telefonisë nga thirrjet e paautorizuara që do të na marrin paratë. Ato. vetëm nga rrjetet e përshkruara në ACL lejojnë thirrjet dalëse. Dhe këtu ju duhet një kuptim plotësisht i qartë se si funksionon ACL në FusionPBX, veçoritë, logjikën dhe pikën e ankorimit të tij.

Ashtu si autori i respektuar i artikullit të mësipërm, edhe unë kam shkelur të gjitha raketat që lidhen me ACL.

Do të filloj me SipProfilet.
Të dy profilet (do t'i quaj kështu), si të brendshëm ashtu edhe të jashtëm, janë në kontekstin Publik dhe kjo nuk është e rastësishme. Regjistrimi i numrave bëhet në profilin e brendshëm dhe ne do t'i kushtojmë vëmendje. Në profilin e brendshëm, domenet ACL janë të lidhura si apliko-inbound-acl. Është kjo linjë që është përgjegjëse për funksionimin e ACL në nivelin e profilit. Deri tani, kaq me profilet.

Kontekst

Konteksti përdoret, ndër të tjera, në drejtimin e thirrjeve. Të gjitha rrugët hyrëse janë të lidhura me kontekstin Publik.

Rrugët dalëse (për në qytet, në celular, në distanca të gjata, ndërkombëtare dhe çdo tjetër) janë (sipas parazgjedhjes) në kontekstin e një emri domeni (le ta quajmë domain.local).

ACL

Tani le të merremi me ACL-të. Si parazgjedhje, një FusionPBX i sapo instaluar ka dy ACL:

veprimi i parazgjedhur i domeneve: mohoj - kjo fletë lidhet me profilin e brendshëm
Veprimi i parazgjedhur i lan: lejo

Në listën e domeneve ACL, ne përshkruajmë rrjetin (mirë, për shembull, 192.168.0.0/24), bëjmë lejen e lejimit për këtë rrjet, përdorim reloadacl.

Më pas, ne regjistrojmë një telefon nga ky rrjet, dhe gjithçka duket se është në rregull dhe sipas udhëzimeve dhe logjikisht.
Ne fillojmë testimin, bëjmë një telefonatë në një numër të jashtëm dhe ... marrim një donut, ose më mirë një vrimë donut. Papritur!

Ne fillojmë të analizojmë regjistrin në tastierë ose përmes Log Viewer FusioPBX.

Ne e shohim sfidën tonë:

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

Ne shohim ACL që funksionoi:

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

Dhe më tej:

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] 

Asnjë rrugë! Edhe pse itinerarin e kemi regjistruar sinqerisht.

Përgjigja është vërtet e thjeshtë.

Thirrja ka ardhur. ACL e humbi atë. Dhe meqenëse ACL është i lidhur në profilin e brendshëm, dhe ky profil është në kontekstin publik, FreeSWITCH shikon sinqerisht drejtimin në kontekstin publik. Por në kontekstin publik, vetëm itinerimi në hyrje, dhe sistemi na thotë sinqerisht se atje nuk ka rrugë për në qytet.

Ka të paktën dy mënyra për të dalë nga kjo situatë.

  1. Bashkangjisni këtë ACL jo me profilin, por me vetë numrin e brendshëm. Kjo mund të jetë mënyra më e saktë për të zgjidhur, sepse. Është më mirë të lidhni ACL sa më afër Extension për akordim më të mirë. Ato. ju mund të përshkruani një adresë specifike / adresë rrjeti të telefonit nga e cila mund të kryejë një telefonatë dalëse. Disavantazhi i këtij opsioni është se çdo Zgjerim do të duhet ta bëjë këtë.
  2. Fiksoni ACL në mënyrë që të funksionojë siç duhet në nivelin e profilit. Zgjodha këtë opsion, sepse më dukej më e lehtë të shtoja rrjetin në ACL një herë sesa ta përshkruaj atë në çdo Zgjerim. Por kjo është posaçërisht për detyrën time. Për detyra të tjera, mund t'ju duhet një logjikë tjetër vendimmarrëse.

Kështu që. Le të rregullojmë domenet ACL si më poshtë:

veprimi i parazgjedhur i domeneve: lejo

Në listën e domeneve ACL, ne regjistrojmë rrjetin:

mohoj 192.168.0.0/24

Aplikoni, ringarkoni.
Po testojmë: thërrasim përsëri numrin 98343379xxxx dhe ... po vjen pika e kontrollit ... PËRSHËNDETË. Gjithçka po funksionon.
Le të shohim se çfarë ndodhi në FreeSWITCH:
fillon thirrja:

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

ACL nuk humbi:

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

dhe më tej:

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 

Routing ka kaluar, dhe më pas vjen vendosja e lidhjes, e cila është përtej qëllimit të temës.

Nëse ndryshojmë adresën e rrjetit në ACL, por marrim foton nga testi i parë, d.m.th. ACL do ta kapërcejë telefonatën dhe itinerari do të thotë NO_ROUTE_DESTINATION.

Kjo është ndoshta gjithçka që doja të shtoja në ACL FusionPBX.

Shpresoj se do të jetë e dobishme për dikë.

Burimi: www.habr.com

Shto një koment