NAT
网络地址转化
NAT是为了解决ipv4地址不够用而出现的一种技术,ip地址分为私网ip和公网ip
公网ip只能在公网上使用,私网ip只能在内网中使用
公网上不允许出现私网ip地址,私网ip可以重复在内网使用
私有地址范围
10.0.0.0/8(10开头的)
172.16.0.0/16 - 172.31.0.0/16(172.16开头的到172.31开头的)
192.168.0.0/16(192.168开头的)
NAT主要完成公私有ip之间的转换,一般在路由器或者防火墙上完成
NAT的三大类
1.静态NAT(手动配置NAT地址转换表,已弃用)
2.动态NAT(根据动态NAT映射来构造NAT地址转换表,但内网用户不能同时上网)
3.PAT(port address transformation,端口地址转换)
在动态NAT的基础上增加了overload复用,动态NAT映射池的地址可以复用,内网用户可以同时使用一个公有ip上网
出现问题:当同时上网时,服务器发来回包,路由器不知道转发给哪个用户
前人解决方法:当内网用户发送包时,不但将源ip记录到NAT地址转换表,还会将源端口号也做NAT转换,而且转换后的端口号不会消失直至该用户主机不存活。(老化时间为60s)
当内网里192.168.0.1和192.168.0.2同时访问百度的web服务,假设这两台主机的随机端口号都是5000,公网ip为1.1.1.1,百度的ip为2.2.2.2。当他们的ip报文出内网的时候就会做NAT转换,并记录到NAT地址表
原本的ip包头:192.168.0.1 2.2.2.2 5000 80(分别为源ip,目的ip,源端口号,目的端口号)
经过NAT转换后:1.1.1.1 2.2.2.2 1 80(将源ip和源端口号按表转换后转发)
当百度回包:2.2.2.2 1.1.1.1 80 1(源ip,目的ip,源端口,目的端口)
当路由器接到包后,解析包,发现目的端口号为1,对应的端口号为5000,内网ip为192.168.0.1
所以路由器会把包的目的ip和目的端口号修改后转发:2.2.2.2 192.168.0.1 80 5000
这样就实现了内网ip同时上网。
NAT命令
1.定义内网端口
int f0/0
ip nat inside
exit
2.定义外网端口
int f0/1
ip nat outside
exit
3.配置PAT
定义内部地址池子:
acc 1 permit 192.168.0.0 0.0.255.255
做PAT动态映射
conf t
ip nat inside source list 1 int f0/1 overload
4.配置静态端口转换:
conf t
ip nat inside source static tcp 192.168.0.1 80 1.1.1.1 80
实现外网访问内网服务器
配置静态PAT
S 192.168.0.1 1.1.1.1 80 80
这时候当外部访问1.1.1.1:80的时候就会访问你内网服务器192.168.0.1:80,而且只有访问80端口的ip包才会被转发,保障了服务器的安全