기술 가이드

Asterisk를 사용한 첫 PBX 솔루션 설치 방법

5 min read VoIP 업데이트됨 28 Sep 2025
Asterisk로 첫 PBX 설치 가이드
Asterisk로 첫 PBX 설치 가이드

중요: 이 문서는 예시 구성과 오래된 Asterisk 버전(예: 1.4)을 기준으로 합니다. 실제 프로덕션 배포 시 최신 안정 버전 사용과 추가 보안 조치(TLS, SRTP, 방화벽 설정, fail2ban 등)를 권장합니다.

개요

Asterisk는 널리 사용되는 오픈소스 PBX 엔진입니다. 다양한 GUI(예: FreePBX)와 통합할 수 있고, SIP 기반 클라이언트, ATA, 소프트폰과 호환됩니다. 이 문서는 소규모 사무실이나 실험용으로 로컬 서버에 Asterisk를 직접 설치하고 기본 기능을 구성하는 방법을 설명합니다.

사전 준비

  • 운영체제: 커널 2.6 이상(헤더 파일 필요). 최신 배포판을 권장합니다. 헤더 설치 예: Debian/Ubuntu의 경우 linux-headers-$(uname -r) 설치.
  • 컴파일 도구: gcc 및 필수 라이브러리(termcap, openssl 등).
  • 데이터베이스 연동(옵션): asterisk-addons 컴파일을 위해 MySQL 개발 헤더(libmysqlclient-dev 등) 설치.
  • 파일 위치 가정: 예제는 모든 소스 파일을 /usr/src/에 복사했다고 가정합니다.

Note: Asterisk는 C로 작성되었으므로 빌드 시 위 도구와 헤더가 필요합니다.

다운로드할 파일 목록

  1. Zaptel
  2. libpri
  3. asterisk
  4. asterisk-sounds
  5. asterisk-addons

(원본 tarball 파일명은 환경에 따라 다를 수 있습니다.)

설치 단계(요약)

아래는 원본 문서의 순서를 보존한 설치 명령의 예시입니다. /usr/src/에 소스 tarball을 풀었다고 가정합니다.

  1. tar -xzf zaptel-1.4.12.1.tar.gz
  2. tar -xzf libpri-1.4.9.tar.gz
  3. tar -xzf asterisk-1.4.20.tar.gz
  4. tar -xzf asterisk-sounds-1.2.1.tar.gz
  5. tar -xzf asterisk-addons-1.4.7.tar.gz
  6. cd zaptel-1.4.12.1
  7. ./configure
  8. make
  9. make install
  10. make config
  11. service zaptel start
  12. cd ..
  13. cd libpri-1.4.9
  14. make
  15. make install
  16. cd ..
  17. cd asterisk-1.4.20
  18. ./configure
  19. make
  20. make install
  21. make samples
  22. make config
  23. cd ..
  24. cd asterisk-sounds
  25. make install
  26. cd ..
  27. cd asterisk-addons-1.4.7
  28. ./configure
  29. make
  30. make install
  31. service asterisk start

설치가 모두 성공하면 시스템에 Asterisk 서비스가 동작합니다. 빌드/설치 중 오류가 발생하면 컴파일 로그를 확인하고 누락된 개발 헤더나 의존성을 설치하세요.

첫 SIP 확장자 만들기

다음 내용을 /etc/asterisk/sip.conf에 추가합니다. 템플릿([common])을 만들고 5개의 확장자를 정의하는 예시입니다.

[common](!) ; this is template.
type=friend
context=internal
host=dynamic
disallow=all
allow=ulaw
allow=alaw
allow=g723
allow=g729
dtmfmode=rfc2833

[1000](common)
username=1000
secret=1000

[1001](common)
username=1001
secret=1001

[1002](common)
username=1002
secret=1002

[1003](common)
username=1003
secret=1003

[1004](common)
username=1004
secret=1004

ALT 텍스트(이미지 없음).

설명: 위 설정으로 SIP 클라이언트(x-lite, 소프트폰, Cisco SIP 전화 등)가 등록 가능해집니다. 초기 설정 단계에서는 방화벽/네트워크 필터를 비활성화해 테스트하세요(테스트 후 반드시 재구성).

