[問答] NAT問題請教

看板Network作者 (咖啡)時間7年前 (2017/06/30 15:49), 7年前編輯推噓1(102)
留言3則, 1人參與, 最新討論串1/1
小弟是網路領域的新手 最近在試著做p2p相關的東西 遇到了一個無法理解的問題 ( 資料也查了很多,但是看不懂的部分就是不懂... ) 過程是這個樣子 前提 : Client A ,B 皆在NAT後面 (手機行動網路) 過程皆使用UDP封包,SDP用SIP交換 過程 : 1. client A 先去跟Stun Server要回了要做media傳輸的public ip , port ex : client A private ip : 10.123.32.56:22222 public ip: 42.117.71.31:12345 2. 透過SDP交換得知client B的 public ip, port ( client B 也得知client A 的 public ip) ex : client B: 123.193.80.105:7890 3. client B 往 client A 的42.117.71.31:12345 傳送RTP封包 ( 只有B往A單向傳送 ) 問題: 到步驟三這時候,實際上觀看client A 的 log 是沒有封包進來的 直到client A 往 client B 的 123.193.80.105:7890 丟出第一個封包之後 才收的到來自 B 的 RTP封包 ( B依然一直往42.117.71.31:12345傳送封包 ) 但我混淆的點是 步驟一,用 private ip往stun server 發出stun封包的時候 在NAT上面不是就已經建立了 client A private ip 跟 public ip 的對映 ex : 10.123.32.56:22222 <--> 42.117.71.31:12345 為何後面在NAT後面等待封包卻收不到 ? 還是NAT上 僅有已方private ip 跟 public ip的對映,NAT是不會幫忙轉送 還必須建立 已方NAT的public ip 與對方 public ip 的對映才行 ? 如果是這樣,是不是就沒辦法在已方NAT後面等待來自任何ip的封包 ? 問題很新手,不過困擾很久...懇請解惑 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.80.31 ※ 文章網址: https://www.ptt.cc/bbs/Network/M.1498808973.A.F5F.html

06/30 15:59, , 1F
在機器上,紀錄的轉送表是A跟stun的
06/30 15:59, 1F

06/30 15:59, , 2F
B當然連不上了
06/30 15:59, 2F

06/30 16:00, , 3F
這跟teamviewer是一樣的道理
06/30 16:00, 3F
P大的意思是說,我要讓B傳封包進來,就必須先讓A傳個封包到B的public ip:port 這樣轉送表才會記錄B進來的封包要往A送,類似NAT打洞的意思嗎 感謝,我一直以為 stun 回來之後 NAT內外的ip對映已經做完 所有送到 A 這個public ip:port 上封包就會進到private ip:port了 ※ 編輯: good3583 (123.193.80.31), 06/30/2017 17:27:02
文章代碼(AID): #1PLWADzV (Network)