计算机网络有没有提到nat,计算机网络:NAT/Firewall 技术笔记

1. 两种类型:

app-layer:ALG

transport layer/ IP layer:packet filtering

2. pkt过滤方式(layer3/4):内部网通过路由器防火墙(router firewall)与外界连接,路由器过滤经过的每一个包,检查:srcIP,dstIP;port num;ICMP msg 种类;TCP的SYN 位和ACK 位;以及ip的protocol field看是udp还是tcp

3. 防火墙:将网络分为外部和内部;从内部发往外部的pkt可以发出;由外部第一次产生的pkt没办法穿过防火墙发往内部,但是由内部产生的包发往外部之后,外部与之对应的包则可以发往内部,取决于nat类型。

4. 防火墙的缺点:外部发往内部的包的srcIP 有可能被改过,并不是此IP发来的;对于不同的app产生的包,所用的port num不同,对于每一个都需要一个gateway;

5. NAT:network address translation

内部网络的所有机器,与外界通信时,内部的ip都会被路由器转换成publicIP,外界只能看见public IP发来了一个pkt,而不知道内部网络的真实IP;同时,外界网络想要发给内部机器pkt时,也需要将dst IP设置为该publicIP;

6. NAT 优点:只需要一个publicIP,或者少数量的public IP就可以用于内部网络的所有机器通信;可随意根据需求改变内部机器的ip地址,对于外界无影响;可以保护内部网络的隐私,即外部网络没办法看到内部网络中机器的真实IP;对于内部机器是透明的,内部机器感觉不到NAT的存在;

7. NAT穿越:NAT将内部网络ip转换为public ip,但是对于SIP协议(会话初始协议,用于音视频通信)来说,内部网络的机器发送signal msg的时候,需要指定自身用于接收多媒体流(media streams)的IP 地址和port num,即 外部机器发送RTP包的时候,需要以该指定的IP 和port作为dstIP 和 dst port,但是如果内部网络的机器不知道自己的ip和port会被NAT转换成什么,就只能指定内部网络的机器的真实的ip和port,所以外部机器以该ip和port作为目标地址的话,发送的包到了NAT Router那里无法通过,则NAT与SIP 会互相影响。需要NAT穿越。

8. NAT实现translation机制:NAT 路由器:对于内部发往外部的pkt,将sourceIP 和 port变成public IP和 port;并且将这一对map存入自身的translation table中;对于外界发往内部的pkt,检查dst ip和port,查找translation table,找到了之后讲其替换成内部机器的真实的IP和port,然后转发给内部机器,找不到的话,drop。

NAT translation流程如下:NAT router随机得在translation table中选择一个publicIP:

446d14fd8f33

9. NAT 缺点:对于SIP这种音视频通信协议,内部网络发送signal pkt时指定接收的IP和port这样的协议时,会造成麻烦;

10. 防火墙带来的问题:

446d14fd8f33

假设Firewall 只允许特定的port num的pkt通过:

对于SIP协议来说,A首先给B发送SIP invite msg,只是一个signal,用port是5060,告知B可以发送multimedia pkt过来了,并且指定了用于接收的IP和port,但是对于multimedia pkt,B发送用的port是RTP协议的port,并且是A指定的,比如38060,但是这个pkt没办法通过Firewall因为Firewall 只允许port 5060通过,则该RTP pkt就会被block。

所以只能用symmetricRTP:A和B 在多媒体通信时,用同样的port num。

11. NAT的problem:

446d14fd8f33

还是与SIP/SDP RTP有关:SIP是layer 5的协议,在SIP中有一部分是SDP部分,里面存着A接收RTP pkt所要用的IP 和port,但是经过NAT时,IPheader中的IP 和 port被translated了,但是SIP中的SDP部分还未被translate,B发回RTP pkt时仍将dst IP和port设置为SDP中的,则此IP和port无法通过NAT router。

SIP:基于tcp和udp

以下为SIP body:

446d14fd8f33

12. NAT穿越:让内部网络的机器知道NAT的存在,并在数据传输时采取相应措施,避免外界发回的pkt被block

- 第一种:问NAT:Universal Plugand Play ( UPnP 协议) 微软提出的

客户端与NAT 网关通信,询问translated IP和port num,并且将其更新进入SIP中的SDP部分;

(对于cascadingNAT不适用):对于多级NAT不适用,因为NAT网关并不具有询问下一个NAT网关的功能。

446d14fd8f33

- 第二种:Simple Tranversal ofUDP Through NATs ( STUN 协议)

预备知识:NAT种类:

1.完全锥形NAT(Full Cone)

446d14fd8f33

对于完全锥形NAT:NAT router对于任何pkt,只要其dst IP:Port 是 translation table中存在的,则允许放行。

因为内部网络机器A发送过pkt给clientB,则B知道对于A来说,其public IP:PORT是40.50.60.70:9000,则B可以以任意port 向A发送pkt,并且因为B与C/D也曾进行过通信,C/D从B处知道A的public IP:Port,则也可以将其作为dstIP:Port向A发送pkt,均可以通过NAT Router。

2.地址限制型NAT(Address Restricted Cone)

446d14fd8f33

对于地址限制型NAT:只有外界的特定IP的机器可以发回,但port num可以不同。

对于A,首先A给B发送了pkt,经过了NAT 的地址映射发送给B,此即相当于client B已经被授权(authorized)了,则后续B可以以任何port向A的public IP:Port发送数据,但C/D的数据包会被block,因为NAT只允许B的IP通过。

注意:只有A先发出去的包的dstIP 才可以发回,这里的先发出去pkt相当于authority。

3.端口限制型NAT(PortRestricted Cone)

446d14fd8f33

对于端口限制型NAT:类似于上一种,但此时NAT只允许authorized client 的IP:Port 都满足A发送出去时的dst IP:Port才可以发回并且穿过NAT。

注意:只有A先发出去的包的dstIP:Port 才可以发回,这里的先发出去pkt也相当于authority。

并且,在NAT Translation table中,对每一个IP:Port对创建一个entry用于mapping。若IP一样,假设由图中,A又要以10.0.0.1:5060发送出去一个pkt,NAT router 将会在Public IP:Port池中随机选取一个新的IP:Port创建一个新的entry给10.0.0.1:5060。

4.对称型NAT(symmetric)

446d14fd8f33

对于NAT Translation table中的每个record,储存的不仅是IP:Port对,还有其所关联的destination client,则对于每一个创建entry。

外界发回pkt时,只有对应的client的IP:Port才可以穿过NAT。

则对于STUN协议实现机制如下:RTP Port:8000,SIP Port:5060

446d14fd8f33

446d14fd8f33

但对于对称型NAT不合适,因为RTP接收所需的IP:PORT虽然已经从STUN server处知道了并且放进了SDP中,但是NAT Router的translationtable中存的是,所以,当B将其作为dstIP:Port时,到了NATrouter处,NAT一看不是从STUN Server发来的,则直接block掉,仍无法完成多媒体传输。

-第四种:TURN 协议:解决了对于symmetricNAT 失效的问题,Skype使用TURN,但是收费

446d14fd8f33

-第五种 ICE协议:集合了其他协议的优点并且摒弃了其他协议的缺点。

446d14fd8f33

-第五种:ALG,运用layer5,使Firewall/NAT SIP 意识到各自的存在:

446d14fd8f33

446d14fd8f33

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值