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 pjproject
và Asterisk
.
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
fail2ban
vàufw
để 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ế. 🚀