Моя ΡΡ‚Π°Ρ‚ΡŒΡ β€” Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ описаниС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСбольшоС ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Β«FusionPBX, ΠΈΠ»ΠΈ снова-Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, FreeSWITCHΒ». МнС каТСтся Π² Π½Π΅ΠΉ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ раскрыта Ρ‚Π΅ΠΌΠ° ACL Π² FusionPBX. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ этот ΠΏΡ€ΠΎΠ±Π΅Π», исходя ΠΈΠ· собствСнного ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с FreeSWITCH/FusionPBX.

И Ρ‚Π°ΠΊ, ΠΈΠΌΠ΅Π΅ΠΌ установлСнный FusionPBX с зарСгистрированным Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 1010 Π² Π΄ΠΎΠΌΠ΅Π½Π΅ domain.local ΠΈ настроСнным ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠΌ для Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² Π³ΠΎΡ€ΠΎΠ΄. ACL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ систСму Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΈΠΈ ΠΎΡ‚ нСсанкционированных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ унСсут наши Π΄Π΅Π½Π΅ΠΆΠΊΠΈ. Π’.Π΅. Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· описанных Π² ACL сСтСй Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ исходящиС Π²Ρ‹Π·ΠΎΠ²Ρ‹. И здСсь Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ACL Π² FusionPBX, Π΅Π³ΠΎ особСнности, Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈ Ρ‚ΠΎΡ‡ΠΊΡƒ Π΅Π³ΠΎ привязки.

Как ΠΈ ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Π°Π²Ρ‚ΠΎΡ€ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, я Ρ‚Π°ΠΊ ΠΆΠ΅ наступил Π½Π° всС Π³Ρ€Π°Π±Π»ΠΈ, связанныС с ACL.

Начну с SipProfiles.
Оба профиля (Π±ΡƒΠ΄Ρƒ ΠΈΡ… Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ), ΠΈ internal, ΠΈ external находятся Π² контСкстС Public, ΠΈ это Π½Π΅ случайно. РСгистрация Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² происходит Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ internal, Π½Π° Π½Π΅Π³ΠΎ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. Π’ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ internal привязан ACL-лист domains ΠΊΠ°ΠΊ apply-inbound-acl. ИмСнно эта строчка ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ACL Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ профиля. Пока с профилями всё.

Context

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚, ΠΊΡ€ΠΎΠΌΠ΅ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². ВсС входящиС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ привязаны ΠΊ контСксту Public.

Π˜ΡΡ…ΠΎΠ΄ΡΡ‰ΠΈΠ΅ (Π² Π³ΠΎΡ€ΠΎΠ΄, Π½Π° сотовыС, ΠΌΠ΅ΠΆΠ΄ΡƒΠ³ΠΎΡ€ΠΎΠ΄ΠΊΠ°, ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄ΠΊΠ°, ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅) ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ находятся (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) Π² контСкстС ΠΈΠΌΠ΅Π½ΠΈ Π΄ΠΎΠΌΠ΅Π½Π° (Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ domain.local).

ACL

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с ACL. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ установлСнной FusionPBX Π΅ΡΡ‚ΡŒ Π΄Π²Π° ACL-листа:

domains дСйствиС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: deny β€” этот лист привязан ΠΊ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŽ internal
lan дСйствиС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: allow

Π’ ACL-лист domains прописываСм ΡΠ΅Ρ‚ΡŒ (Π½Ρƒ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ 192.168.0.0/24), Π΄Π΅Π»Π°Π΅ΠΌ этой сСти Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ allow, примСняСм 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 привязан Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŽ internal, Π° этот ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ находится Π² контСкстС public, FreeSWITCH чСстно смотрит ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² контСкстС public. Но Π² контСкстС public Ρ‚ΠΎΠ»ΡŒΠΊΠΎ входящая ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ, ΠΈ систСма чСстно Π½Π°ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Ρ‚Π°ΠΌ Π½ΠΈ ΠΊΠ°ΠΊΠΈΡ… ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Π² Π³ΠΎΡ€ΠΎΠ΄.

Из слоТившСйся ситуации Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄Π²Π° Π²Ρ‹Ρ…ΠΎΠ΄Π°.

  1. ΠŸΡ€ΠΈΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ этот ACL Π½Π΅ ΠΊ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŽ, Π° ΠΊ самому Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ Π½ΠΎΠΌΠ΅Ρ€Ρƒ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ самый ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ способ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ρ‚.ΠΊ. ACL Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ Extension для Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ настройки. Π’.Π΅. ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ адрСс/адрСс сСти Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ смоТСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ исходящий Π²Ρ‹Π·ΠΎΠ². ΠœΠΈΠ½ΡƒΡ этого Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Extension придСтся это Π΄Π΅Π»Π°Ρ‚ΡŒ.
  2. ΠŸΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ACL Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ профиля. Π― Π²Ρ‹Π±Ρ€Π°Π» ΠΈΠΌΠ΅Π½Π½ΠΎ этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΈΠ±ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΡΠ΅Ρ‚ΡŒ Π² ACL ΠΌΠ½Π΅ показалось ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Extension. Но это ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΏΠΎΠ΄ мою Π·Π°Π΄Π°Ρ‡Ρƒ. Для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΡƒΠΆΠ½Π° другая Π»ΠΎΠ³ΠΈΠΊΠ° принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

И Ρ‚Π°ΠΊ. ΠŸΠΎΠΏΡ€Π°Π²ΠΈΠΌ ACL domains ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

domains дСйствиС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: allow

Π’ ACL-лист domains прописываСм ΡΠ΅Ρ‚ΡŒ:

deny 192.168.0.0/24

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ, reloadacl.
ВСстируСм: Π½Π°Π±ΠΈΡ€Π°Π΅ΠΌ снова Π½ΠΎΠΌΠ΅Ρ€ 98343379Ρ…Ρ…Ρ…Ρ… и… ΠΈΠ΄Ρ‘Ρ‚ ΠšΠŸΠ’β€¦ ΠΠ›Π›Πž. Всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.
Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ происходило Π² FreeSWITCH:
начинаСтся Π²Ρ‹Π·ΠΎΠ²:

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

ACL Π½Π΅ пропустил:

[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.

НадСюсь ΠΊΠΎΠΌΡƒ Π½ΠΈΠ±ΡƒΠ΄ΡŒ пригодится.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com