NAT网络地址转化
知识点
一般服务器使用静态NAT,为Server绑定一个固定的公网IP
终端为动态NAT
NAT的分类
静态NAT
- 静态NAT实现了私网地址和公网地址的一对一映射
- 一个公网IP只会分配给唯一且固定的内网主机
- 缺点:无法有效解决公网地址稀缺的问题
- 优点:避免外网设备的攻击,仅提高了安全性
注意:
nat static enable
nat static global 公网地址 inside 私网地址
以上两条命令都是在路由出口接口模式下配置
每个私有地址都有一个与之对应并且固定的公网地址,即私网IP地址和公网IP地址之间的关系是一一对应
出口网关设备的NAT数据配置:
interface GigabitEthernet 0/0/1 //进入接口GE 0/0/1
ip address 12.1.2.1 24 //配置接口IP地址
nat static enable //开启静态nat
nat static global 12.1.2.1 inside 192.168.1.1 //将内网地址192.168.1.1映射到公网地址12.1.2.1
nat static global 12.1.2.2 inside 192.168.1.2
nat static global 12.1.2.3 inside 192.168.1.3
NAT Server和NAT Static的区别是什么
外网主动访问内网时,NAT Server和NAT Static无差别。
NAT Server对于内网主动访问外网的情况不做端口替换,仅作地址替换,即当流量的源IP匹配到NAT server规则的内网IP,不论端口号多少,都会转换IP地址。
NAT Static对于内网主动访问外网的情况会同时替换地址和端口号。
当希望内网用户可以正常访问外网服务器,外网用户可以正常访问内网服务器时,如果在Router上同时配置了NAT Server和Easy IP功能,由于NAT Server对于内网主动访问外网的情况不做端口替换,仅作地址替换,可能会存在流表建立失败的情况,建议用户在这种情况可将NAT Server配置改为NAT Static。
动态NAT
- 所有可用的公网地址组成地址池;
- 当内部主机访问外部网络时,临时分配一个地址池中的未使用的公网IP地址,并将该地址标记为“In Use”。当该主机不再访问外部网络时回收分配的地址,重新标记为“Not Use”。
- 动态NAT选择地址池中的地址进行地址转换时,不会转换端口,即No-PAT,导致了公网地址与私网地址还是1:1的映射关系,无法提高公网地址利用率
出口网关设备的NAT数据配置:
nat address-group 1 12.1.1.2 12.1.1.5 //创建一个地址池address-group 1,共有4个公网IP地址
acl 2000 //创建acl 规则
rule 5 permit source 192.168.1.0 0.0.0.255 //配置策略,允许源IP网段(也可以允许某个IP)通过
quit
interface GigabitEthernet 0/0/1 //进入GE 0/0/1接口
nat outbound 2000 address-group 1 no-pat //将acl 2000策略应用到该接口
拓扑图(动态NAT)
实验步骤
1.按照拓扑图搭建实验环境,从PC去Ping外网ip。可以看见64.1.1.1可以ping通,但是64.1.1.10超时。
原因:在PC发送报文时发现64.1.1.10和自己不在同一网段,就将数据包发给网关,网关发现64.1.1.1和64.1.1.10是直连路由,数据包就发送给1.10;但是R2作为公网路由器是没有去私网IP192.168.1.1的路由,所以无法将报文转发回来。
解决方法:Nat将内网192.168.1.1的IP转换为64.1的公网IP。
PC>ping 64.1.1.1
Ping 64.1.1.1: 32 data bytes, Press Ctrl_C to break
From 64.1.1.1: bytes=32 seq=1 ttl=255 time=31 ms
From 64.1.1.1: bytes=32 seq=2 ttl=255 time=31 ms
From 64.1.1.1: bytes=32 seq=3 ttl=255 time=31 ms
From 64.1.1.1: bytes=32 seq=4 ttl=255 time=32 ms
From 64.1.1.1: bytes=32 seq=5 ttl=255 time=16 ms
--- 64.1.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 16/28/32 ms
PC>ping 64.1.1.10
Ping 64.1.1.10: 32 data bytes, Press Ctrl_C to break
Request timeout!
Request timeout!
Request timeout!
Request timeout!
Request timeout!
--- 64.1.1.10 ping statistics ---
5 packet(s) transmitted
0 packet(s) received
100.00% packet loss
查看R2的路由表,可以看到没有192.168的路由只有64.1的路由
[R2]dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 4 Routes : 4
Destination/Mask Proto Pre Cost Flags NextHop Interface
64.1.1.0/24 Direct 0 0 D 64.1.1.10 GigabitEthernet
0/0/0
64.1.1.10/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/0
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
[R2]
2.用ACL定义那些数据包要进行数据转换
[R1]acl 2000 //创建序号2000的基础acl
[R1-acl-basic-2000]rule 10 permit source 192.168.0.0 0.0.255.255 //规则允许源IP为192.168.0.0的地址
3.创建NAT地址池
[R1]nat address-group 1 64.1.1.2 64.1.1.6 //创建nat地址池,编号为1,分配了从1.2到1.6的5个公网IP
4.进入g0/0/1接口
[R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1
- NO-PAT 是不做端口转换,只作IP地址转换,也就是BASIC NAT 。而如果是NAPT的话,NO-PAT是不配置的。建议不要配置NO-PAT,不然同一个进程只能使用一个IP地址
5.现在就可以Ping通了
拓扑图(静态NAT)
实验步骤
1.配置IP
2.在AR1上配置静态路由
[R1]ip route-static 200.200.200.0 24 119.1.1.2
3.配置静态NAT
[R1-GigabitEthernet0/0/1]nat static enable
[R1-GigabitEthernet0/0/1]nat static global 119.1.1.123 inside 172.16.0.1
4.用外网客户端分别去Ping内网服务器的公网IP和私网IP,可以看到NAT分配的公网IP可以PING通,内网IP不可以
PC>ping 119.1.1.123
Ping 119.1.1.123: 32 data bytes, Press Ctrl_C to break
Request timeout!
Request timeout!
From 119.1.1.123: bytes=32 seq=3 ttl=126 time=15 ms
From 119.1.1.123: bytes=32 seq=4 ttl=126 time=16 ms
From 119.1.1.123: bytes=32 seq=5 ttl=126 time=15 ms
--- 119.1.1.123 ping statistics ---
5 packet(s) transmitted
3 packet(s) received
40.00% packet loss
round-trip min/avg/max = 0/15/16 ms
PC>ping 172.16.0.1
Ping 172.16.0.1: 32 data bytes, Press Ctrl_C to break
Request timeout!
Request timeout!
Request timeout!
Request timeout!
Request timeout!