VoIP: (05.03) Hướng dẫn cài đặt FreeSwitch v1.6 trên CentOS 7 (64bit)

By , 0 View

Mục tiêu thực hành:
- Cài đặt các gói Update cho CentOS v7 trước khi cài đặt FreeSwitch v.1.6.
- Tiến hành download FreeSwitch v1.6 về CentOS v7.
- Cài đặt FreeSwitch v1.6 và các gói Sound cho FreeSwitch.
- Tạo tài khoản freeswitch thuộc nhóm daemon trên CentOS v7.
- Khởi tạo systemd unit file trên CentOS v7.
- Khởi động và kiểm tra dịch vụ freeswitch.service.
- Kiểm tra các Open Port đang mở trên FreeSwitch và CentOS v7.
- Kiểm tra trạng thái của FreeSwitch v1.6.
- Kiểm tra trạng thái Internal Sofia Status trên FreeSwitch.
- Kiểm tra trạng thái External Sofia Status trên FreeSwitch.

Các bước triển khai:
Cài đặt các gói Update cho CentOS v7 trước khi cài đặt FreeSwitch v.1.6.
- Cài đặt các gói Update cho CentOS v7.
yum update
yum -y install make bison bison-devel ncurses ncurses-devel zlib zlib-devel openssl openssl-devel gnutls-devel gcc gcc-c++ kernel-devel flex libxml2-devel which autoconf automake git-core libjpeg-devel libtool pkgconfig
yum install unixODBC-devel openssl-devel libogg-devel libvorbis-devel curl-devel libtiff-devel libjpeg-devel python-devel expat-devel zlib zlib-devel bzip2
yum install wget

- Cài đặt gói ncurses-5.6.
yum install ncurses-devel

or
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
tar zxvf ncurses-5.6.tar.gz
./configure -prefix=/usr/local -with-shared -without-debug
make
make install

Tiến hành download FreeSwitch v1.6 về CentOS v7.
cd /usr/src
rpm -Uvh http://files.freeswitch.org/freeswitch-release-1-6.noarch.rpm
yum install freeswitch-config-vanilla freeswitch-sounds* freeswitch-lang* freeswitch-lua freeswitch-xml-cdr
yum -y install git gcc-c++ autoconf automake libtool wget python ncurses-devel zlib-devel libjpeg-devel openssl-devel e2fsp
yum -y install libyuv-devel opus-devel libvpx-devel libvpx2* libdb4* libidn-devel unbound-devel libuuid-devel lua-devel lib

yum groupinstall -y 'Development Tools'
yum install -y git autoconf automake libtool gcc-c++ libuuid-devel zlib-devel libjpeg-devel ncurses-devel openssl-devel sqlite-devel curl-devel pcre-devel speex-devel ldns ldns-devel libedit-devel gtk+-devel gtk2-devel yasm-devel lua-devel opus-devel e2fsprogs-devel libyuv-devel lua-devel libsndfile-devel libshout-devel lame-devel libvpx-devel opusfile libbroadvoice-dev

wget http://files.freeswitch.org/freeswitch-1.6.20.zip
sudo yum install -y zip unzip
unzip /usr/src/freeswitch-1.6.20.zip

git clone https://github.com/yasm/yasm.git && cd yasm && ./autogen.sh && make && sudo make install
yum install -y  epel-release
yum install ldns-devel libidn-devel unbound-devel

Cài đặt FreeSwitch v1.6 và các gói Sound cho FreeSwitch.
cd /usr/src/freeswitch-1.6.20
./configure
make
make install
make install sounds-install
make install moh-install
make hd-sounds-install
make hd-moh-install
make uhd-sounds-install
make uhd-moh-install
make samples

Tạo tài khoản freeswitch thuộc nhóm daemon trên CentOS v7.
- Khởi tạo simlinks để thuận tiện cho việc sử dụng các dịch vụ services.
ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/
ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin

- Tạo mới Group và User với đặc quyền privileges thấp hơn để chạy FreeSWITCH service.
cd /usr/local
useradd --system --home-dir /usr/local/freeswitch -G daemon freeswitch
passwd -l freeswitch

chown -R freeswitch:daemon /usr/local/freeswitch/
chmod -R ug=rwX,o= /usr/local/freeswitch/
chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/

