[VOIP] Korea-WAN-VoIP

일본인 친구들과 이야기 하다보니, VoIP로 WAN을 만들 수 있지 않을까 싶어서 프로젝트를 시작 해봤다.

VoIP를 VPN을 묶어서 WAN으로 만들 수 있지 않을까? 생각 해보니, 이미 일본측에서는 해당 프로젝트를 진행하고 있었다.

한국쪽에서도 해당 프로젝트를 진행해보기 위해서, 디스코드 서버를 생성하였다.

Korea-WAN-VoIP

먼저, 용어 정리를 해보고 시작하자.

PBX : Private Branch Exchange 의 약자로, 내부 전화 교환 시스템을 의미한다.

자동응답, 내선연결, 외부 연결 등을 처리한다.

이 프로젝트에서 사용하는 PBX는 MIKOPBX를 사용한다.

Docker-compose로 간단히 올릴 수 있기에, 매우 편리하게 사용이 가능한 장점이 있다.

해당 글은 OS상에 Docker를 설치한 것을 가정하고 진행한다.

services:
  mikopbx:
    container_name: "mikopbx"
    image: "ghcr.io/mikopbx/mikopbx-x86-64"
    network_mode: "host"
    cap_add:
      - NET_ADMIN
    entrypoint: "/sbin/docker-entrypoint"
    hostname:  {Hostname}
    volumes:
      - /var/spool/mikopbx/cf:/cf
      - /var/spool/mikopbx/storage:/storage
    tty: true
    environment:
      - ID_WWW_USER=
      - ID_WWW_GROUP=
      - PBX_NAME={PBX_NAME}
      # Change the default SSH port to 23
      - SSH_PORT=23
      # Change the default WEB port to 8080
      - WEB_PORT=8080
      # Change the default WEB HTTPS port to 8443
      - WEB_HTTPS_PORT=8443

여기서 hostname, PBX_Name를 정해주고
docker compose up -d
로 해당 컨테이너를 실행시켜준다.

이후 8443 포트로 접속을 하면 된다.

먼저, 새로 설치 한 mikoPBX는 이것저것 테스트(?) Config가 남아 있기에 제거해준다.

여기서 delete everything 입력하여, 기본 값을 지우고 셋팅을 시작.

이후, 외부 서버와 함께 Call routing을 하기 위해 SIP 설정을 2개를 해야한다.

SIP서버 설정

Call routing -> Telephony provider -> Connect SIP
위 메뉴에서 SIP을 생성한다.

먼저, 외부에서 전화를 "수신" 할 설정을 먼저 한다.

Provider Name -> From Any
Account Type -> Incoming Registeration
Username -> 자동생성
Password -> 자동생성

이후 Save Settings로 먼저 "수신" SIP을 생성한다.

추후에 외부에 IP(tailscale Priave IP) + Username + Password를 제공하면 내 PBX에 접속 할 수 있는 환경이 구축된다.

이제 발신 할 PBX (상대방 PBX)을 등록하는 방법은

Call routing -> Telephony provider -> Connect SIP

Provider Name -> 상대방 서버 이름-TEL
Account Type -> Outgoing Registartion
Provider host URL or IP address -> 상대방 서버 IP (Tailscale Priavte IP)
Username -> 제공 받은 ID
Password -> 제공 받은 PW

로 설정을 하면 양 PBX간 연동은 완료되었다.

이제, 내선 (Extenstions)를 생성한다.
Extenstions -> Add new extension
으로 새로운 내선을 추가한다.

추후에 SIP 프로그램에서 로그인 할 때에는 Extension이 Username이 되는 점을 참고바람.

이제 외부에서 받는 전화를 설정하자.

Incoming routing

Incoming routing은 외부에서 걸려오는 전화를 내선으로 연결해주는 라우팅이다.

공유 된 SIP중에 "From Any"를 공유 하였기 때문에, 1개의 룰만 생성하면 도니디ㅏ.

Call Routing -> Incoming routing -> Add a new Rule

위와 같이 설정한다.

Provider : From-Any
The call wiil be forwared to -> Direct to employee (match by DID)

로 설정을 하면 외부에서 들어오는 수신설정은 완료되었다.

Outbound routing

발신 전화를 라우팅 하는 섹션이다.

Call Routing -> Outgoing routing
Rule name : Friend-Tel
Number begins with : 상대방이 원하는 국번
The rest of the number consist of the specified number of digits : 비워두기
Before you start the call cut off "친국 국번의 자릿수" digits at the beginning of the number...

through the provider : 상대방 서버 이름-TEL

으로 설정하면 된다.

SIP Client

실제로 각자 Deivce (termial)에서 테스트를 해 볼수 있다.

IOS, Windows, macOS에서 테스트 한 클라이언트는
https://www.linphone.org/home/
을 사용하고있다.

Windows 기준
Third-party SIP account -> I understand ->
Username : 내선번호
Password : 내선번호의 비밀번호
Domain : mikoPBX의 서버 주소
Transport : UDP로 설정.

VoIP test

SIP client에서 000063 으로 연결을 하면, 자신이 사용중인 번호를 음성으로 안내 해준다.

Read more

[Yubikey] Yubikey 5C 사용기

최근에 Steam Account가 2FA를 사용해도 해킹을 당하는 일이 있어, 보안에 관심이 생겨 Yubikey를 하나 구입했다. Amazon.com에서 구매를 하였고, 해당 Hardware 키가 도착하여 리뷰를 작성한다. Yubikey Manager 자신이 사용하고 있는 OS상에서 사용할 Yubikey Manager를 다운받고 실행한다. Yubikey 5C NFC를 구매하였으므로, 해당 제품의 정보가 나오는 것을 볼 수 있다. Application -&

By dobob

[docker] VPN을 통하여 컨테이너 통신

먼저, 해당 프로젝트는 kawaii-beer의 프로젝트 중 발췌함. NAS에 docker를 설치하여, 해당 컨테이너를 VPN을 통하여 패킷을 전송할 수 있게 할 생각이다. 그래서 찾아본 방법이 vpn컨테이너와 service 컨테이너를 따로 둬서 service 컨테이너에서 발생하는 모든 traffic은 vpn컨테이너를 통해서 통신할 수 있게 하는 방법을 생각했다. 예시로 사용한 Service는 minIO이다. (망분리(?)) 그래서 사용한 image는 다음과

By dobob