推荐书籍《奠基计算机网络》
pkt文件链接:
http://pan.baidu.com/s/1eSuyQHW
NAT的最初目的是允许将私有IP地址映射到公网(合法的Internet IP) 地址的,以此来减缓IP地址空间的消耗
NAT使用场景:
- 需要连接Internet,但是你的主机没有公网IP地址
- 更换了一个新的ISP,需要重新组织网络
- 需要合并两个具有相同网络地址的内网
NAT一般应用在边界路由器中,比如公司连接Internet的路由器上,其最显著的优点是节约合法公网IP地址,正是因为NAT,我们到现在还能使用IPv4,否则早已升级到IPv6了.
NAT有三种类型:
- 静态NAT: 一对一映射,每台主机对应一个真实的IP地址
- 动态NAT: 映射一个未注册IP地址到注册IP地址池中的一个注册IP地址.
- PAT: 通过端口区分内网主机,将多个私网IP地址映射到一个公网IP
1.按照下图所示,搭建拓扑图,并且根据图配置好各个机器的IP地址
左半部分为内网,右半部分为外网
3.静态地址规划:
机器名称 私网ip地址 映射公网地址
pc0 10.0.0.3 131.107.0.3
pc1 10.0.0.2 131.107.0.2
server0 10.0.0.4 131.107.0.4
//将0/0(左端) 设置为内部端口
interface FastEthernet0/0
ip nat inside
exit
//将0/1(右端) 设置为外部端口
interface FastEthernet0/1
ip nat outside
exit
//设置静态NAT
ip nat inside source static 10.0.0.2 131.107.0.2
ip nat inside source static 10.0.0.3 131.107.0.3
ip nat inside source static 10.0.0.4 131.107.0.4
exit
这种类型的Nat可以实现映射一个未注册IP地址到注册IP地址池中的一个注册IP地址.但必须保证拥有足够的真实IP,保证每个在因特网中收发包的用户都有真实的IP可用.
比如: 你有3个外网IP,但内网有5台机器,使用动态NAT,只能同时有3台计算机访问Internet.
3.将上面配置的静态NAT保存为staticNAT.pkt,再另存一份为dynamicNAT.pkt
我们从dynamicNAT.pkt上修改:
清除之前对CEP路由器的静态配置:
//清除静态配置
no ip nat inside source static 10.0.0.2 131.107.0.2
no ip nat inside source static 10.0.0.3 131.107.0.3
no ip nat inside source static 10.0.0.4 131.107.0.4
exit
4.配置动态NAT
//配置动态NAT
//定义访问控制列表,将网段添加到列表中
access-list 10 permit 10.0.0.0 0.0.0.255
//定义公网地址池,名称定义为todd
ip nat pool todd 131.107.0.1 131.107.0.3 netmask 255.255.255.0
//将列表list 10 和 公网地址池todd 关联
ip nat inside source list 10 pool todd
查看CEP路由器转发的数据包,NAT地址转换成功
(点击那个数据包:
)
结果截图之一(不一一累赘,有兴趣的同学,可以自己尝试演示):
写过网络程序的同学应该都懂, 多台机器相互通讯通过 ip地址确定是哪台物理机器,通过端口号确定具体的程序.
例如: web程序通常是80端口,mysql数据库是3306
记得大三上学期时候,在笔记本上写了几个web程序, 然后将宿舍里路由器的80端口映射给我笔记本ip的80端口,就实现了外网访问我笔记本上的网站.
PAT模式和这个类似:
例如有两台物理机 A,B,一个路由器L, 外网W
A,B连着L,L连着外网W
设定:
A机器映射到L路由器5000端口
B机器映射到L路由器6000端口
那么A访问外网流程如下:
A –> L –> W (A的ip:端口 转为 L的ip:5000 ; L 访问 W)
W –> L –> A (W 发送 L ; L的ip:5000 转为 A的ip:端口 ; L 发送给A)
3.保存dynamicNAT.pkt后,另存一份patNAT.pkt,我们在patNAT.pkt进行修改,
我们就使用之前提供的ip吧,另外增加几台机器.
service1 ip为 10.0.0.5
service2 ip为 10.0.0.6
//删除之前的动态NAT配置
no ip nat inside source list 10 pool todd
4.启用PAT,命令和之前的动态NAT命令极其相似, 具体如下:
access-list 10 permit 10.0.0.0 0.0.0.255
ip nat pool todd 131.107.0.1 131.107.0.3 netmask 255.255.255.0
//注意区别在后面加了个overload,即启用PAT
ip nat inside source list 10 pool todd overload
此时可以使用ping测试了,所有内网机器都能ping通外网的服务器
5.端口映射,要想让内网的服务器供外网访问,还需要做端口映射:
//端口映射,将我们拥有的三个公网ip的80端口分别映射给三台服务器
ip nat inside source static tcp 10.0.0.6 80 131.107.0.3 80
ip nat inside source static tcp 10.0.0.5 80 131.107.0.2 80
ip nat inside source static tcp 10.0.0.4 80 131.107.0.1 80
需要注意的是: 内网地址访问外网地址时,PAT对外地址地址只有一个,
意思是:
尽管我用了3个外网地址做PAT,但其实所有机器访问外网,路由器只会用一个外网地址,剩下两个没有用到.
但是,做端口映射的时候,是可以用到剩下的两个IP的!
也就是,外网访问内网服务器时才会用到做过端口映射的IP.
所以,一般做PAT地址转换,一组机器只用一个公网IP.
pkt文件链接如下:
http://pan.baidu.com/s/1eSuyQHW