Khởi tạo systemd unit file trên CentOS v7.
- Khởi tạo mới file freeswitch.service.
vi /etc/systemd/system/freeswitch.service

- Nội dung của file freeswitch.service.
[Unit]
Description=freeswitch
Wants=network-online.target
Requires=network.target local-fs.target
After=network.target network-online.target local-fs.target

[Service]
Type=forking
Environment="DAEMON_OPTS=-nonat"
EnvironmentFile=-/etc/default/freeswitch
ExecStartPre=/bin/chown -R freeswitch:daemon /usr/local/freeswitch
ExecStart=/usr/bin/freeswitch -u freeswitch -g freeswitch -ncwait $DAEMON_OPTS
TimeoutSec=45s
Restart=always

User=root
Group=daemon
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=60000
LimitSTACK=250000
LimitRTPRIO=infinity
LimitRTTIME=infinity
IOSchedulingClass=realtime
IOSchedulingPriority=2
CPUSchedulingPolicy=rr
CPUSchedulingPriority=89
UMask=0007
NoNewPrivileges=false

[Install]
WantedBy=multi-user.target

Khởi động và kiểm tra dịch vụ freeswitch.service.
- Khởi động dịch vụ freeswitch.service.
chmod ugo+x /etc/systemd/system/freeswitch.service
systemctl start freeswitch.service
systemctl enable freeswitch.service
systemctl restart freeswitch.service

