网络地址转化

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包才会被转发,保障了服务器的安全