10.ACL和NAT部署
ACL
为什么要用ACL
ACL的主要功能:流量控制、匹配感兴趣流量
ACL的类型
- 标准访问控制列表
- 只能根据源地址做过滤
- 针对整个协议采取相关动作(在来路或经过计算后选择允许或禁止)
- 拓展访问控制列表
- 能根据源、目的地地址、端口号等进行过滤
- 能允许或拒绝特定的协议
标准ACL的操作
入站及出站
PC1:1.1.1.2—R1-f0/0:1.1.1.1—R1-f0/1:2.2.2.1—PC2:2.2.2.2 | PC3:2.2.2.3
编写ALC规则
R1(config)#access-list [ACL号] [deny/permit/remark] [网段/地址]
# ACL号:<1-99,1300-1999>=标准ACL;<100-199,2000-2699>=拓展ACL
R1(config)#access-list 1 deny host 1.1.1.2
查看ACL列表
R1#show ip access-lists
在接口上调用ACL规则(in方向)
R1(config)#interface f0/0
R1(config-if)#ip access-group 1 in
# 让f0/0接口在in方向上调用1号ACL规则
# 此时ping PC2显示Request timed out
在接口上调用ACL规则(out方向)
R1(config)#interface f0/1
R1(config-if)#ip access-group 1 out
# 此时ping PC2显示Destination host unreachable
在接口上调用多个ACL规则
添加PC4:2.2.2.3
R1(config)#access-list 1 permit host 1.1.1.3
R1(config)#interface f0/0
R1(config-if)#ip access-group 1 in
# ACL号=1的规则禁止PC1通过,允许PC4通过
ACL默认最后一条规则为deny any
# 删除之前的access-list1,重新创建一条
R1(config)#access-list 1 permit host 1.1.1.2
# 由于f0/0口依然保留着之前的使用规则1,该规则直接用于f0/0口
此时PC4无法通过路由器,因为路由器只允许PC1,未设置其他IP设置规则,默认deny any。所以有些时候会在规则下添加
access-list [ACL号] permit any
标准访问控制列表的配置
拓展ACL的操作
通配符(类似EIGRP中的反掩码)
- 0表示严格匹配,1表示无所谓
通过通配符编写ACL规则(计算过程可以参考EIGRP反掩码)
# 将之前的规则1取消掉,重新创建一个新的规则
R1(config)#access-list 1 deny 1.1.1.2 0.0.0.0
# 和deny host 1.1.1.2效果一样
R1(config)#access-list 1 permit any
R1(config)#interface f0/0
R1(config-if)#ip access-group 1 in
# 此时PC1无法无法通过,PC4可以通过
# 重新修改规则1
R1(config)#no access-list 1
R1(config)#access-list 1 deny 1.1.1.0 0.0.0.255
# deny整个1.1.1.0网段
R1(config)#access-list 1 permit any
# 此时PC1和PC4都无法通过
精确匹配:192.168.1.1 0.0.0.0=host 192.168.1.1
匹配所有:0.0.0.0 255.255.255.255=any
扩展访问控制列表的配置
拓展的访问控制列表
R1(config)#access-list 100 deny ip 1.1.1.2 0.0.0.0 2.2.2.2 0.0.0.0
R1(config)#access-list 100 permit ip any any
R1(config)#interface f0/0
R1(config-if)#ip access-group 100 in
# 此时PC1->PC2无法通信,但是其他的都可以通信
telnet访问控制
# 如果给R1配置telnet,此时其他PC可以通过telnet登录R1
R1(config)#enable password cisco
R1(config)#line vty 0 4
R1(config-line)#password cisco
R1(config-line)#login
R1(config)#access-list 101 deny tcp host 1.1.1.2 host 1.1.1.1 eq 23
R1(config)#access-list 101 permit ip any any
R1(config)#interface f0/0
R1(config-if)#ip access-group 101 in
# 此时PC1去telnet连接R1一直显示Trying 1.1.1.1
自定义命名ACL
# 自定义拓展ACL名
R1(config)#ip access-list extended test1
# 配置ACL
R1(config-ext-nacl)#deny ip host 1.1.1.2 host 2.2.2.2
R1(config-ext-nacl)#permit ip any any
# 调用ACL
R1(config)#int f0/0
R1(config-if)#ip access-group test1 in
ACL总结
- 每个接口,每个方向.,每种协议,只能设置1个ACL
- 组织好ACL的顺序,比如测试性的最好放在ACL的最顶部
- 不可能从ACL除去1行,除去1行意味你将除去整个ACL,命名访问列表例外
- 默认ACL结尾语句是deny any,所以你要记住的是在ACL里至少要有1条permit语句
- 创建了ACL后要把它应用在需要过滤的接口上
- ACL是用于过滤经过router的数据包。它并不会过滤router本身所产生的数据包
- 尽可能的把IP标准ACL放置在离目标地址近的地方;尽可能的把IP扩展ACL放置在离源地址近的地方
NAT
为什么需要NAT
-
IPv4地址紧缺
-
NAT(Network Address Translation)
家用路由器相当于三层交换机,既有交换机的特性也有路由器的功能
NAT优缺点
私有IPv4地址
- 10.0.0.0-10.255.255.255
- 172.16.0.0-172.31.255.255
- 192.168.0.0-192.168.255.255
NAT术语
NAT三种类型
- 静态NAT
将内部本地地址与内部全局地址进行一对一的明确转换.这种方法主要用在内部网络中有对外提供服务的服务器,如WEB、MAIL服务器时。该方法的缺点是需要独占宝贵的合法IP地址。即,如果某个合法IP地址已经被NAT静态地址转换定义,即使该地址当前没有被使用,也不能被用作其它的地址转换。
- 动态NAT
动态地址转换也是将内部本地地址与内部全局地址进行一对一的转换。但是,是从内部全局地址池中动态地选择一个未使用的地址对内部本地地址进行转换。该地址是由未被使用的地址组成的地址池中在定义时排在最前面的一个。当数据传输完毕后,路由器将把使用完的内部全局地址放回到地址池中,以供其它内部本地地址进行转换。但是在该地址被使用时,不能用该地址再进行一次转换。
- 端口复用
复用地址转换也称为端口地址转换(Port Address Translation,PAT),首先是一种动态地址转换。路由器将通过记录地址、应用程序端口等唯一标识一个转换。通过这种转换,可以使多个内部本地地址同时与同一个内部全局地址进行转换并对外部网络进行访问。对于只申请到少量IP地址甚至只有一个合法IP地址,却经常有很多用户同时要求上网的情况,这种转换方式非常有用。理想状况下,一个单一的IP地址可以使用的端口数为4000个
配置NAT
Laptop1:192.168.1.2 | Laptop2:192.168.1.3—R1-f0/0:192.168.1.1—R1-f0/1:8.8.8.1—R2-f0/0:8.8.8.8
配置R2路由表:ip route 0.0.0.0 0.0.0.0 8.8.8.1
,不然没有回包
使用静态NAT
# 将内部源地址192.168.1.2转换为8.8.8.2作为外部地址
R1(config)#ip nat inside source static 192.168.1.2 8.8.8.2
# 配置静态NAT的来接口和出接口
R1(config)#interface f0/0
R1(config-if)#ip nat inside
R1(config)#interface f0/1
R1(config-if)#ip nat outside
查看NAT转换表
R1#show ip nat translations
设置动态NAT
# 设置地址池,这里的起始IP和结束IP都是外网地址
R1(config)#ip nat pool [地址池名] [起始IP] [结束IP] netmask [子网掩码]
R1(config)#ip nat pool test1 8.8.8.2 8.8.8.7 netmask 255.255.255.0
# 定义ACL,将内部地址与外部地址转换,写的是内网IP
# 这里ACL号范围是<1-199>,即标准/拓展ACL都可以
R1(config)#access-list [ACL号] permit [内网IP/网段] [反掩码]
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255
# 将ACL和地址池关联起来
R1(config)#ip nat inside source list [ACL号] pool [地址池名]
R1(config)#ip nat inside source list 1 pool test1
# 配置静态NAT的来接口和出接口
R1(config)#interface f0/0
R1(config-if)#ip nat inside
R1(config)#interface f0/1
R1(config-if)#ip nat outside
在通过Laptop1和2对R2进行ping操作后,查看NAT转换表如下;过一段时间后,转换表被销毁;此时每个主机都会分配一个IP,并没有很节省IP
配置PAT地址转换(Overloading)
# 定义ACL号
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255
# 配置PAT地址转换
R1(config)#ip nat inside source list [ACL号] interface [出接口] overload
R1(config)#ip nat inside source list 1 interface f0/1 overload
# 配置静态NAT的来接口和出接口
R1(config)#interface f0/0
R1(config-if)#ip nat inside
R1(config)#interface f0/1
R1(config-if)#ip nat outside
此时Laptop1和2对R2进行ping操作后,NAT转换表如下,源地址都变成8.8.8.1,真正达到节省IP的目的
本文来自博客园,作者:icui4cu,转载请注明原文链接:https://www.cnblogs.com/icui4cu/p/16745251.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App