OpenSIPS (SIP Proxy) → MySQL (用戶資料) → db_mysql、auth、auth_db 模組 → subscriber 表驗證
# 安裝開發套件
sudo apt-get install libmysqlclient-dev
# 方式 A:修改 Makefile.conf
# EXCLUDE_MODULES 去掉 db_mysql
# INCLUDE_MODULES 加上 db_mysql
make all
sudo make install
# 方式 B:編譯參數指定
make include_modules="db_mysql" modules prefix=/usr/local/opensips
sudo make install
sudo apt-get install mysql-server mysql-client
# 設定 root 密碼
# 驗證
mysql -u root -p
# 建立 OpenSIPS 資料庫 (互動式)
sudo opensipsdbctl create
# 依提示輸入 MySQL root 密碼、選擇附加表
腳本會讀取 /etc/opensips/opensipsctlrc 設定,自動建立 subscriber 等表。
# 全域參數
listen=udp:192.168.139.121:5060
alias=192.168.139.121
# 載入模組
loadmodule "db_mysql.so"
loadmodule "auth.so"
loadmodule "auth_db.so"
# 模組參數
modparam("db_mysql", "db_url", "mysql://opensips:opensipsrw@localhost/opensips")
modparam("auth_db", "db_url", "mysql://opensips:opensipsrw@localhost/opensips")
modparam("auth_db", "password_column", "password")
modparam("auth_db", "user_column", "username")
modparam("auth_db", "domain_column", "domain")
# 路由邏輯
route {
if (!db_check_to()) { sl_send_reply("403", "Forbidden"); exit; }
if (is_method("REGISTER")) {
if (!www_authorize("", "subscriber")) {
www_challenge("", "0");
exit;
}
if (!check_to()) { sl_send_reply("403", "Forbidden"); exit; }
if (!save("location")) { sl_send_reply("500", "Internal Error"); exit; }
exit;
}
# 其他 INVITE 等路由...
}
DBENGINE=MYSQL
DBHOST=localhost
DBNAME=opensips
DBRWUSER=opensips
DBRWPW=opensipsrw
DBROOTUSER=root
DBROOTPW=mysql_root_password
sudo opensips -c # 語法檢查
sudo opensipsctl start # 啟動服務
# 查看日誌
sudo tail -f /var/log/syslog | grep opensips
opensipsctl add alice@192.168.139.121 123456
opensipsctl add bob@192.168.139.121 123456
使用 SIP Client (如 Linphone、Zoiper) 註冊測試。
db_url 格式:mysql://user:pass@host/dbname (無 port 則預設 3306)CREATE USER 'opensips'@'%' IDENTIFIED WITH mysql_native_password BY 'opensipsrw';完成「編譯模組 → 建庫 → 配置模組參數 → 路由掛載認證 → 測試」五步驟,即可讓 OpenSIPS 以 MySQL 為後端實現 SIP 用戶認證。生產環境建議啟用 TLS、配置備援與監控。