作者 主題: [問題]SIP over NAT (VOIP)  (閱讀 5425 次)

0 會員 與 1 訪客 正在閱讀本文。

snowcarey

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
[問題]SIP over NAT (VOIP)
« 於: 2004-05-29 21:19 »
小弟最近架了一個NAT(NAT主機是固定IP)

OS 是LINUX 9 版 使用IPTABLES 架設NAT

內部只有一台電腦

想使用voip來進行通話....使用SIP 支援的一個軟體 SJPhone

但經過我的測試..如果是由內部主動打向外部

是可以確實通話的....

但是問題就出現在當我由外打向內部的時候 ( 欲通話的IP填NAT主機的IP )

先描述一下過程.....

1. 外 TO 內 (內部有收到 並且有收到INVITE .. 點下接受)

2. 內 TO 外 (外部有收到其接受..並且再送回一 ACK..確定外部已經收到)

問題就出現在第2步...經過我使用ETHEREAL的量測

在第2部的時候..他所填的目的地IP是 我內部電腦的私有IP

所以當然收不到.....照理說應該是要填NAT主機的IP

再經由NAT主機將其封包傳給內部電腦

但是.....我看了看....就是不懂為什麼 當外面回ACK的時候

其目的地IP是填內部電腦的IP...其實我大概有一點點知道原因 ^^"

我的想法和看封包的結果是....因為在傳回去其接受的這封包時候

雖然Src ip是NAT主機的ip...但是因為裡面sip的封包顯示卻是由內部電腦接受的

所以當外部收到這封包的時候...會將其ack傳給內部電腦ip

小弟的粗略想法是降....

但是實在是找不到解決方法...可能我的網路相關的知識不夠吧 ^^"

想請教各位學長姐...有沒有解決的方法呢? 謝謝唷~~~~~~!!

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
[問題]SIP over NAT (VOIP)
« 回覆 #1 於: 2004-05-30 00:08 »
首先,要分清一個 tcp/ip 的 packet header 與 payload 兩部份。
在 NAT 環境下,若沒有 modules 的幫助,只會修改  header 的 socket 。
在 payload 部份的內容,是不會碰的。
若你用的 application 之間使用的 socket 填在 payload 中,那是不會改的。
或許,先了解一下 modules 的工作原理,會比較好理解:
http://www.study-area.org/linux/servers/linux_nat.htm#modules

至於你的 application 有沒有相應的 modules ?
那主要看 app 作者或 nat 作者有否提供了。若沒有... 或用 VPN 來解吧。

V-ezlinux

  • 憂鬱的高中生
  • ***
  • 文章數: 128
    • 檢視個人資料
Voip over nat
« 回覆 #2 於: 2005-07-27 15:59 »
哈來聽聽入門voip保證收穫良多拉哈! 小弟會為你們解答你們最想知道的如何穿透nat讓外面也可以打到內網喔

jou

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 4989
  • 性別: 男
    • 檢視個人資料
Re: Voip over nat
« 回覆 #3 於: 2005-07-27 16:32 »
引述: "V-ezlinux"
哈來聽聽入門voip保證收穫良多拉哈! 小弟會為你們解答你們最想知道的如何穿透nat讓外面也可以打到內網喔

報告! 來找講師的!
地點: 台中場! ^_^
題目: voip 連透透! ^^

中部窗戶...老jou 敬上! :D

mmx99

  • 憂鬱的高中生
  • ***
  • 文章數: 194
    • 檢視個人資料
[問題]SIP over NAT (VOIP)
« 回覆 #4 於: 2005-07-28 13:28 »
SIP穿越NAT的辦法
我朋友也已經實做出來了
只不過最近忙於上課
還沒過去跟他請教
等我測試好了
在PO上來跟網友分享

V-ezlinux

  • 憂鬱的高中生
  • ***
  • 文章數: 128
    • 檢視個人資料
voip
« 回覆 #5 於: 2005-08-22 16:22 »
po上來放不下巴..光說明可能就粉多種方法...將voip server裝起來透過軟體開個線上討論區比較快..有問題直接發問有人在線上馬上就可以回答不是粉好..哈友好想法要實踐他..

roach978

  • 懷疑的國中生
  • **
  • 文章數: 48
    • 檢視個人資料
    • http://rsb.tale.net
Re: voip
« 回覆 #6 於: 2005-08-23 15:57 »
引述: "V-ezlinux"
po上來放不下巴..光說明可能就粉多種方法...將voip server裝起來透過軟體開個線上討論區比較快..有問題直接發問有人在線上馬上就可以回答不是粉好..哈友好想法要實踐他..

H.323 中的 NAT 最多人用的就是 Citron 了, 在 SIP Proxy 如果不透過代理方式而做點對點方式至少必須有一端不是直接從 NAT 出來(至少有開 Port, 或是直接連線)是我所知的... orz...
color=blue]工程師只是我的表面工作,我真正的身份是一位水上救生教練![/color]

V-ezlinux

  • 憂鬱的高中生
  • ***
  • 文章數: 128
    • 檢視個人資料
sip-over-nat
« 回覆 #7 於: 2005-08-23 17:00 »
iptables -t mangle -A voip-sip -p udp --sport 5060 -j MARK --set-mark 1
iptables -t mangle -A voip-sip -p udp --dport 5060 -j MARK --set-mark 1
iptables -t mangle -A voip-sip -p tcp --dport 5036 -j MARK --set-mark 1
iptables -t mangle -A voip-sip -p udp --dport 5036 -j MARK --set-mark 1
iptables -t mangle -A voip-sip -p udp --dport 4569 -j MARK --set-mark 1
iptables -t mangle -A voip-sip -p udp --sport RTP PORT LOW RANGE:RTP PORT HIGH RANGE -j MARK --set-mark 1
前提請將您的iptables換成1.3.2喔!測試結果是可以的喔..這樣說好了穿透nat固然是為了語音..我有教過各位做h.323nat了sip大同小異拉還比h.323簡單的多..核心換成2.4.30測記得要上的patch都要上喔...要不然是不會動的... 經過研究終於在sip跟h.323上都可以雍有視訊了喔...也就是說如果您是用linux來做nat又想在nat下玩voip我這是其中一種做法喔...只是解決nat下語音跟視訊要可以雙向拉..加油