기본 다이얼플랜(호 연결)

모든 확장자가 서로 통화하려면 다이얼플랜이 필요합니다. /etc/asterisk/extensions.conf에 다음을 추가하세요.

[internal]
exten=> _XXXX,1,Dial(SIP/${EXTEN})

이제 4자리 내선번호(예: 1000~1004)끼리 통화할 수 있습니다.

첫 SIP 트렁크 구성(아웃바운드/인바운드)

외부 발신을 위해서는 트렁크 제공자(ITSP)가 필요하고, 인바운드를 받으려면 공인 IP 또는 포트 포워딩이 필요합니다. sip.conf에 트렁크 섹션을 추가하세요.

[trunk]
type=friend
context=internal
host=
disallow=all
allow=ulaw
allow=alaw
allow=g723
allow=g729
dtmfmode=rfc2833

업데이트된 sip.conf 전체 예시는 아래와 같습니다.

[common](!) ; this is template.
type=friend
context=internal
host=dynamic
disallow=all
allow=ulaw
allow=alaw
allow=g723
allow=g729
dtmfmode=rfc2833

[1000](common)
username=1000
secret=1000

[1001](common)
username=1001
secret=1001

[1002](common)
username=1002
secret=1002

[1003](common)
username=1003
secret=1003

[1004](common)
username=1004
secret=1004

[trunk]
type=friend
context=internal
host=
disallow=all
allow=ulaw
allow=alaw
allow=g723
allow=g729
dtmfmode=rfc2833

extensions.conf에 아웃바운드 라우트 하나를 추가하세요:

exten => _XXXXXXX.,1,Dial(SIP/trunk1/${EXTEN})

최종 extensions.conf 예:

[internal]
exten=> _XXXX,1,Dial(SIP/${EXTEN})
exten => _XXXXXXX.,1,Dial(SIP/trunk1/${EXTEN})

이제 로컬 확장자에서 외부 번호로 발신될 수 있습니다(트렁크 제공자와의 인증/라우팅 설정 필요).

배포 체크리스트(관리자용)

  • 최신 OS 패치 적용
  • 커널 헤더 및 빌드 도구 설치
  • 필요한 개발 라이브러리 설치(libssl-dev, libncurses-dev 등)
  • Asterisk 최신 안정 버전 사용 여부 확인
  • SIP 비밀번호 강도 확인(랜덤·충분 길이)
  • RTP 포트 범위(기본 10000-20000 UDP) 방화벽 허용 및 NAT 설정
  • fail2ban 또는 IP 차단 규칙 설정
  • TLS/SRTP를 통해 미디어/시그널 암호화 고려

보안 강화 권장사항

  • SIP 인증에 강력한 비밀번호 사용, 가능하면 digest 인증 외 추가 인증 적용
  • SIP를 public하게 노출할 경우 TLS(시그널)와 SRTP(미디어) 사용 권장
  • RTP 포트 범위를 방화벽에서 제한하고 포트 포워딩은 필요한 경우에만 설정
  • fail2ban로 반복 실패한 등록/인증 시 차단
  • 제공자와의 트렁크는 IP 제한 또는 인증 토큰 사용

테스트 케이스 및 수락 기준

  1. 확장자 등록: SIP 클라이언트가 등록되면 Asterisk CLI에서 상태 확인(asterisk -rvv -> sip show peers).
    • 수락 기준: 등록 상태가 ‘OK’로 표시되고, 레이턴시 없이 등록됨.
  2. 내부 통화: 1000 -> 1001 통화 시 두 방향 오디오 확인.
    • 수락 기준: 양방향 음성 연결, DTMF 전달 확인.
  3. 아웃바운드: 내부 확장자에서 외부 번호로 발신 성공.
    • 수락 기준: 트렁크를 통해 외부 회선 연결되고 오디오 전달 확인.
  4. 인바운드: 외부 번호로 걸려오는 통화가 내부 확장자로 라우팅됨.
    • 수락 기준: 외부에서 걸어 들어온 통화가 지정된 다이얼플랜으로 연결.