- Kiểm tra trại thái dịch vụ freeswitch.service.
[root@static local]# systemctl status freeswitch.service
● freeswitch.service - freeswitch
   Loaded: loaded (/etc/systemd/system/freeswitch.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-04-22 03:13:03 EDT; 11s ago
 Main PID: 45578 (freeswitch)
   CGroup: /system.slice/freeswitch.service
           └─45578 /usr/bin/freeswitch -u freeswitch -g freeswitch -ncwait -nonat

Apr 22 03:12:56 static.vnpt.vn systemd[1]: Starting freeswitch...
Apr 22 03:12:57 static.vnpt.vn freeswitch[45576]: 45578 Backgrounding.
Apr 22 03:13:03 static.vnpt.vn freeswitch[45576]: FreeSWITCH[45576] Waiting for background process pid:45578 to be ready.....
Apr 22 03:13:03 static.vnpt.vn freeswitch[45576]: FreeSWITCH[45576] Waiting for background process pid:45578 to be ready.....
Apr 22 03:13:03 static.vnpt.vn freeswitch[45576]: FreeSWITCH[45576] System Ready pid:45578
Apr 22 03:13:03 static.vnpt.vn systemd[1]: Started freeswitch.
[root@static local]# 

Kiểm tra các Open Port đang mở trên FreeSwitch và CentOS v7.
[root@static local]# netstat -tulnap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 10.10.10.188:8081       0.0.0.0:*               LISTEN      45578/freeswitch    
tcp        0      0 10.10.10.188:8082       0.0.0.0:*               LISTEN      45578/freeswitch    
tcp        0      0 10.10.10.188:7443       0.0.0.0:*               LISTEN      45578/freeswitch    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      16709/sshd          
tcp        0      0 10.10.10.188:5080       0.0.0.0:*               LISTEN      45578/freeswitch    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      16866/master        
tcp        0      0 10.10.10.188:5060       0.0.0.0:*               LISTEN      45578/freeswitch    
tcp        0      0 10.10.10.188:5066       0.0.0.0:*               LISTEN      45578/freeswitch    
tcp        0      0 10.10.10.188:22         118.69.66.40:59492      ESTABLISHED 76116/sshd: root@pt 
tcp6       0      0 ::1:8081                :::*                    LISTEN      45578/freeswitch    
tcp6       0      0 ::1:8082                :::*                    LISTEN      45578/freeswitch    
tcp6       0      0 :::8021                 :::*                    LISTEN      45578/freeswitch    
tcp6       0      0 :::22                   :::*                    LISTEN      16709/sshd          
tcp6       0      0 ::1:5080                :::*                    LISTEN      45578/freeswitch    
tcp6       0      0 ::1:25                  :::*                    LISTEN      16866/master        
tcp6       0      0 ::1:5060                :::*                    LISTEN      45578/freeswitch    
udp        0      0 10.10.10.188:5060       0.0.0.0:*                           45578/freeswitch    
udp        0      0 10.10.10.188:5080       0.0.0.0:*                           45578/freeswitch    
udp        0      0 0.0.0.0:1337            0.0.0.0:*                           45578/freeswitch    
udp        0      0 127.0.0.1:323           0.0.0.0:*                           23884/chronyd       
udp6       0      0 ::1:5060                :::*                                45578/freeswitch    
udp6       0      0 ::1:5080                :::*                                45578/freeswitch    
udp6       0      0 ::1:323                 :::*                                23884/chronyd       
[root@static local]#

Kiểm tra trạng thái của FreeSwitch v1.6.
[root@static local]# fs_cli –r
.=======================================================.
|            _____ ____     ____ _     ___              |
|           |  ___/ ___|   / ___| |   |_ _|             |
|           | |_  \___ \  | |   | |    | |              |
|           |  _|  ___) | | |___| |___ | |              |
|           |_|   |____/   \____|_____|___|             |
|                                                       |
.=======================================================.
| Anthony Minessale II, Ken Rice,                       |
| Michael Jerris, Travis Cross                          |
| FreeSWITCH (http://www.freeswitch.org)                |
| Paypal Donations Appreciated: paypal@freeswitch.org   |
| Brought to you by ClueCon http://www.cluecon.com/     |
.=======================================================.

.=======================================================================================================.
|    ____ _             ____                                                                            |
|   / ___| |_   _  ___ / ___|___  _ __                                                                  |
|  | |   | | | | |/ _ \ |   / _ \| '_ \                                                                 |
|  | |___| | |_| |  __/ |__| (_) | | | |                                                                |
|   \____|_|\__,_|\___|\____\___/|_| |_|                                                                |
|                                                                                                       |
|   _____    _            _                          ____             __                                |
|  |_   _|__| | ___ _ __ | |__   ___  _ __  _   _   / ___|___  _ __  / _| ___ _ __ ___ _ __   ___ ___   |
|    | |/ _ \ |/ _ \ '_ \| '_ \ / _ \| '_ \| | | | | |   / _ \| '_ \| |_ / _ \ '__/ _ \ '_ \ / __/ _ \  |
|    | |  __/ |  __/ |_) | | | | (_) | | | | |_| | | |__| (_) | | | |  _|  __/ | |  __/ | | | (_|  __/  |
|    |_|\___|_|\___| .__/|_| |_|\___/|_| |_|\__, |  \____\___/|_| |_|_|  \___|_|  \___|_| |_|\___\___|  |
|                  |_|                      |___/                                                       |
|   _____                           _                         _                                         |
|  | ____|_   _____ _ __ _   _     / \  _   _  __ _ _   _ ___| |_                                       |
|  |  _| \ \ / / _ \ '__| | | |   / _ \| | | |/ _` | | | / __| __|                                      |
|  | |___ \ V /  __/ |  | |_| |  / ___ \ |_| | (_| | |_| \__ \ |_                                       |
|  |_____| \_/ \___|_|   \__, | /_/   \_\__,_|\__, |\__,_|___/\__|                                      |
|                        |___/                |___/                                                     |
|                                       ____ _             ____                                         |
|  __      ____      ____      __      / ___| |_   _  ___ / ___|___  _ __         ___ ___  _ __ ___     |
|  \ \ /\ / /\ \ /\ / /\ \ /\ / /     | |   | | | | |/ _ \ |   / _ \| '_ \       / __/ _ \| '_ ` _ \    |
|   \ V  V /  \ V  V /  \ V  V /   _  | |___| | |_| |  __/ |__| (_) | | | |  _  | (_| (_) | | | | | |   |
|    \_/\_/    \_/\_/    \_/\_/   (_)  \____|_|\__,_|\___|\____\___/|_| |_| (_)  \___\___/|_| |_| |_|   |
|                                                                                                       |
.=======================================================================================================.

Type /help <enter> to see a list of commands

[This app Best viewed at 160x60 or more..]
+OK log level  [7]
freeswitch@static.vnpt.vn> /exit
[root@static local]# 

Kiểm tra trạng thái Internal Sofia Status trên FreeSwitch.
- Internal Profile cho phép các Internal Phone register tới FreeSwitch.
[root@static local]# fs_cli –r
freeswitch@static.vnpt.vn> sofia status
                     Name          Type                                       Data      State
=================================================================================================
            external-ipv6       profile                   sip:mod_sofia@[::1]:5080      RUNNING (0)
             10.10.10.188         alias                                   internal      ALIASED
                 external       profile            sip:mod_sofia@10.10.10.188:5080      RUNNING (0)
    external::example.com       gateway                    sip:joeuser@example.com      NOREG
            internal-ipv6       profile                   sip:mod_sofia@[::1]:5060      RUNNING (0)
                 internal       profile            sip:mod_sofia@10.10.10.188:5060      RUNNING (0)
=================================================================================================
4 profiles 1 alias

freeswitch@static.vnpt.vn> 

[root@static local]# fs_cli –r
freeswitch@static.vnpt.vn> sofia status profile internal
=================================================================================================
Name                    internal
Domain Name             N/A
Auto-NAT                false
DBName                  sofia_reg_internal
Pres Hosts              10.10.10.188,10.10.10.188
Dialplan                XML
Context                 public
Challenge Realm         auto_from
RTP-IP                  10.10.10.188
SIP-IP                  10.10.10.188
URL                     sip:mod_sofia@10.10.10.188:5060
BIND-URL                sip:mod_sofia@10.10.10.188:5060;transport=udp,tcp
WS-BIND-URL             sip:mod_sofia@10.10.10.188:5066;transport=ws
WSS-BIND-URL            sips:mod_sofia@10.10.10.188:7443;transport=wss
HOLD-MUSIC              local_stream://moh
OUTBOUND-PROXY          N/A
CODECS IN               OPUS,G722,PCMU,PCMA,VP8
CODECS OUT              OPUS,G722,PCMU,PCMA,VP8
TEL-EVENT               101
DTMF-MODE               rfc2833
CNG                     13
SESSION-TO              0
MAX-DIALOG              0
NOMEDIA                 false
LATE-NEG                true
PROXY-MEDIA             false
ZRTP-PASSTHRU           true
AGGRESSIVENAT           false
CALLS-IN                0
FAILED-CALLS-IN         0
CALLS-OUT               0
FAILED-CALLS-OUT        0
REGISTRATIONS           0

freeswitch@static.vnpt.vn> /exit

Kiểm tra trạng thái External Sofia Status trên FreeSwitch.
- Khảo sát thư mục chứa Internal vs External Sofia Profile.
[root@static local]# ls /usr/local/freeswitch/conf/sip_profiles
external  external-ipv6  external-ipv6.xml  external.xml  internal-ipv6.xml  internal.xml
[root@static local]# 

- External Sofia Status cho phép các External Phone register tới FreeSwitch.
[root@static local]# fs_cli –r
freeswitch@static.vnpt.vn> sofia status profile external
=================================================================================================
Name                    external
Domain Name             N/A
Auto-NAT                false
DBName                  sofia_reg_external
Pres Hosts       
Dialplan                XML
Context                 public
Challenge Realm         auto_to
RTP-IP                  10.10.10.188
SIP-IP                  10.10.10.188
URL                     sip:mod_sofia@10.10.10.188:5080
BIND-URL                sip:mod_sofia@10.10.10.188:5080;transport=udp,tcp
HOLD-MUSIC              local_stream://moh
OUTBOUND-PROXY          N/A
CODECS IN               OPUS,G722,PCMU,PCMA,VP8
CODECS OUT              OPUS,G722,PCMU,PCMA,VP8
TEL-EVENT               101
DTMF-MODE               rfc2833
CNG                     13
SESSION-TO              0
MAX-DIALOG              0
NOMEDIA                 false
LATE-NEG                true
PROXY-MEDIA             false
ZRTP-PASSTHRU           true
AGGRESSIVENAT           false
CALLS-IN                0
FAILED-CALLS-IN         0
CALLS-OUT               0
FAILED-CALLS-OUT        0
REGISTRATIONS           0

freeswitch@static.vnpt.vn> /exit

Tham khảo các Videos lý thuyết CCNA Voice (Collaboration) trước khi tham khảo các bài hướng dẫn thực hành VoIP. Mọi thắc mắc, các bạn vui lòng liên lạc với mình thông qua kênh Zalo (Jade Bùi) 076.877.2021.

You Might Also Like

0 comments