• 沒有找到結果。

建置SIP伺服器位於Firewall/NAT的解決方法

第二章、 相關研究

2.4. 建置SIP伺服器位於Firewall/NAT的解決方法

在 [14] 系統環境主要構想是將SIP伺服器建置於家庭個人工作室中,而遠 端使用者為位於學校宿舍房間內,透過NAT和防火牆設定、增設STUN Server、

以及用戶端支援機制(如:STUN)來解決所造成的問題。根據Wiki描述將此系統 取名為SipDual-Start系統架構。圖 16為SipDual-Start架構環境,在家庭個人工作 室環境部份,從ISP所申請的寬頻網路接到ADSL Modem Router,其中SIP伺服器 是由一台Linux系統電腦組成(內建包含asterisk、NAT、Firewall、DHCP、apache…) 建置在DMZ或NAT/防火牆區域內,而家中網路電話則接於Linux系統電腦NAT 後。學校環境部份:學生宿舍房間則是透過學生宿舍閘道器的DHCP Server分配 私有IP。

圖 16 SipDual-Start 系統架構環境圖

其中在 NAT 穿越時分為二個問題來討論[15]:

z SIP 信號穿越於 NAT

z RTP 多媒體資訊穿越於 NAT

1、 SIP Signaling 問題

(1) 從公開網路傳入之 SIP 信號

當遠端使用者傳送封包給家庭個人工作室的 SIP 伺服器時,傳送的封包會經 由 ADSL Modem Router,再轉送到工作室的 Asterisk 伺服器,但是當 ADSL Modem Router 接收到封包時,因為不知道封包是要轉送到內部 Asterisk 伺服器 而遭到丟棄,以致於無法正常運作,此問題可透過通訊埠轉送(port forwarding)、

防火牆規則(firewall rule)設定來解決此問題。其中通訊埠轉送功能(port forwardin g)設定為 external port 5060 Æ internal ip Asterisk 伺服器 port 5060,同時要搭配 防火牆規則允許外部 5060 埠進入到內部網路。

圖 17 Signaling 訊息傳送流程

如圖 17所示,假設Asterisk伺服器在 5060 埠號碼監聽接收封包,當ADSL Modem Router接收到目的地 5060 埠號碼訊息時,會根據通訊埠轉送規則路由到 內部Asterisk伺服器 5060 埠號碼位置,而Asterisk伺服器會照原路徑傳送給遠端 使用者。

(2) 浮動 IP 問題

在家庭 ADSL Modem Router 部份,如果 ISP 所提供的為浮動 IP,因為浮動 IP 每隔一段時間 IP 位址會變動,此問題會導致遠端使用者所傳送的封包位址不 對,而造成使用者連線失敗或註冊失敗。浮動 IP 所造成問題只要 ADSL Modem Router 有支援動態網功能變數名稱稱服務(DDNS)即可解決。

2、SIP Media 問題

當逺端使用者與另一使用者建立通話時,由於 SIP 訊息本體的 SDP 中,c 欄位內容為私有 IP 位址和通訊埠,導致遠端之使用者無法使用預設之 RTP 連接 埠與內部網路伺服器傳送 RTP 訊息,有關傳送 RTP 多媒體訊息所產生問題,可 分二部份來說明。首先是由 Asterisk Server 傳送 RTP 多媒體給遠端使用者問題:

主要透過 STUN 來解決。

圖 18 RTP 多媒體資訊流程

如圖 18所示,除了需要增設STUN Server外,遠端使用者也要支援STUN機 制。雖然STUN已制定標準,有關網路電話支援STUN Client機制卻是隨著程式開 發者需求程度,導致遠端使用者使用支援STUN機制不全的網路電話傳送RTP 時,還是會發生錯誤,如SJphone。因此考量了其軟、硬體網路電話支援STUN 機制因素,在宿舍房間內加裝了一台寬頻分享器,使得網路電話分配到固定私有 IP位址,其中網路電話設定限制必須可自行設定傳送時的RTP埠號碼,再配合寬 頻分享器設定通訊埠轉送(port forwarding)、防火牆規則(firewall rule)得已解決。

其次,遠端使用者傳送到Asterisk伺服器問題:有關Asterisk伺服器部份可設定傳 送RTP埠範圍,再配合ADSL Modem Router設定通訊埠轉送(port forwarding)、防 火牆規則(firewall rule)功能即可解決。

雖然利用 STUN 機制配合通訊埠轉送(port forwarding)、防火牆規則(firewall rule)可解決傳送 RTP 多媒體問題,但學校環境部份任何一 NAT/防火牆屬於對稱 式 NAT 的話,則無法正常運作。

相關文件