## About this project - SIP流程 由下圖可知,當 Client 1 撥打電話給 Client 2 時,會先發送 INVITE 請求並且與 Client 1 請求代理伺服器授權。當前置動作完成以後, SIP Server 會發送 INVITE 給 Client 2 ,此時雙方的電話將會響起,假設雙方都接受電話請求,此時開始進行對話。最後,當一方送出 BYE 訊息時,系統會執行通話終止,並且同時送出 BYE 訊息給另一方結束此次通話。  - kamailio是開源SIP服務器,通過一些簡單配置和參數設置就可以進行使用,在這裡是安裝到ubunt20.04。並且需要在同一個LAN下。 - 安裝依賴 ``` $ sudo apt install libssl-dev libmysqlclient-dev autoconf libcurl4-openssl-dev libxml2-dev libpcre3-dev ``` - 安裝mysql ``` $ sudo apt install mysql-server ``` 安裝完成後,登錄mysql ``` $ mysql -u root ``` *這邊會出現錯誤* `ERROR 1698 (28000): Access denied for user 'root'@'localhost’` 這時需要重新設定參數,打開mysql的配置文件: ``` $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf ``` 在最後面追加此訊息: ``` skip-grant-tables ``` 然後重新啟動mysql服務 ``` $ service mysql restart ``` 現在便可以成功登錄到mysql中 ``` $ mysql -u root -p ``` 接下來執行以下命令(適用於mysql8) ``` -> use mysql; -> flush privileges; -> update user set plugin='mysql_native_password' WHERE user='root' AND host='localhost'; -> ALTER user 'root'@'localhost' IDENTIFIED BY 'newpassword'; ``` 以上指令中只有**newpassword需要進行更改成自己的密碼**,例如: ``` -> ALTER user 'root'@'localhost' IDENTIFIED BY '1117'; ``` 若出現以下錯誤訊息,重啟mysql即可(service mysql restart),在重新上一步  執行完成後,可以使用以下命令查看是否修改完成: ``` -> select user, plugin from user; ``` 初始表格  修改過後的表格  - 安裝kamailio ``` $ wget -O- https://deb.kamailio.org/kamailiodebkey.gpg | sudo apt-key add - $ sudo vim /etc/apt/sources.list ``` 將下面兩行新增至 sources.list檔案中的最下面: ``` deb http://deb.kamailio.org/kamailio56 bullseye main deb-src http://deb.kamailio.org/kamailio56 bullseye main ```  kamailio installation: ``` $ sudo apt update $ sudo apt -y install default-mysql-server $ sudo apt -y install kamailio kamailio-mysql-modules ``` 確認kamailio modules是否都有下載到 ``` $ sudo apt search kamailio ```  設定配置文件: **這邊要注意到virtual box 的網路介面卡是否跟手機wifi是在同一個網域下** **(一定要一樣喔不然連接不到伺服器)**  ``` $ ifconfig #用於查看ip address ```  ``` $ sudo vim /etc/kamailio/kamctlrc ``` 將下面三行註解掉, SIP_DOMAIN 設定為自己的 ip address 可以由 ifconfig 查看 ``` SIP_DOMAIN=your_ip_address DBENGINE=MYSQL DBRWPW="kamailiorw" ```  為了啟用 MySQL 服務器後端、用戶身份驗證和持久用戶位置,請在第一行後添加: ``` $ sudo vim /etc/kamailio/kamailio.cfg ``` ``` #!define WITH_MYSQL #!define WITH_AUTH #!define WITH_USRLOCDB ```  創建 Kamailio 所需的 database,MySQL password為你所設定的newpassword: ``` $ sudo kamdbctl create ```  character set name 設定為 utf16 ,接下來的詢問都按y,database就創建成功啦!  運行kamailio ``` $ kamctl start or $ systemctl start kamailio ``` 執行次命令時如遇到如下錯誤:  這個問題是kamailio的pid文件沒有權限導致的,可以在`/run`目錄下使用指令: ``` $ sudo mkdir kamailio $ sudo chown 當前用戶名 /run/kamailio ``` 將文件權限轉移到當前用戶,這樣即可解決問題。 查看 kamailio 運行狀態(綠燈) ``` $ systemctl status kamailio ```  如果要重新啟動kamailio可以使用以下指令: ``` $ systemctl restart kamailio ``` 如果要停止kamailio運行(白燈)可以使用以下指令: ``` $ kamctl stop or $ systemctl stop kamailio ```  kamailio增加帳號 (若要求輸入密碼,密碼為DBRWPW所設定密碼,預設為kamailiore) ``` $ kamctl add username password example: $ kamcrl add ping 1117 ``` 手機下載 Linphone(電腦也可以使用) !!!很重要 手機WiFi必須跟kamailio在同一個LAN下,使用前請務必先確認!!!        電腦畫面   ## Project tasks [Tasks](https://www.notion.so/d4253e6fa16a4d68a328a978b454e12f?pvs=21)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up