Cài đặt Asterisk 22.4.1 mới nhất trên Linux

1. Tổng Quan

Asterisk là một nền tảng mã nguồn mở dùng để xây dựng các hệ thống tổng đài IP (VoIP PBX), gateway, hoặc các ứng dụng truyền thông như IVR, call center,… Phiên bản Asterisk 22.4.1 hiện tại là bản phát hành mới nhất trong nhánh Asterisk 22, có nhiều cải tiến về hiệu năng và bảo mật.

Bài viết này sẽ hướng dẫn chi tiết cách build và cài đặt Asterisk từ mã nguồn trên hệ điều hành Debian/Ubuntu, đồng thời cấu hình cơ bản hai máy nhánh SIP để kiểm thử.

✅ Ưu điểm khi build từ mã nguồn

  • ✔️ Luôn cài được phiên bản mới nhất, cập nhật tính năng mới.
  • ✔️ Tùy chỉnh linh hoạt các thành phần cần hoặc không cần.
  • ✔️ Tối ưu theo nhu cầu sử dụng cụ thể (ít tính năng → nhẹ hơn).

❌ Nhược điểm

  • ❗ Cài đặt phức tạp hơn so với dùng package sẵn có.
  • ❗ Dễ gặp lỗi thiếu thư viện, phải xử lý thủ công.
  • ❗ Khó bảo trì nếu hệ thống lớn, nhiều node.

2. Các Bước Cài Đặt Chi Tiết

2.1. Cài Đặt Gói Phụ Thuộc

apt update
apt install -y build-essential git wget curl screen tmux net-tools vim \
  psmisc tree cron iputils-ping traceroute snmp python3-pip \
  uuid-dev libedit-dev libsqlite3-dev libncurses5-dev libxml2-dev \
  libtiff-dev libaudiofile-dev libgtk2.0-dev libnewt-dev libtool \
  libgmime-3.0-dev subversion libjansson-dev sox

Cài thêm một số thư viện hệ thống cần thiết để build pjprojectAsterisk.

2.2. Cài Đặt Thư Viện pjproject (PJSIP)

cd /usr/src/
git clone https://github.com/pjsip/pjproject.git
cd pjproject
git checkout 2.13  # Phiên bản ổn định, tương thích tốt
./configure CFLAGS="-fPIC" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr
make
make install
ldconfig

PJSIP là thư viện quan trọng để Asterisk xử lý giao thức SIP.

2.3. Cài Python Packages

pip3 install --upgrade pip
pip3 install paramiko jsonpath-ng requests

Một số package Python sẽ hữu ích nếu bạn dùng script quản lý hoặc automation cho Asterisk.

2.4. Tải và Cài Đặt Asterisk 22.4.1

cd /usr/src/
wget https://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-22.4.1.tar.gz
tar -xvzf asterisk-22.4.1.tar.gz
cd asterisk-22.4.1
./configure --libdir=/usr/lib
contrib/scripts/get_mp3_source.sh
make
make install
make samples
make config
ldconfig

2.5. Cấu Hình Người Dùng Asterisk

groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk
usermod -aG audio,dialout asterisk

Tạo user riêng để chạy Asterisk – giúp bảo mật và phân quyền rõ ràng hơn.

2.6. Phân Quyền và Cấu Hình Dịch Vụ

chown -R asterisk:asterisk /etc/asterisk
chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk
chown -R asterisk:asterisk /usr/lib/asterisk
chown -R asterisk:asterisk /var/run/asterisk
cat >> /etc/default/asterisk << 'OEF'
AST_USER="asterisk"
AST_GROUP="asterisk"
OEF
sed -i 's|;runuser =.*|runuser = asterisk|' /etc/asterisk/asterisk.conf
sed -i 's|;rungroup =.*|rungroup = asterisk|' /etc/asterisk/asterisk.conf

2.7. Cấu Hình RTP (Media)

