目录
由于IPV4地址的枯竭,我们的设备想要访问外网,就要对私有地址进行转换;这就用到了NAT将私有地址转换为公有地址;而NAT的前提是ACL(访问控制列表);所以我们先来介绍ACL,在讲解NAT的配置。
(一)ACL:访问控制列表
访问控制:在路由器上流量进或出的接口上规则流量
定义感兴趣流量:为其他的策略取匹配流量
访问控制:定义ACL列表后,将列表调用于路由器的接口上,当流量通过接口时,进行匹配,匹配成功后按照设定好的动作进行处理即可;动作:允许、拒绝
匹配规则:
- 至上而下逐一匹配,
- 上条匹配按上条执行,不再查看下条
- 末尾隐含拒绝所有;
分类:
- 标准ACL--仅关注数据包中的源ip地址
- 扩展ACL--关注数据包中源、目标ip地址、目标端口号、协议号
写法:
编号写法 1-99 标准 100-199 扩展 删除一条整表消失
命名写法 一个名字一张列表 可以随意删除某条
标准ACL配置
由于标准ACL仅关注数据包中的源ip地址,调用时尽量的靠近目标,避免误删;
编号:
Router(config)#access-list 1 deny host 192.168.4.2 //拒绝单一设备
Router(config)#access-list 1 deny 192.168.4.0 0.0.0.255 // 拒绝范围
Router(config)#access-list 1 deny any //拒绝所有
Router(config)#access-list 1 deny host 192.168.4.2
Router(config)#access-list 1 permit any
Router(config)#interface fastEthernet 0/0.1 //在接口调用
Router(config-subif)#ip access-group 1 out
命名写法:
Router(config)#ip access-list standard a
Router(config-std-nacl)#deny host 192.168.4.2
Router(config-std-nacl)#permit any
Router(config-std-nacl)#exit
默认+10生成序列号,便于删除和插入
Router(config)#ip access-list standard a
Router(config-std-nacl)#15 deny host 1.1.1.1
Router(config-std-nacl)#no 15
扩展ACL配置
扩展ACL关注数据包中的源、目标ip地址,故调用时应该尽量的靠近源,当不能在源上,因为ACL不能限制本地产生的流量,只能对穿越本地的流量做过滤。
编号写法 :
Router(config)#access-list 100 deny ip host 192.168.4.2 host 192.168.1.2 //拒绝4.2网段去往1.2网段的主机
Router(config)#access-list 100 deny ip host 192.168.4.0 0.0.0.255 host 192.168.1.0 0.0.0.255 //拒绝范围主机
Router(config)#access-list 100 permit ip any any
Router(config)#interface fastEthernet 0/0 //接口调用
Router(config-if)#ip access-group 100 in
命名写法:
Router(config)#ip access-list extended ccna
Router(config-ext-nacl)#deny ip host 192.168.2.2 host 192.168.3.2
Router(config-ext-nacl)#permit ip any any
Router(config-std-nacl)#int f0/0.1
Router(config-subif)#ip access-group ccna in
关注目标端口号
ICMP--ping 跨层封装协议,不存在端口号
Telnet--远程登录 基于TCP目标23号端口
设备开启远程登录
Router(config)#username ccna privilege 15 secret cisco123
Router(config)#line vty 0 4
Router(config-line)#login local
规则一个设备到另一个设备的目标端口
Router(config)#access-list 101 deny tcp host 1.1.1.1 host 2.2.2.2 eq 23 //远程登录被拒绝
Router(config)#access-list 101 permit ip any any
Router(config)#access-list 102 deny icmp host 1.1.1.1 host 2.2.2.2 //拒绝ping
Router(config)#access-list 102 permit ip any any
(二)NAT:网络地址转换
公有IP(全局)和私有IP(本地)间互换
在边界路由器上,流量从内部去往外部时,将数据包中的源IP地址进行修改(内部本地修改为内部全局); 从流量从外部
进入内部时,修改目标IP地址(外部全局修改为外部本地)
一对一:(静态)
Router(config)#ip nat inside source static 192.168.1.2 12.1.1.2 将内部本地修改为内部全局
一对多:(动态)PAT --端口地址转换
将多个私有IP地址转换为同一公有ip地址,依赖数据包中的端口号来进行区分;
先使用ACL定义感兴趣流量----哪些私有ip地址被转换
Router(config)#access-list 1 permit 192.168.1.0 0.0.0.255
Router(config)#access-list 1 permit 192.168.2.0 0.0.0.255
Router(config)#ip nat inside source list 1 interface fastEthernet 1/0 overload
本地 拥有本地全局地址的接口 负载
多对多:(静态或动态)
Router(config)#access-list 2 permit 192.168.0.0 0.0.255.255 //定义内部本地地址范围
Router(config)#ip nat pool xxx 12.1.1.2 12.1.1.10 netmask 255.255.255.0 //定义内部全局地址范围
Router(config)#ip nat inside source list 2 pool xxx overload //配置多对多PAT
在配置多对多NAT时,是否携带overload将决定为静态或动态多对多:
- 不携带---静态多对多 最先来的边界路由器上的9个私有IP地址与这9个公有IP地址形成一对一;
- 携带----动态多对多 循环占和每个公有IP地址进行NAT;
端口映射
Router(config)#ip nat inside source static tcp 192.168.1.100 80 12.1.1.2 80
通过外部访问12.1.1.2同时目标端口为80时,目标ip地址就一定被转换为192.168.1.100,端口号80;
Router(config)#ip nat inside source static tcp 192.168.1.200 80 12.1.1.2 8080
通过外部访问12.1.1.2同时目标端口为8080时,目标ip地址就一定被转换为192.168.1.200,端口号80;
切记:一旦进行nat配置,就必须定义边界路由器上各个接口的方向
Router(config)#interface fastEthernet 1/0
Router(config-if)#ip nat outside
Router(config-if)#exit
Router(config)#interface fastEthernet 0/0
Router(config-if)#ip nat inside