close

※ 如果這篇文章, 對您是有用而且可行的, 請在您試作之後回應給我, 好讓我知道是否有不足之處。

※ 本文所用的 NAT 穿透是採用 TURN, 此種方式雖可處理各種 NAT 環境, 但容易產生系統瓶頸。

關鍵字: IP Phone, SIP, OpenSIPs, OpenSER, SER, NAT Traversal, RTP Proxy, TURN, Traversal Using Relay NAT

[環境]
作業系統: Linux (Trustix 3.0.5) Under VMware
核心版本: 2.6.19.7-3tr
CPU: Intel(R) Pentium(R) D CPU 2.80GHz
RAM: 128MB
NIC: PCnet/PCI II 79C970A (pcnet32)
NET: 在VM底下, 以橋接方式給予 Publick IP (140.111.xxx.xxx/255.255.255.0)
Firewall: 未設置

[軟體]
OpenSIPS(舊名 OpenSER), RTPProxy, gcc, make, bison or yacc, sed, tar

 

[觀念] (待補)

利用 RTP proxy 實現 TURN, 以解決 symmetric NAT 帶給 SIP 語音無法溝通的困擾。


[安裝及設定]
取得 opensips-1.4.2 (官網
http://www.opensips.org/)
# wget
http://opensips.org/pub/opensips/latest/src/opensips-1.x.x-notls_src.tar.gz (版本自己改一下)
取得 rtpproxy-1.1 (官網 http://www.rtpproxy.org/)
# wget
http://b2bua.org/chrome/site/rtpproxy-1.1.tar.gz

解開
# tar zxvf opensips-1.5.1-tls_src.tar.gz
# tar zxvf rtpproxy-1.1.tar.gz

編譯 opensips
# cd opensips-1.5.1-tls/
# vim Makefile (找到 db_mysql, 刪掉, 這樣才能編入 mysql 的支援)
# make ; make modules ; make install

編譯 rtpproxy
# cd rtpproxy-1.1
# ./configure
# make ; make install


-- RTP Proxy --
設定為開機執行 rtpproxy
# vi /etc/rc.local (加入以下兩行)
/usr/local/bin/rtpproxy -F
/usr/local/sbin/opensipsctl start

手動執行 rtpproxy
# /usr/local/bin/rtpproxy -F

若跑起來成功, 則可以在 /var/run 目錄底下看到有2個檔案
rtpproxy.pid
rtpproxy.sock=


-- OpenSIPS --
設定 nathelper for NAT traversal
把原始的 tarball 裡的 example 目錄底下的 nathelper.cfg 複製到
/usr/local/etc/opensips 目錄下, 並改名為 opensips.cfg

執行
# opensipsctl start
若沒問題就會出現執行功成的 pid
-- ex: --
INFO: Starting OpenSIPS :
INFO: started (pid: 9296)


[後續維護] (幾個簡單的指令)

查看已上線的使用者
# opensipsctl online
監看系統
# opensipsctl moni
新增使用者 (建議有 mysql 配合, 以記下使用者資訊)
# opensipsctl add 'username'  'password' 'e-mail'


[相關資訊]

  1. SER - Getting Started http://siprouter.teigre.com/doc/gettingstarted/
  2. SIP NAT問題闡述及其解決方案分析  http://www.microvoip.com/jishu/jsjl/200507/20050704123556.html
  3. NAT, STUN, and RTP proxy http://siprouter.teigre.com/doc/gettingstarted/ch04s05.html
  4. 軟體 IP Phone client: X-lite, sjphone
  5. How rtpproxy works with SER (http://blog.csdn.net/chang_jiang_110/archive/2008/09/18/2946117.aspx)
arrow
arrow
    全站熱搜

    老妖怪 發表在 痞客邦 留言(13) 人氣()