์ ๊ธฐ์ฌ๋ ์ ํ์ ๋ํ ์ ์ฒด์ ์ธ ์ค๋ช
์ด ์๋๋ผ, ์ข์ ์ถํ๋ฌผ์ธ "FusionPBX, ๋๋ FreeSWITCH"์ ๋ํ ๊ฐ๋ตํ ์ค๋ช
์ผ ๋ฟ์
๋๋ค. FusionPBX์ ACL ์ฃผ์ ๋ฅผ ์ ๋ค๋ฃจ๊ณ ์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์ ๋ FreeSWITCH/FusionPBX์ ๋ํ ์ ์ ๊ฒฝํ์ ํ ๋๋ก ์ด๋ฌํ ์ฐจ์ด๋ฅผ ๋ฉ์ฐ๋ ค๊ณ ๋
ธ๋ ฅํ ๊ฒ์
๋๋ค.
๋ฐ๋ผ์ domain.local ๋๋ฉ์ธ์ ๋ฑ๋ก๋ ๋ด๋ถ ๋ฒํธ 1010์ด ์๋ FusionPBX๋ฅผ ์ค์นํ๊ณ ๋์๋ก์ ์ธ๋ถ ํตํ๋ฅผ ์ํ ๊ฒฝ๋ก๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์น์ธ๋์ง ์์ ์ ํ๋ก ์ธํด ๋์ ํ์ณ๊ฐ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ACL์ ์ฌ์ฉํฉ๋๋ค. ์ ๊ฒ๋ค. ACL์ ์ค๋ช
๋ ๋คํธ์ํฌ์์๋ง ๋ฐ์ ํตํ๋ฅผ ํ์ฉํฉ๋๋ค. ์ฌ๊ธฐ์๋ FusionPBX์์ ACL์ด ์๋ํ๋ ๋ฐฉ์, ๊ธฐ๋ฅ, ๋
ผ๋ฆฌ ๋ฐ ์ฐ๊ฒฐ ์ง์ ์ ๋ํด ์๋ฒฝํ๊ฒ ์ดํดํด์ผ ํฉ๋๋ค.
์ ๊ธฐ์ฌ๋ฅผ ์ด ์กด๊ฒฝํ๋ ์ ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ญ์ ACL๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๋ถ์์ ๊ฒช์์ต๋๋ค.
๋๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค. SipProfiles.
๋ ๊ฐ์ง ํ๋กํ(์ ๋ ์ด๋ ๊ฒ ๋ถ๋ฅด๊ฒ ์ต๋๋ค)์ ๋ชจ๋ ๋ด๋ถ์ , ์ธ๋ถ์ ์ธก๋ฉด์์ ๋์ค์ ๋งฅ๋ฝ์ ์์ผ๋ฉฐ, ์ด๋ ์ฐ์ฐ์ด ์๋๋๋ค. ์ซ์์ ๋ฑ๋ก์ ๋ด๋ถ ํ๋กํ์์ ์ด๋ฃจ์ด์ง๋ฉฐ, ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ผ ๊ฒ์
๋๋ค. ๋ด๋ถ ํ๋กํ์์ ๋๋ฉ์ธ ACL์ apply-inbound-acl๋ก ๋ฐ์ธ๋ฉ๋ฉ๋๋ค. ์ด ๋ผ์ธ์ ํ๋กํ ์์ค์์ ACL์ ์๋์ ๋ด๋นํฉ๋๋ค. ์ด์ ํ๋กํ์ ๋ํ ์ค๋ช
์ ๋ชจ๋ ๋๋ฌ์ต๋๋ค.
๋ฌธ๋งฅ
ํตํ ๋ผ์ฐํ ์์๋ ์ปจํ ์คํธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ชจ๋ ์์ ๊ฒฝ๋ก๋ ๊ณต๊ฐ ์ปจํ ์คํธ์ ๋ฐ์ธ๋ฉ๋ฉ๋๋ค.
๋ฐ์ ๊ฒฝ๋ก(๋์, ํด๋์ ํ, ์ฅ๊ฑฐ๋ฆฌ, ๊ตญ์ ๋ฑ)๋ (๊ธฐ๋ณธ์ ์ผ๋ก) ์ด๋ฆ ์ปจํ ์คํธ ๋ด์ ํ์๋ฉ๋๋ค. ๋๋ฉ์ธ (์ด ๋๋ฉ์ธ์ domain.local์ด๋ผ๊ณ ๋ถ๋ฅด๊ฒ ์ต๋๋ค.)
ACL
์ด์ ACL์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ก ์ค์น๋ FusionPBX์๋ ๋ ๊ฐ์ ACL์ด ์์ต๋๋ค.
๋๋ฉ์ธ ๊ธฐ๋ณธ ์์
: ๊ฑฐ๋ถ - ์ด ์ํธ๋ ๋ด๋ถ ํ๋กํ์ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค.
lan ๊ธฐ๋ณธ ๋์: ํ์ฉ
ACL ๋ชฉ๋ก ๋๋ฉ์ธ์ ๋คํธ์ํฌ๋ฅผ ์์ฑํฉ๋๋ค(์: 192.168.0.0/24). ์ด ๋คํธ์ํฌ์ ํ์ฉ ๊ถํ์ ๋ถ์ฌํ๊ณ reloadacl์ ์ฌ์ฉํฉ๋๋ค.
๋ค์์ผ๋ก ์ด ๋คํธ์ํฌ์์ ์ ํ๋ฅผ ๋ฑ๋กํ๋๋ฐ, ๋ชจ๋ ๊ฒ์ด ์ ์งํ๋๊ณ ์๊ณ ์ง์์ ๋
ผ๋ฆฌ์ ๋ง๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ฐ๋ฆฌ๋ ํ
์คํธ๋ฅผ ์์ํ๊ณ ์ธ๋ถ ๋ฒํธ๋ก ์ ํ๋ฅผ ๊ฑธ์๊ณ ... ๋๋์ ์ป์์ต๋๋ค. ์๋, ๋๋์ ๊ตฌ๋ฉ์ด ์๊ฒผ์ต๋๋ค. ๊ฐ์๊ธฐ!
์ฝ์์ด๋ 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์ด ๋์ณค์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ACL์ด ๋ด๋ถ ํ๋กํ์ ๋ฐ์ธ๋ฉ๋์ด ์๊ณ , ์ด ํ๋กํ์ด ๊ณต๊ฐ ์ปจํ ์คํธ์ ์๊ธฐ ๋๋ฌธ์ FreeSWITCH๋ ๊ณต๊ฐ ์ปจํ ์คํธ์์ ๋ผ์ฐํ ์ ์ ์งํ๊ฒ ์ดํด๋ด ๋๋ค. ํ์ง๋ง ๊ณต๊ณต์ ๋งฅ๋ฝ์์๋ ๋ค์ด์ค๋ ๊ฒฝ๋ก๋ง ์๊ณ , ์์คํ ์ ์ ์งํ๊ฒ ๋์๋ก ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์๋ค๊ณ ๋งํฉ๋๋ค.
์ด ์ํฉ์์ ๋ฒ์ด๋ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ์ด๋ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ์ด ACL์ ํ๋กํ์ด ์๋ ๋ด๋ถ ๋ฒํธ ์์ฒด์ ์ฒจ๋ถํ์ธ์. ์ด๊ฒ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ผ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ๋์ฑ ์ธ๋ฐํ ์ฌ์ฉ์ ์ ์๋ฅผ ์ํด ACL์ ํ์ฅ ๊ธฐ๋ฅ์ ์ต๋ํ ๊ฐ๊น๊ฒ ๋ฐ์ธ๋ฉํ๋ ๊ฒ์ด ๋ ์ข๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ ๊ฒ๋ค. ๋ฐ์ ํตํ๊ฐ ๊ฐ๋ฅํ ์ ํ๊ธฐ์ ํน์ ์ฃผ์/๋คํธ์ํฌ ์ฃผ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์ด ์ต์ ์ ๋จ์ ์ ๊ฐ ํ์ฅ ํ๋ก๊ทธ๋จ์์ ์ด ์์ ์ ์ํํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
- ACL์ ์์ ํ์ฌ ํ๋กํ ์์ค์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋๋ก ํฉ๋๋ค. ์ด ์ต์ ์ ์ ํํ ์ด์ ๋ ๊ฐ ํ์ฅ์ ๋คํธ์ํฌ๋ฅผ ๋ฑ๋กํ๋ ๊ฒ๋ณด๋ค ACL์ ๋คํธ์ํฌ๋ฅผ ํ ๋ฒ ์ถ๊ฐํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ๊ฒ ๊ฐ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง ์ด๊ฑด ํน๋ณํ ์ ์ ๋ฌด๋ฅผ ์ํ ๊ฑฐ์์. ๋ค๋ฅธ ์์ ์๋ ๋ค๋ฅธ ์์ฌ๊ฒฐ์ ๋ ผ๋ฆฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
๊ทธ๋์. ACL ๋๋ฉ์ธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํด ๋ณด๊ฒ ์ต๋๋ค.
๋๋ฉ์ธ ๊ธฐ๋ณธ ๋์: ํ์ฉ
ACL ๋ชฉ๋ก ๋๋ฉ์ธ์์ ๋คํธ์ํฌ๋ฅผ ์ง์ ํฉ๋๋ค.
๊ฑฐ๋ถ 192.168.0.0/24
์ฐ๋ฆฌ๋ ์ฌ๋ก๋ฉ์ ์ ์ฉํฉ๋๋ค.
ํ
์คํธํด ๋ด
์๋ค: 98343379ั
ั
ั
ั
๋ฒํธ๋ก ๋ค์ ์ ํ๋ฅผ ๊ฑธ์ด๋ณด์ธ์. ๊ทธ๋ฌ๋ฉด ๋ค์ด์ผ ํค์ด "์๋
ํ์ธ์"๋ก ๋ค๋ฆฝ๋๋ค. ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค.
FreeSWITCH์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํตํ๊ฐ ์์๋ฉ๋๋ค:
switch_channel.c:1104 New Channel sofia/internal/1010@domain.localACL์ด ํต๊ณผ๋์ง ์์์ต๋๋ค:
[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์ด๋ผ๊ณ ๋งํ ๊ฒ์ ๋๋ค.
์๋ง๋ ์ด๊ฒ์ด ์ ๊ฐ ACL FusionPBX์ ๋ํด ์ถ๊ฐํ๊ณ ์ถ์๋ ์ ๋ถ์ผ ๊ฒ๋๋ค.
์ด๊ฒ์ด ๋๊ตฐ๊ฐ์๊ฒ ์ ์ฉํ์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
์ถ์ฒ : habr.com
