ACL实现包过滤 NAT网络地址转换
这系列文章为计算机网络理论的学习笔记,学习笔记基于老师给的的PPT、他人学习笔记和维基百科、百度百科等一系列权威资料。学习笔记仅个人学习用,便于记录和复习,无广泛传播之意,若有侵权,请联系我删除。欢迎各位大佬指正和交流。
1 用访问控制列表(ACL)实现包过滤
本次学习部分内容来自于:华为 的 什么是ACL
1.1 ACL的简介
ACL:访问控制列表是一种基于包过滤的访问控制技术,根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。
1.1.1 ACL的定义
在我看来,ACL就是由一条或多条规则组成的集合,以实现包过滤(相当于报文过滤器)。
ACL所组成的条件规则可以是报文的源地址、目的地址、端口号等,是一种应用在网络设备各种软硬接口上的的指令列表。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。
1.1.2 ACL的应运而生
随着网络的飞速发展,网络安全和网络服务质量QoS(Quality of Service)问题日益突出。
- 企业重要服务器资源被随意访问,企业机密信息容易泄露,造成安全隐患。
- Internet病毒肆意侵略企业内网,内网环境的安全性堪忧。
- 网络带宽被各类业务随意挤占,服务质量要求最高的语音、视频业务的带宽得不到保障,造成用户体验差。
针对以上对正常网络通信造成影响的问题,表明提高网络安全性服务质量迫在眉睫。ACL便应运而生了。
通过ACL可以实现对网络中报文流的精确识别和控制,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。
典型的ACL应用组网场景,前往学习:点我!!点我!!
1.1.3 ACL的应用场景
- 包过滤防火墙功能
- NAT(Network Address Translation,网络地址转换)
- QoS(Quality of Service,服务质量)的数据分类
- 路由策略和过滤
- 按需拨号
1.2 ACL的包过滤原理
ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文。
1.2.1 ACL的组成
- ACL编号:用于标识ACL,表明该ACL是数字型ACL。ACL类型多,每类ACL编号的取值范围不同。后面会介绍。
- 规则:即描述报文匹配条件的判断语句。
- 规则编号:用于标识ACL规则。可以自行配置规则编号,也可以由系统自动分配。系统按照规则编号从小到大的顺序,将规则依次与报文匹配,一旦匹配上一条规则即停止匹配。
- 动作:包括permit/deny两种动作,表示允许/拒绝。
- 匹配项:除了上图中的源地址和生效时间段,ACL还支持很多其他规则匹配项。后面会介绍。
1.2.2 ACL分类
(一)基于ACL标识方法的划分
- 数字型ACL:传统的ACL标识方法。创建ACL时,指定一个唯一的数字标识该ACL。
- 命名型ACL:通过名称代替编号来标识ACL。 “名字+数字”的形式,定义命名型ACL时同时指定ACL编号。如果不指定编号,则由系统自动分配。例如:acl name deny-telnet-login 5200
命名型ACL一旦创建成功,便不允许用户再修改其名称。如果删除ACL名称,则表示删除整个ACL。
仅基本ACL与基本ACL6,以及高级ACL与高级ACL6,可以使用相同的ACL名称;其他类型ACL之间,不能使用相同的ACL名称。
(二) 基于对IPv4和IPv6支持情况的划分
- ACL4:通常直接叫做“ACL”,特指仅支持过滤IPv4报文的ACL。
- ACL6:又叫做“IPv6 ACL”, 特指仅支持过滤IPv6报文的ACL。
以上两种ACL,以及既支持过滤IPv4报文又支持过滤IPv6报文的ACL,统一称做“ACL”。
(三) 基于ACL规则定义方式的划分
分类 |
适用的IP版本 |
规则定义描述 |
编号范围 |
---|---|---|---|
基本ACL |
IPv4 |
仅使用报文的源IP地址、分片信息和生效时间段信息定义规则。 |
2000~2999 |
高级ACL |
IPv4 |
既可使用IPv4报文的源IP地址,也可使用目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口、UDP源/目的端口号、生效时间段等来定义规则。 |
3000 ~ 3999 |
二层ACL |
IPv4&IPv6 |
使用报文的以太网帧头信息来定义规则,如根据源MAC(Media Access Control)地址、目的MAC地址、二层协议类型等。 |
4000~4999 |
用户自定义ACL |
IPv4&IPv6 |
使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则,即以报文头为基准,指定从报文的第几个字节开始与字符串掩码进行“与”操作,并将提取出的字符串与用户自定义的字符串进行比较,从而过滤出相匹配的报文。 |
5000~5999 |
用户ACL |
IPv4 |
既可使用IPv4报文的源IP地址,也可使用目的IP地址、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。 |
6000~6031 |
基本ACL6 |
IPv6 |
使用IPv6报文的源IPv6地址、分片信息和生效时间段定义规则。 |
2000~2999 |
高级ACL6 |
IPv6 |
可以使用IPv6报文的源IPv6地址、目的IPv6地址、IPv6协议类型、ICMPv6类型、TCP源/目的端口、UDP源/目的端口号、生效时间段等来定义规则。 |
3000~3999 |
(四)基本ACL
基本访问控制列表只根据报文的源IP地址信息制定规则。
(五)高级ACL
高级访问控制列表根据报文的源IP地址、目的IP地址、IP承载的协议类型、协议特性等三、四层信息制定规则。
(六) 二层ACL与用户自定义ACL
- 二层ACL根据报文的源MAC地址、目的MAC地址、802.1p优先级、二层协议类型等二层信息制定匹配规则
- 用户自定义ACL可以根据任意位置的任意字串制定匹配规则
- 报文的报文头、IP头等为基准,指定从第几个字节开始与掩码进行“与”操作,将从报文提取出来的字符串和用户定义的字符串进行比较,找到匹配的报文。
1.2.3 常用匹配项
想要具体学习的可前往:点我!!点我!!
设备支持的ACL匹配项种类非常丰富,其中最常用的匹配项包括以下几种。
(一)生效时间段
格式:time-range time-name //所有ACL均支持根据生效时间段过滤报文。
(二)IP承载的协议类型
格式:protocol-number | icmp | tcp | udp | gre | igmp | ip | ipinip | ospf //高级ACL支持基于协议类型过滤报文。
(三)源/目的IP地址及其通配符掩码
源IP地址及其通配符掩码格式:source { source-address source-wildcard | any }
目的IP地址及其通配符掩码格式:destination { destination-address destination-wildcard | any }
(四)源/目的MAC地址及其通配符掩码
源MAC地址及其通配符掩码格式:source-mac source-mac-address [ source-mac-mask ]
目的地址及其通配符掩码格式:destination-mac dest-mac-address [ dest-mac-mask ]
(五)VLAN编号及其掩码
外层VLAN及其掩码格式:vlan-id vlan-id [ vlan-id-mask ]
内层VLAN及其掩码格式:cvlan-id cvlan-id [ cvlan-id-mask ] //二层ACL支持基于外层VLAN或内层VLAN编号过滤报文。
(六)TCP/UDP端口号
源端口号格式:source-port { eq port | gt port | lt port | range port-start port-end }
目的端口号格式:destination-port { eq port | gt port | lt port | range port-start port-end }
(七)TCP标志信息
格式:tcp-flag { ack | established | fin | psh | rst | syn | urg }*
(八)IP分片信息
格式:none-first-fragment //基本ACL和高级ACL支持基于IP分片信息过滤报文。
1.2.4 基于ACL的包过滤技术
- 对进出的数据包逐个过滤,丢弃或允许通过。
- ACL应用于接口上,每个接口的出入双向分别过滤。
- 仅当数据包经过一个接口时,才能被此接口的此方向的ACL过滤。
1.2.5 ACL的匹配机制
设备将报文与ACL规则进行匹配时,遵循“一旦命中即停止匹配”的机制。
无论入站还是出站,其包过滤工作流程大致相同。
从整个ACL匹配流程可以看出,报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”。
- 匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则。
不论匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配”。
- 不匹配(未命中规则):指1. 不存在ACL,2. ACL中无规则,3. 在ACL中遍历了所有规则都没有找到符合匹配条件的规则。
以上三种情况,都叫做“不匹配”。
- rule permit xxx/rule permit xxxx:表示允许指定的报文通过,xxx/xxxx表示指定报文的标识,可以是源IP地址、源MAC地址、生效时间段等。xxxx表示的范围与xxx表示的范围是包含关系,例如xxx是某一个IP地址,xxxx可以是该IP地址所在的网段地址或any(表示任意IP地址);再如xxx是周六的某一个时段,xxxx可以是双休日全天时间或一周七天全部时间。
- rule deny xxx/rule deny xxxx:表示拒绝指定的报文通过。
- rule permit:表示允许所有报文通过。
- rule deny:表示拒绝所有报文通过。
1.2.6 通配符掩码
- 通配符掩码和IP地址结合使用以描述一个地址范围
- 通配符掩码和子网掩码相似,但含义不同
- 0表示对应位须比较
- 1表示对应位不比较
IP地址与通配符掩码共同确定的地址范围:
通配符掩码的含义(转换成二进制看):
通配符掩码 |
含义(0比较 1不比较) |
---|---|
0.0.0.255 (00000000.00000000.00000000.11111111) |
只比较前24位 |
0.0.3.255 (00000000.00000000.00000011.11111111) |
只比较前22位 |
0.255.255.255 (00000000.11111111.11111111.11111111) | 只比较前8位 |
1.2.7 通配符掩码的应用示例
IP地址 |
IP地址通配符掩码 |
确定的地址范围 |
---|---|---|
0.0.0.0 |
255.255.255.255 |
任意IP地址 |
192.168.0.1 |
0.0.3.255 |
192.168.0.0/22网段的IP地址 |
192.168.0.1 |
0.0.0.0 |
仅192.168.0.1这一个主机地址 |
192.168.0.1 |
0.0.0.7 |
192.168.0.1/29网段的IP地址 |
192.168.0.8 |
0.0.0.7 |
192.168.0.8/29网段的IP地址 |
192.168.0.1 | 0.0.2.255 |
192.168.0.0/24和192.168.2.0/24网段的IP地址 |
10.1.2.0 |
0.0.254.255 (通配符掩码中的1和0不连续) |
10.1.0.0/24~10.1.254.0/24网段之间且第三个字节为偶数的IP地址,如10.1.0.0/24、10.1.2.0/24、10.1.4.0/24、10.1.6.0/24…… |
1.3 ACL包过滤配置任务
- 启动包过滤防火墙功能,设置默认的过滤规则。
- 根据需要选择合适的ACL分类。
- 创建正确的规则:
- 设置匹配条件
- 设置合适的动作(Permit/Deny)
- 在路由器的接口上应用ACL,并指明过滤报文的方向(入站/出站)。
具体学习可前往:H3C 的 配置基本ACL
1.4 ACL包过滤的注意事项
1.4.1 ACL规则的匹配顺序
a. 匹配顺序指ACL中规则的优先级。
b. ACL支持两种匹配顺序:
配置顺序(config):按照用户配置规则的先后顺序进行规则匹配。
自动排序(auto):按照“深度优先”的顺序进行规则匹配,即地址范围小的规则被优先进行匹配。
c. 配置ACL的匹配顺序:
[sysname] acl number acl-number [ match-order { auto | config } ]
不同匹配顺序导致结果不同:
- match-order config配置优先(谁在前面谁优先)
- match-order auto深度优先(地址范围小的优先)
1.4.2 在网络中的正确位置配置ACL包过滤
尽可能在靠近数据源的路由器接口上配置ACL,以减少不必要的流量转发。
- 基本ACL
- 过于靠近被过滤源的基本ACL可能阻止该源访问合法目的。
- 应在不影响其他合法访问的前提下,尽可能使ACL靠近被过滤的源。
- 高级ACL
- 应该在靠近被过滤源的接口上应用ACL,以尽早阻止不必要的流量进入网络。
基本ACL部署位置示例:
要求PCA不能访问NetworkA和NetworkB,但可以访问其他所有网络。
高级ACL部署位置示例:
要求PCA不能访问NetworkA和NetworkB,但可以访问其他所有网络。
1.4.3 ACL包过滤的局限性
- ACL包过滤防火墙是根据数据包头中的二、三、四层信息来进行报文过滤的,对应用层的信息无法识别:
- 无法根据用户名来决定数据是否通过。
- 无法给不同的用户授予不同的权限级别。
- ACL包过滤防火墙是静态防火墙,无法对应用层协议进行动态检测。
2 NAT-网络地址转换
随着网络迅速发展, IPv4地址不敷使用以及分配不均的问题显现,私有地址用户需要访问Internet,这时NAT提供了私有地址到公有地址的转换。
2.1 NAT组网和常用术语
NAT(Network Address Translation,网络地址转换):用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。
公有地址(公网):在Internet使用的IP地址,通过它直接访问因特网。
私有地址(私网):在局域网中使用的IP地址,属于非注册地址,专门为组织机构内部使用。
NAT设备:私网转换为公网的一种网络设备,可以是:路由器、防火墙、linux服务器、负载均衡器……
当私有网络内的主机要与位于公网上的主机进行通讯时必须经过地址转换,将其私有地址转换为合法公网地址才能对外访问。
- 任何组织都可以任意使用私有地址空间。
- 私有地址在Internet上无法路由。
- 如果采用私有地址的网络需要访问Internet,必须在出口处部署NAT设备。
2.2 NAT的工作原理
2.2.1 转换方式
a. 报文出网关,将私有的源地址转换成公网地址,目标地址不变。
b. 出口网关收到报文的时候,将目标公网地址转换成私有地址,源地址不变。
2.2.2 转换模式
a. 基于IP转换
b. 基于端口转换
2.2.3 NAT的实现方式
NAT 有三种实现方式:静态NAT(Static NAT)、动态地址NAT(Pooled NAT)、网络地址端口转换NAPT(Port-Level NAT)。
a. 静态NAT(Static NAT)
静态NAT方式中,内部的IP地址与公有IP地址是一种一一对应的映射关系(相当内部本地的每一台PC都绑定了一个全局地址)。但是采用这种方式的前提是:机构能够申请到足够多的全局IP地址,一般用于在内网中对外提供服务的服务器。
b. 动态地址NAT(Pooled NAT)
动态地址NAT方式中,内部的IP地址与公有IP地址是多对一的关系。在内部IP地址转换时,提供分配一个临时的外部IP地址进行转换,当用户断开时,这个IP地址就会被释放便于以后使用。一般用于在机构申请到的全局IP地址较少,而内部网络主机较多的情况。
c. 网络地址端口转换NAPT(Port-Level NAT)
网络地址端口转换NAPT方式中,是把内部地址映射到外部网络的一个IP地址的不同端口上。与动态地址NAT不同的是,NAPT将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。
关键点:利用端口号的唯一性实现了公网 IP 到私网 IP 的转换,可以同时让多台主机共用一个公网 IP 地址。
NAPT是使用最普遍的一种转换方式,它又包含两种转换方式:SNAT和DNAT。
NAPT也被称为“多对一”的NAT,或者叫PAT(Port Address Translations,端口地址转换)、地址超载(address overloading)。
2.3 配置Basic NAT
Basic NAT实现私网地址与公网地址一对一转换。
- 配置ACL
- 用于判断哪些数据包的地址应被转换。
- 被ACL允许(permit)的报文将被进行NAT转换,被拒绝(deny)的报文将不会被转换。
- 配置地址池
- nat address-group group-number start-addr end-addr
- 配置地址转换
- nat outbound acl-number address-group group-number no-pat
Basic NAT配置示例:
2.4 配置NAPT
NAPT实现私网地址与公网地址的多对一转换。
- 配置ACL
- 用于判断哪些数据包的地址应被转换。
- 被ACL允许(permit)的报文将被进行NAT转换,被拒绝(deny)的报文将不会被转换。
- 配置地址池
- nat address-group group-number start-addr end-addr
- 配置地址转换
- nat outbound acl-number address-group group-number
NAPT配置举例:
2.5 配置Easy IP
Easy IP适用于出接口地址无法预知的场合。
NAT设备直接使用出接口的IP地址作为转换后的源地址。
不用预先配置地址池。
工作原理与普通NAPT相同,是NAPT的一种特例。
适用于拨号接入Internet或动态获得IP地址的场合。
- 配置ACL
- 用于判断哪些数据包的地址应被转换。
- 被ACL允许(permit)的报文将被进行NAT转换,被拒绝(deny)的报文将不会被转换。
- 配置地址转换
- nat outbound acl-number
Easy IP配置举例:
2.6 NAT Server
- NAT Server配置命令:
- nat server protocol pro-type global global-addr [ global-port ] inside host-addr [ host-port ]
NAT Server配置举例:
2.7 NAT ALG
2.8 NAT的信息显示和调试
- 显示地址转换信息
- display nat { address-group | aging-time | all | outbound | server | statistics | session | [ slot slot-number ] | [ source global global-addr | source inside inside-addr ] | [ destionation ip-addr ] }
- 调试地址转换过程
- debugging nat { alg | event | packet [ interface interface-type interface-number ] } nat aging-time { tcp | udp | icmp} seconds
- 清除地址转换连接
- reset nat session
ACL实现包过滤 NAT网络地址转换相关推荐
- ACL访问控制表与NAT网络地址转换
一.ACL的作用 用来对数据包做访问控制(丢弃或者放行) 结合其他协议,用来匹配范围 (一)acl工作原理 当数据包从接口经过时,由于接口启用了acl,此时路由器会对报文进行检查,然后做出相应的处理. ...
- 【CyberSecurityLearning 44】iptables包过滤与网络地址转换
目录 iptables包过滤与网络地址转换 Linux包过滤防火墙概述 iptables的基本语法 iptables的管理选项 iptables规则的匹配条件 常见的通用匹配条件 常用的隐含匹配条件( ...
- Nat网络地址转换实验
实验要求: 使用Nat网络地址转换完成下图中所有的要求 第一步:子网划分,ip地址规划 本实验网段差异较大,所以我们在左边类似企业内网的网段直接使用192.168.1.0/24网段.右边的isp网段我 ...
- NAT 网络地址转换
NAT 网络地址转换 内网 源地址(私有地址-公有地址)目标(公有地址) 外网 源地址(公有)目标(公有-私有地址) 1.动态NAT地址池(已不再使用了,用于内到外的访问) 动态NAT地址池配置 配置 ...
- eNSP—静态路由+NAT网络地址转换
实验需求 1.全网可达 2.拓扑中所需地址全部基于192.168.0.0/24划分所得 3.静态路由(不许使用其他动态) 4.R1的有三个环回,需要汇总 DNS.http部分属于扩展部分,模拟网页访问 ...
- 网络入门-NAT网络地址转换-Easy ip
209.NAT网络地址转换--Easy IP :允许多个私网地址转换成公网IP地址:企业网常用: 210 .实验topo: 原理: 内网私网地址转换成公网接口g0/0/1 当前的IP地址: 先将内网 ...
- HCIP——NAT网络地址转换
目录 NAT网络地址转换 NAT MAC 课堂实验 NAT网络地址转换 在IPV4地址中存在私有与公有IP地址的区别: 公有IP地址-----具有全球唯一性,可以在互联网中通讯,需要付费使用 私有IP ...
- 细致讲解一下NAT网络地址转换技术
目录 静态nat 静态nat配置 动态nat 动态nat配置 NAPT(Network Address and Port Translation,网络地址端口转换 NAPT配置 Easy IP Eas ...
- 网络技术:NAT 网络地址转换及原理
NAT 网络地址转换(NAT)技术的理论部分可以看博客--网络层--NAT.NAT 的功能大致为:在局域网中组织会为内部主机分配私有地址,当内部主机发送数据包到外部网络时私有地址就会自动转换为公有 I ...
最新文章
- 37. 两个链表的第一个公共结点
- vscode如何用浏览器预览运行html文件
- vs与git中间的阻拦--Git failed with a fatal error. error: open(“.vs/GBA/v16/Server/sqlite3/db.lock
- 2020-03-21
- 先用knn对数据集进行预处理再利用神经网络对数据集进行分类_数据挖掘的预处理方法:综述...
- lightoj 1214
- CentOS6.4安装Vbox增强包
- 金融系统中正确的金额计算及存储方式
- 从互联网跳到传统企业,我再也不精神内耗了
- 关于Coolie编码
- LeetCode:数组(排列组合,二分查找I,二分查找II)
- mysql和myODBC安装和配置
- 两个EXcel的关联表格进行合并详细步骤
- 全球及中国保健品市场消费需求与投资价值评估报告2022-2028年
- 通达oa wbupload.php,通达 OA 代码审计篇二 :11.8 后台 Getshell
- GDUT2020新生赛——解题报告
- Android自问自答系列——持续更新ING
- 加密算法比较和项目应用
- 算法博弈与计算机经济学,算法博弈论的一点感想和介绍
- 为某个酒店编写程序:酒店管理系统,模拟订房、退房、打印所有房间状态等功能。
热门文章
- 鸿蒙5G的营业执照,华为继“鸿蒙”商标后注册“5G”商标
- arduino+无源蜂鸣器制作音乐(引入篇)——从结构到原理
- 2020投资入籍项目排名:圣基茨和尼维斯投资移民项目全球最快批复
- element ui table 报错 type check failed for prop “showOverflowTooltip“. Expected Boolean, got Stri
- 毕业礼物——“广工云毕业”小程序开发
- DXC Technology声明
- 经典力学、相对论、量子力学
- 常见的SEO工具有哪些
- 关于报错信息为A complete log of this run can be found in:
- 对CSDN高校俱乐部的建议