sed -i 's|^rtpstart=.*|rtpstart=10000|' /etc/asterisk/rtp.conf
sed -i 's|^rtpend=.*|rtpend=16459|' /etc/asterisk/rtp.conf

Cổng RTP truyền âm thanh, nên mở range trong firewall (10000–16459).

2.8. Bật Dịch Vụ Asterisk

systemctl enable asterisk
systemctl restart asterisk
systemctl is-active asterisk

2.9. Cấu Hình PJSIP Endpoint

; /etc/asterisk/pjsip.conf
[global]
type=global
user_agent=Asterisk-PJSIP

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
external_media_address=113.161.201.128
external_signaling_address=113.161.201.128
local_net=192.168.100.0/24

[1000]
type=endpoint
transport=transport-udp
context=internal
disallow=all
allow=ulaw
auth=1000-auth
aors=1000

[1000-auth]
type=auth
auth_type=userpass
username=1000
password=1000

[1000]
type=aor
max_contacts=1

[1001]
type=endpoint
transport=transport-udp
context=internal
disallow=all
allow=ulaw
auth=1001-auth
aors=1001

[1001-auth]
type=auth
auth_type=userpass
username=1001
password=1001

[1001]
type=aor
max_contacts=1

2.10. Cấu Hình Dialplan

; /etc/asterisk/extensions.conf
[internal]
exten => 1000,1,Dial(PJSIP/1000)
exten => 1001,1,Dial(PJSIP/1001)

2.11. Cấu Hình Logger

mkdir -p /var/log/asterisk
touch /var/log/asterisk/full
chown asterisk:asterisk /var/log/asterisk/full
; /etc/asterisk/logger.conf
[general]
dateformat=%F %T

[logfiles]
console => notice,warning,error
messages.log => notice,warning,error
full => notice,warning,error,debug,verbose
syslog.local0 => notice,warning,error,verbose,debug
asterisk -rx "logger reload"

Khởi Động và Kiểm Tra

asterisk -rvv
dialplan reload
pjsip reload
pjsip show endpoints
module reload 
module show like pjsip

3. Ví Dụ Gọi Điện Giữa Hai Máy SIP

Giả sử bạn có 2 phần mềm softphone (VD: Zoiper) và đăng nhập:

Máy A:
SIP: 1000@your_server_ip
Password: 1000

Máy B:
SIP: 1001@your_server_ip
Password: 1001

Từ máy A, gọi đến 1001, máy B sẽ đổ chuông nếu cấu hình thành công.

Sơ Đồ Hoạt Động (ASCII)

+--------+       SIP       +-------------+       SIP        +--------+
| 1000   | <-------------> |  Asterisk   | <------------->  | 1001   |
| (Zoiper)                 |   Server    |                  | (Zoiper)
+--------+                 +-------------+                  +--------+
              RTP media <------ Voice -------> RTP media

4. Lời Khuyên

  • 🔐 Bảo mật: Luôn dùng mật khẩu mạnh, đổi port mặc định nếu cần.
  • 🔄 Sao lưu: Backup định kỳ thư mục /etc/asterisk/ và database (nếu có).
  • 📊 Giám sát: Dùng fail2banufw để giám sát tấn công SIP.
  • 💻 Phát triển: Kết hợp với AGI hoặc AMI để viết ứng dụng tổng đài tùy biến.

5. Kết Luận

Cài đặt Asterisk 22.4.1 từ mã nguồn giúp bạn chủ động hơn về phiên bản, hiệu năng và tối ưu hệ thống tổng đài IP. Tuy mất nhiều công sức ban đầu, nhưng đây là hướng đi phù hợp cho doanh nghiệp hoặc người dùng chuyên sâu.

Hy vọng bài viết này giúp bạn thiết lập thành công một tổng đài Asterisk hoàn chỉnh và sẵn sàng để triển khai thực tế. 🚀

Bài viết gần đây

spot_img

Related Stories

Leave A Reply

Please enter your comment!
Please enter your name here

Đăng ký nhận thông tin bài viết qua email