문제해결(가입/통화 실패 시 체크리스트)

  • 방화벽/포트 포워딩: SIP(UDP 5060, TLS 5061)와 RTP(예: UDP 10000-20000)를 확인.
  • NAT: NAT 환경이면 외부 IP와 localnet, externip/externaddr 설정 검토(sip.conf에서).
  • 코덱 불일치: allow 항목에 동일한 코덱(ulaw/alaw 등)이 양쪽에 있는지 확인.
  • 인증 실패: 비밀번호/username 확인, asterisk 로그(/var/log/asterisk/messages)와 CLI에서 sip debug로 상세 확인.
  • 트렁크 문제: 제공자 IP, 포트, 인증 방식 확인. 제공자 문서와 일치하는지 검토.

대안 및 확장 방안

  • GUI 관리: FreePBX, Issabel 등 GUI를 사용하면 설정/루팅/전화번호 관리가 쉬워집니다.
  • 클라우드 PBX: 초기 구축 부담을 줄이려면 클라우드 기반 VoIP(호스팅 Asterisk 또는 SaaS PBX) 고려.
  • 상용 SBC(Session Border Controller) 도입으로 SIP 보안·호처리 기능 강화.

배포 방법론(간단한 단계)

  1. 테스트 환경(격리된 네트워크)에 설치 및 기본 기능 검증
  2. 보안 설정 적용(TLS/SRTP, 방화벽, fail2ban)
  3. 로드/품질 테스트(동시 통화, 네트워크 품질 영향 확인)
  4. 운영 전용 공인 IP 또는 NAT 포워딩 구성
  5. 운영 전 모니터링·로그 수집 설정

결정 트리: 트렁크 설정 필요 여부

flowchart TD
  A[외부 발신/수신 필요?] -->|예| B{공인 IP 보유 여부}
  B -->|예| C[직접 트렁크 구성]
  B -->|아니오| D[포트 포워딩 또는 클라우드 트렁크 사용]
  A -->|아니오| E[내선 전용 PBX]

자주 묻는 질문

Q: Asterisk 1.4를 반드시 사용해야 하나요? A: 아니요. 가능한 경우 최신 안정 버전(Asterisk 18/20 등)을 사용하세요. 보안·호환성 개선이 있습니다.

Q: NAT 환경에서 SIP 등록이 되지 않습니다. 무엇을 확인해야 하나요? A: sip.conf의 externaddr/externip, localnet 설정과 RTP 포트 포워딩을 확인하세요. sip debug를 통해 패킷 흐름을 점검합니다.

Q: G.729 같은 코덱 사용 시 라이선스는 어떻게 되나요? A: 상용 코덱은 라이선스가 필요할 수 있습니다. 코덱의 라이선스 정책을 확인하세요.

문의: Gventure


요약

  • Asterisk 설치에는 커널 헤더, 개발 라이브러리, 그리고 빌드 도구가 필요합니다.
  • sip.conf와 extensions.conf의 기본 예제로 내선, 다이얼플랜, 트렁크를 구성할 수 있습니다.
  • 보안(비밀번호, TLS/SRTP, 방화벽)과 NAT 설정은 매우 중요합니다.
  • 테스트 케이스와 체크리스트를 통해 배포 전 기능·보안 점검을 권장합니다.
공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

안드로이드용 콜 오브 듀티 모바일 설치 가이드
게임 가이드

안드로이드용 콜 오브 듀티 모바일 설치 가이드

Microsoft Store 자동 앱 업데이트 차단 가이드
Windows

Microsoft Store 자동 앱 업데이트 차단 가이드

유튜브 시청 기록 확인·삭제·자동삭제·일시정지 가이드
개인정보 보호

유튜브 시청 기록 확인·삭제·자동삭제·일시정지 가이드

Asterisk로 첫 PBX 설치 가이드
VoIP

Asterisk로 첫 PBX 설치 가이드

Microsoft Store 작동하지 않을 때 해결 방법
윈도우

Microsoft Store 작동하지 않을 때 해결 방법

WordPress 보안 스캔 가이드: 핵심 방법과 체크리스트
워드프레스 보안

WordPress 보안 스캔 가이드: 핵심 방법과 체크리스트