PAT---Port Address
Translation,即端口地址转换,属于NAT的一种,即将lan内的私网地址转换成合法的公有地址,即是将多个内部本地地址(inside
local address)转换成一个内部全局地址(inside global address),以方便与Internet通信。
今天不谈nat的优点,也不谈nat的缺点,只谈是如何进行地址转换,主要分为有4层头部的packet与没有4层头部packet进行转换。
网关设备进行PAT,如何识别多个内部本地地址访问外部网络?如何识别多个内部本地地址同时访问同一个外部设备?当外网的数据包到达网关时,他如何选择转发给内部那台主机呢?
先上拓扑:
R2模拟为网关设备,配置如下:
R2有一条指向R1的默认路由:
R1模仿isp,R1上的环回口模拟其他公网设备:
pc1与pc2的配置:
pc1
pc2
看看PC1与PC2问下R1的loopback的结果
这次抓包从R2(gateway)的inside与outside口同时抓的,看进路由器与出路由器有那些不同。
一、有四层头部(tcp)的telnet:
1、pc2去telnet 1.1.1.1
注意源ip+port)
Gateway 的inside 接口:
Gateway 的outside 接口:
网关设备show nat表:
总结:网关设备收到内部主机发来的数据包的时,在触发PAT的时候,是将source ip地址+source
端口(2元组)动态的生成一个转换表放在内存中(这个与端口映射,静态的指定端口不同,因为动态存在时间有限)。当接受到destination相同的
ip+port来进行转换,来标识该转发的内部主机。
如果pc1与pc2同时telnet的结果如何:
pc1telnet1.1.1.1(inside)
pc1telnet1.1.1.1(outside)
pc2 telnet1.1.1.1(inside)
pc2 telnet1.1.1.1(outside)
网关会生存2个转换表,同一个端口同时只能用于建立一个TCP连接
路由器上面的port也许不能称之为端口,他或许只是一个标识作用,用来标识接收与转发内网主机与公网通信的数据包。当然这只是我的猜测而已。
有四层头部的,当然可以用port来标识,没有四层头部,靠谁来标识?不能ip头部吧,插那个字段?但是你ping一个外网,比如说51cto.com,还是可以回复内网主机的。
来看看网关是如何转换icmp报文的:
二、没有四层头部的ping(icmp):
pc1与pc2同是ping 1.1.1.1.
pc1 ping 1.1.1.1(inside)
pc1 ping 1.1.1.1(outside)
pc2 ping 1.1.1.1(inside)
pc2 ping 1.1.1.1(outside)
在看看网关的nat表:
总结:
网关在转发icmp报文的时候,靠的是icmp 头部的标识符来确定一台主机。其实呢,icmp标识符是每个unix主机,ping这个程序的进程号(pid)而已。应该是每个主机产生这个进程号都是随机,不一样,所以可以拿来做标识吧
其实每一台cisco的路由器都相当于一台运行unix的设备。
CCIE Security 2009 IOS防火墙合集
阅读(701) | 评论(0) | 转发(0) |