首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Ubuntu 上 OpenSIPS 整合 MySQL 實現 SIP 用戶認證完整步驟

     編輯:MySQL 資料庫相關知識

架構概覽

OpenSIPS (SIP Proxy) → MySQL (用戶資料) → db_mysql、auth、auth_db 模組 → subscriber 表驗證

1. 編譯支援 MySQL 模組

# 安裝開發套件
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

2. 安裝 MySQL 並建立資料庫

sudo apt-get install mysql-server mysql-client
# 設定 root 密碼

# 驗證
mysql -u root -p

# 建立 OpenSIPS 資料庫 (互動式)
sudo opensipsdbctl create
# 依提示輸入 MySQL root 密碼、選擇附加表

腳本會讀取 /etc/opensips/opensipsctlrc 設定,自動建立 subscriber 等表。

3. 修改 opensips.cfg 關鍵片段

# 全域參數
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 等路由...
}

4. 修改 opensipsctlrc

DBENGINE=MYSQL
DBHOST=localhost
DBNAME=opensips
DBRWUSER=opensips
DBRWPW=opensipsrw
DBROOTUSER=root
DBROOTPW=mysql_root_password

5. 語法檢查與啟動

sudo opensips -c          # 語法檢查
sudo opensipsctl start    # 啟動服務
# 查看日誌
sudo tail -f /var/log/syslog | grep opensips

6. 測試:新增 SIP 用戶

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)
  • MySQL 8.0 需建立用戶 CREATE USER 'opensips'@'%' IDENTIFIED WITH mysql_native_password BY 'opensipsrw';
  • 防火牆開放 UDP 5060
  • SELinux/AppArmor 可能阻擋 OpenSIPS 讀寫 MySQL socket

結語

完成「編譯模組 → 建庫 → 配置模組參數 → 路由掛載認證 → 測試」五步驟,即可讓 OpenSIPS 以 MySQL 為後端實現 SIP 用戶認證。生產環境建議啟用 TLS、配置備援與監控。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved