作者good3583 (咖啡)
看板Network
标题[问答] NAT问题请教
时间Fri Jun 30 15:49:29 2017
小弟是网路领域的新手
最近在试着做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://webptt.com/cn.aspx?n=bbs/Network/M.1498808973.A.F5F.html
1F:推 pili100: 在机器上,纪录的转送表是A跟stun的 06/30 15:59
2F:→ pili100: B当然连不上了 06/30 15:59
3F:→ pili100: 这跟teamviewer是一样的道理 06/30 16:00
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