mirror of
https://github.com/gnu4cn/ccna60d.git
synced 2024-05-21 04:55:00 +08:00
Daily update. 2018-06-22 10:02:32
This commit is contained in:
156
d09-ACL.md
156
d09-ACL.md
@@ -11,7 +11,7 @@
|
||||
- 阅读ICND1记诵指南
|
||||
- 在[subnetting.org](http://www.subnetting.org)上花15分钟
|
||||
|
||||
和子网划分及VLSM一样,访问控制清单(access control lists, ACL)对于新CCNA学员来说,也是一大难点(one of the bugbear subjects)。有关ACL的问题包括,学习相关的IOS配置命令、理解ACL规则(包括隐式的“deny all”规则),以及掌握端口号及协议类型。
|
||||
和子网划分及VLSM一样,访问控制清单(access control lists, ACL)对于新CCNA学员来说,也是一大难点(one of the bugbear subjects)。有关ACL的问题包括,学习相关的IOS配置命令、理解ACL规则(包括隐式的`deny all`规则),以及掌握端口号及协议类型。
|
||||
|
||||
与其它CCNA科目一样,应该在学习过程中一次完成一个小部分,在路由器上使用所见到的每个命令,并完成许多实验。
|
||||
|
||||
@@ -52,9 +52,9 @@
|
||||
- 扩展的编号ACLs
|
||||
- 标准或扩展的命名ACLs
|
||||
|
||||
**标准的编号ACLs是可以应用到路由器上的最为基本的ACL形式**。它们是最易于配置的,因此其可用的过滤有着最大的限制。**它们仅能依据源IP地址或源网络进行过滤**。识别标准ACL的方法就是看配置行的前导数字;标准ACLs的该数字为1到99。
|
||||
**标准的编号ACLs是可以应用到路由器上的最为基本的ACL形式**。它们是最易于配置的,因此其可用的过滤有着最大的限制。**它们仅能依据源IP地址或源网络进行过滤**。识别标准ACL的方法就是看配置行的前导数字;标准ACLs的该数字为`1`到`99`。
|
||||
|
||||
**扩展的编号ACLs可以有多得多的粒度, 但配置和故障排除起来会更难应付。**它们可以对某个目的或源IP地址或网络、某种协议类型以及某个端口号进行过滤(they can filter a destination or source IP address or network, a protocol type, and a port number)。可用于配置扩展ACLs的编号为100到199(包含100和199)。
|
||||
**扩展的编号ACLs可以有多得多的粒度, 但配置和故障排除起来会更难应付。**它们可以对某个目的或源IP地址或网络、某种协议类型以及某个端口号进行过滤(they can filter a destination or source IP address or network, a protocol type, and a port number)。可用于配置扩展ACLs的编号为`100`到`199`(包含`100`和`199`)。
|
||||
|
||||
**命名ACLs允许给某过滤清单一个名称,而不是编号**。这就令到在路由器配置中更易于区别这些ACLs了。命名ACLs可以是标准及扩展ACLs; 在该ACLs的初始化配置行处,可以选择其作为标准ACL还是扩展ACL。
|
||||
|
||||
@@ -70,15 +70,15 @@
|
||||
|
||||
<table>
|
||||
<tr><th>端口</th><th>服务</th><th>端口</th><th>服务</th></tr>
|
||||
<tr><td>20</td><td>FTP数据</td><td>80</td><td>HTTP</td></tr>
|
||||
<tr><td>21</td><td>FTP控制</td><td>110</td><td>POP3</td></tr>
|
||||
<tr><td>22</td><td>SSH</td><td>119</td><td>NNTP</td></tr>
|
||||
<tr><td>23</td><td>Telnet</td><td>123</td><td>NTP</td></tr>
|
||||
<tr><td>25</td><td>SMTP</td><td>161/162</td><td>SNMP</td></tr>
|
||||
<tr><td>53</td><td>DNS</td><td>443</td><td>HTTPS(带有SSL的HTTP)</td></tr>
|
||||
<tr><td>69</td><td>TFTP</td><td></td><td></td></tr>
|
||||
<tr><td>`20`</td><td>FTP数据</td><td>`80`</td><td>HTTP</td></tr>
|
||||
<tr><td>`21`</td><td>FTP控制</td><td>`110`</td><td>POP3</td></tr>
|
||||
<tr><td>`22`</td><td>SSH</td><td>`119`</td><td>NNTP</td></tr>
|
||||
<tr><td>`23`</td><td>Telnet</td><td>`123`</td><td>NTP</td></tr>
|
||||
<tr><td>`25`</td><td>SMTP</td><td>`161/162`</td><td>SNMP</td></tr>
|
||||
<tr><td>`53`</td><td>DNS</td><td>`443`</td><td>HTTPS(带有SSL的HTTP)</td></tr>
|
||||
<tr><td>`69`</td><td>TFTP</td><td></td><td></td></tr>
|
||||
</table>
|
||||
|
||||
|
||||
## 访问控制清单规则,Access Control List Rules
|
||||
|
||||
这是最难掌握的部分之一。我从没有在哪本思科手册中见到里面曾写过一条完整的规则清单。仅有一些手册对其简单概过或是稍加解释,另外一些则完全不讲。难点就在于这些规则一直都在用,但到目前为止你都是通过试误法发现的它们(the difficulty is that the rules always apply but unitil now, you found them only by trial and error)。下面就是你需要知道的这些规则了。
|
||||
@@ -97,14 +97,14 @@
|
||||
|
||||
**the lines are processed top-down**
|
||||
|
||||
某些工程师在他们的ACL未如预期那样运行时感到迷惑。路由器会看看ACL的顶行,在发现匹配后,就会停在那里且不再对其它行进行检查了。为此,需要将**最明确的(最小的)那些条目放在ACL的顶部**(you need to put the most specific entries at the top of the ACL)。比如在利用ACL来阻挡主机172.16.1.1时的做法。
|
||||
某些工程师在他们的ACL未如预期那样运行时感到迷惑。路由器会看看ACL的顶行,在发现匹配后,就会停在那里且不再对其它行进行检查了。为此,需要将**最明确的(最小的)那些条目放在ACL的顶部**(you need to put the most specific entries at the top of the ACL)。比如在利用ACL来阻挡主机`172.16.1.1`时的做法。
|
||||
|
||||
<table>
|
||||
<tr><td>Permit 10.0.0.0</td><td></td><td>没有匹配的</td></tr>
|
||||
<tr><td>Permit 192.168.1.1</td><td></td><td>没有匹配的</td></tr>
|
||||
<tr><td>Permit 172.16.0.0</td><td>〇</td><td>匹配了-放行</td></tr>
|
||||
<tr><td>Permit 172.16.1.0</td><td></td><td>不会处理了</td></tr>
|
||||
<tr><td>Deny 172.16.1.1</td><td></td><td>不会处理了</td></tr>
|
||||
<tr><td>`Permit 10.0.0.0`</td><td></td><td>没有匹配的</td></tr>
|
||||
<tr><td>`Permit 192.168.1.1`</td><td></td><td>没有匹配的</td></tr>
|
||||
<tr><td>`Permit 172.16.0.0`</td><td>`〇`</td><td>匹配了-放行</td></tr>
|
||||
<tr><td>`Permit 172.16.1.0`</td><td></td><td>不会处理了</td></tr>
|
||||
<tr><td>`Deny 172.16.1.1`</td><td></td><td>不会处理了</td></tr>
|
||||
</table>
|
||||
|
||||
在本例中,应该将`Deny 172.16.1.1`这行,放到顶部,或至少应在语句(statement)`Permit 172.16.0.0`之前。
|
||||
@@ -113,20 +113,20 @@
|
||||
|
||||
**There is an implicit "deny all" at the bottom of every ACL**
|
||||
|
||||
这条规则另很多工程师为难。在每条ACL的底部,有着一条看不见的命令。该命令设置为拒绝尚未匹配的所有流量。而阻止此命令起作用的唯一方法,就是在底部手动配置一条`permit all`命令。在取得来自IP地址172.20.1.1的某个进入的数据包时的做法。
|
||||
这条规则另很多工程师为难。在每条ACL的底部,有着一条看不见的命令。该命令设置为拒绝尚未匹配的所有流量。而阻止此命令起作用的唯一方法,就是在底部手动配置一条`permit all`命令。在取得来自IP地址`172.20.1.1`的某个进入的数据包时的做法。
|
||||
|
||||
<table>
|
||||
<tr><td>Permit 10.0.0.0</td><td>无匹配项</td></tr>
|
||||
<tr><td>Permit 192.168.1.1</td><td>无匹配项</td></tr>
|
||||
<tr><td>Permit 172.16.0.0</td><td>无匹配项</td></tr>
|
||||
<tr><td>Permit 172.16.1.0</td><td>无匹配项</td></tr>
|
||||
<tr><td>[Deny all]</td><td>匹配 -- 丢弃数据包</td></tr>
|
||||
<tr><td>`Permit 10.0.0.0`</td><td>无匹配项</td></tr>
|
||||
<tr><td>`Permit 192.168.1.1`</td><td>无匹配项</td></tr>
|
||||
<tr><td>`Permit 172.16.0.0`</td><td>无匹配项</td></tr>
|
||||
<tr><td>`Permit 172.16.1.0`</td><td>无匹配项</td></tr>
|
||||
<tr><td>`[Deny all]`</td><td>匹配 -- 丢弃数据包</td></tr>
|
||||
</table>
|
||||
|
||||
你实际上想要路由器放行该数据包,但却拒绝了。原因就在于那条隐式的“deny all”命令了,而该命令实际上是一种安全手段。
|
||||
你实际上想要路由器放行该数据包,但却拒绝了。原因就在于那条隐式的`deny all`命令了,而该命令实际上是一种安全手段。
|
||||
|
||||
###ACL规则四 -- 路由器是不能过滤自己产生的流量的
|
||||
|
||||
|
||||
**The router can't filter self-generated traffic.**
|
||||
|
||||
这在某个实际网络上于部署ACL前进行测试时,会造成混乱。路由器不会过滤其自身产生的流量。在图9.2中有演示。
|
||||
@@ -136,10 +136,10 @@
|
||||
*图9.2 -- 对自身流量的ACL测试*
|
||||
|
||||
###ACL规则五 -- 不能对运行中的ACL进行编辑
|
||||
|
||||
|
||||
**You can't edit a live ACL.**
|
||||
|
||||
实际上,在IOS 12.4之前的版本中,只能对命名ACL进行编辑, 而不能对标准ACL或扩展ACLs两种进行编辑。这曾是ACL架构的一个局限(this was a limitation of ACL architecture)。在IOS 12.4之前,如想要编辑标准ACL或扩展ACL,就必须按照以下步骤进行(这里使用list 99作为例子)。
|
||||
实际上,在`IOS 12.4`之前的版本中,只能对命名ACL进行编辑, 而不能对标准ACL或扩展ACLs两种进行编辑。这曾是ACL架构的一个局限(this was a limitation of ACL architecture)。在`IOS 12.4`之前,如想要编辑标准ACL或扩展ACL,就必须按照以下步骤进行(这里使用`list 99`作为例子)。
|
||||
|
||||
1. 使用命令`no ip access-group 99 in`,在接口上停用ACL流量(stop ACL traffic on the interface with the `no ip access-group 99 in` command)。
|
||||
2. 将该条ACL复制粘贴到文本编辑器,并在那里编辑好。
|
||||
@@ -206,10 +206,10 @@ Router(config)#int FastEthernet0/0
|
||||
Router(config-if)#ip access-group 1 in ← reapply to the interface
|
||||
```
|
||||
|
||||
如使用的是Packet Tracer, 那么这些命可能不会工作。同时,请一定在某台路由器上尝试这些命令,因为它们是考试考点。**记住在编辑ACL前要先在接口上关闭它(此时它就不再是活动的了),以避免一些奇怪或是不可预期的行为发生**。而在IOS 12.4及以后的版本中,如何来编辑ACLs,会在后面演示。
|
||||
如使用的是Packet Tracer, 那么这些命可能不会工作。同时,请一定在某台路由器上尝试这些命令,因为它们是考试考点。**记住在编辑ACL前要先在接口上关闭它(此时它就不再是活动的了),以避免一些奇怪或是不可预期的行为发生**。而在`IOS 12.4`及以后的版本中,如何来编辑ACLs,会在后面演示。
|
||||
|
||||
###ACL规则六 -- 在接口上关闭ACL
|
||||
|
||||
|
||||
**Disable the ACL on the interface.**
|
||||
|
||||
在打算短时间对ACL进行测试或是撤销ACL时,许多工程师都会将其完全删除掉。这是不必要的。如你要停止ACL运行,只需简单地将其从所应用到的接口上移除即可。
|
||||
@@ -229,15 +229,15 @@ Router(config-if)#^Z
|
||||

|
||||
|
||||
*图9.3 -- ACL的重用*
|
||||
|
||||
|
||||
###ACL规则八 -- ACL应保持简短
|
||||
|
||||
|
||||
ACLs的基本规则就是保持简短且只专注于做一件事情。许多新手的思科工程师,将其ACL延伸到数行那么长,最后,经深思熟虑后,就可以紧缩到少数几行的配置。前面提到的将那些最为特定的(最小的)行放在ACL的顶部。这是好的做法,从而可以节约路由器CPU的执行周期。
|
||||
|
||||
优良的ACL配置技能,来自于知识和操练。
|
||||
|
||||
###ACL规则九 -- 尽可能将ACL放在接近源的地方
|
||||
|
||||
|
||||
思科文档建议将扩展ACL尽量放在离源近的地方,而将标准ACL尽量放在离目的近的地方,因为这可以避免不必要的开销,又能放行那些合法流量。
|
||||
|
||||

|
||||
@@ -247,55 +247,55 @@ ACLs的基本规则就是保持简短且只专注于做一件事情。许多新
|
||||
>Farai 指出 -- “思科官方建议是扩展ACL尽量离源近,而标准ACL尽量离目的近”。
|
||||
|
||||
##反掩码
|
||||
|
||||
|
||||
**Wildcard Masks**
|
||||
|
||||
**因为在ACLs及某些路由协议的配置中,反掩码是命令行的组成部分,所有有必要学习反掩码**。之所有存在反掩码,是因为需要有某种方式来告诉路由器,我们要去匹配IP地址或网络地址的哪些部分。
|
||||
|
||||
匹配实在二进制层面完成的,却可以采用与子网掩码相同的表示法,来容易地配置反掩码。一个二进制1告诉路由器忽略对应的位,0则是要匹配的位。
|
||||
匹配实在二进制层面完成的,却可以采用与子网掩码相同的表示法,来容易地配置反掩码。一个二进制`1`告诉路由器忽略对应的位,`0`则是要匹配的位。
|
||||
|
||||
CCNA考试中反掩码计算的一种简易方法,就是把一个数与子网掩码相加,确保它们的和为255。那么如果子网掩码的某个8位值为192时,需要加上63才等于255。而如果子网掩码的某个8位值为255, 则需要加的就是0。看看下面的例子吧。
|
||||
CCNA考试中反掩码计算的一种简易方法,就是把一个数与子网掩码相加,确保它们的和为`255`。那么如果子网掩码的某个`8`位值为`192`时,需要加上`63`才等于`255`。而如果子网掩码的某个`8`位值为`255`, 则需要加的就是`0`。看看下面的例子吧。
|
||||
|
||||
<table>
|
||||
<tr><th>子网掩码</th><td>255</td><td>255</td><td>255</td><td>192</td></tr>
|
||||
<tr><th>反掩码</th><td>0</td><td>0</td><td>0</td><td>63</td></tr>
|
||||
<tr><th>相加之和</th><td>255</td><td>255</td><td>255</td><td>255</td></tr>
|
||||
<tr><th>子网掩码</th><td>`255`</td><td>`255`</td><td>`255`</td><td>`192`</td></tr>
|
||||
<tr><th>反掩码</th><td>`0`</td><td>`0`</td><td>`0`</td><td>`63`</td></tr>
|
||||
<tr><th>相加之和</th><td>`255`</td><td>`255`</td><td>`255`</td><td>`255`</td></tr>
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<tr><th>子网掩码</th><td>255</td><td>255</td><td>224</td><td>0</td></tr>
|
||||
<tr><th>反掩码</th><td>0</td><td>0</td><td>31</td><td>255</td></tr>
|
||||
<tr><th>相加之和</th><td>255</td><td>255</td><td>255</td><td>255</td></tr>
|
||||
<tr><th>子网掩码</th><td>`255`</td><td>`255`</td><td>`224`</td><td>`0`</td></tr>
|
||||
<tr><th>反掩码</th><td>`0`</td><td>`0`</td><td>`31`</td><td>`255`</td></tr>
|
||||
<tr><th>相加之和</th><td>`255`</td><td>`255`</td><td>`255`</td><td>`255`</td></tr>
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<tr><th>子网掩码</th><td>255</td><td>128</td><td>0</td><td>0</td></tr>
|
||||
<tr><th>反掩码</th><td>0</td><td>127</td><td>255</td><td>255</td></tr>
|
||||
<tr><th>相加之和</th><td>255</td><td>255</td><td>255</td><td>255</td></tr>
|
||||
<tr><th>子网掩码</th><td>`255`</td><td>`128`</td><td>`0`</td><td>`0`</td></tr>
|
||||
<tr><th>反掩码</th><td>`0`</td><td>`127`</td><td>`255`</td><td>`255`</td></tr>
|
||||
<tr><th>相加之和</th><td>`255`</td><td>`255`</td><td>`255`</td><td>`255`</td></tr>
|
||||
</table>
|
||||
|
||||
在想要ACL与匹配某个子网或是整个网络时,就需要输入一个反掩码。比如,要匹配172.20.1.0 255.255.224.0, 就需要输入下面的命令。
|
||||
在想要ACL与匹配某个子网或是整个网络时,就需要输入一个反掩码。比如,要匹配`172.20.1.0 255.255.224.0`, 就需要输入下面的命令。
|
||||
|
||||
`Router(config)#access-list 1 permit 172.20.1.0 0.0.31.255`
|
||||
|
||||
而要匹配子网192.200.1.0 255.255.255.192, 就需要下面的命令。
|
||||
而要匹配子网`192.200.1.0 255.255.255.192`, 就需要下面的命令。
|
||||
|
||||
`Router(config)#access-list 1 permit 192.200.1.0 0.0.0.63`
|
||||
|
||||
在OSPF中应用网络语句时也要当心(be careful when applying network statements with OSPF),那位那也要用到反掩码。
|
||||
|
||||
在有着一个仅有两位主机位的网络时,也要当心,因为需要输入一条ACL来匹配这些主机位。比如,要匹配子网192.168.1.0 255.255.255.252, 或/30的话,需要输入下面的命令。
|
||||
在有着一个仅有两位主机位的网络时,也要当心,因为需要输入一条ACL来匹配这些主机位。比如,要匹配子网`192.168.1.0 255.255.255.252`, 或`/30`的话,需要输入下面的命令。
|
||||
|
||||
`Router(config)#access-list 1 permit 192.168.1.0 0.0.0.3`
|
||||
|
||||
这里剔除了一些配置,是为展示出对应的部分。上面的命令将匹配192.168.1.0网络上的1号和2号主机。而如果要匹配192.168.1.4/30网络上的5号和6号主机,则需输入下面的命令。
|
||||
这里剔除了一些配置,是为展示出对应的部分。上面的命令将匹配`192.168.1.0`网络上的`1`号和`2`号主机。而如果要匹配`192.168.1.4/30`网络上的`5`号和`6`号主机,则需输入下面的命令。
|
||||
|
||||
`Router(config)#access-list 1 permit 192.168.1.4 0.0.0.3`
|
||||
|
||||
请阅读子网划分和VLSM部分的课文,以更好地掌握此概念。
|
||||
|
||||
##访问控制清单的配置
|
||||
|
||||
|
||||
**Configuring Access Control Lists**
|
||||
|
||||
熟能生巧,对于任何技能都是适用的。如同前面提到的,你应该在路由器上输入这里给出的每个例子,完成尽可能多的实验,并构建出自己的实例。在考试和现实世界中,你都需要精准快速的设计ACL。
|
||||
@@ -303,7 +303,7 @@ CCNA考试中反掩码计算的一种简易方法,就是把一个数与子网
|
||||
接下来的章节中出现的标准和扩展ACLs都是编号ACLs。它们是配置ACLs的经典方法。命名ACLs是配置ACLs的另一种方式,将在其后的部分出现。
|
||||
|
||||
###标准ACLs
|
||||
|
||||
|
||||
**Standard ACLs**
|
||||
|
||||
标准的编号ACLs是最易于配置的,所以拿它来作为开端是最好的。**标准ACLs只能实现依据源网络或源IP地址的过滤**。
|
||||
@@ -325,17 +325,19 @@ Router(config)#access-list 1 permit host 192.168.1.1
|
||||
Router(config)#access-list 1 permit 10.1.0.0 0.0.255.255
|
||||
```
|
||||
|
||||
此ACL应在服务器侧的路由器上应用。又记得在清单的底部有一条隐式的“deny all”,所以其它流量都会给阻止掉。
|
||||
此ACL应在服务器侧的路由器上应用。又记得在清单的底部有一条隐式的`deny all`,所以其它流量都会给阻止掉。
|
||||
|
||||
###扩展ACLs
|
||||
|
||||
|
||||
**Extended ACLs**
|
||||
|
||||
**扩展的编号ACLs中可以构建出细得多的粒度**。而正是由于有了细得多的粒度,令到扩展的编号ACLs变得诡异起来。藉由扩展的编号ACLs,可以对源或目的网络地址、端口、协议及服务进行过滤。
|
||||
|
||||
一般来说,你可以看看扩展的ACLs配置语法,就像下面这样。
|
||||
|
||||
`access list# permit/deny [service/protocol] [source network/IP] [destination network/IP] [port#]`
|
||||
```
|
||||
access list# permit/deny [service/protocol] [source network/IP] [destination network/IP] [port#]
|
||||
```
|
||||
|
||||
比如下面这样。
|
||||
|
||||
@@ -483,7 +485,7 @@ Router(config-if)#ip access-group BlockWEB in
|
||||
|
||||
**ACL Sequence Numbers**
|
||||
|
||||
自12.4往后,你会发现思科IOS给每个ACL条目添加了序号。那么现在就可以创建一条访问控制清单,并在其后从它里面一处一行了。
|
||||
自`12.4`往后,你会发现思科IOS给每个ACL条目添加了序号。那么现在就可以创建一条访问控制清单,并在其后从它里面一处一行了。
|
||||
|
||||
```
|
||||
Router(config)#ip access-list standard test
|
||||
@@ -505,10 +507,10 @@ Standard IP access list test
|
||||
注意到**在路由器运行配置中,序号并不会显示出来**。要查看它们,必须执行一个`show [ip] access-list`命令。
|
||||
|
||||
##加入一个ACL行
|
||||
|
||||
|
||||
**Add an ACL Line**
|
||||
|
||||
**要加入一个新的ACL行,只需简单地输入新的序号并接着输入该ACL语句**。下面的例子展示如何往现有的ACL中加入行15。
|
||||
**要加入一个新的ACL行,只需简单地输入新的序号并接着输入该ACL语句**。下面的例子展示如何往现有的ACL中加入行`15`。
|
||||
|
||||
```
|
||||
Router#conf t
|
||||
@@ -531,7 +533,7 @@ Router(config-std-nacl)#
|
||||
|
||||
**Remove an ACL Line**
|
||||
|
||||
要移除某个ACL行,只需简单地敲入`no <seq_number>`命令即可,就如同下面的例子中行20被删除掉了。
|
||||
要移除某个ACL行,只需简单地敲入`no <seq_number>`命令即可,就如同下面的例子中行`20`被删除掉了。
|
||||
|
||||
```
|
||||
Router#conf t
|
||||
@@ -564,8 +566,8 @@ Standard IP access list test
|
||||
Router(config-std-nacl)#
|
||||
```
|
||||
|
||||
命令`resequence`则会创建新的序号,自100开始,每个新行增加20。译者注:在更新的IOS版本中,此命令可指定开始序号及步进序号。
|
||||
|
||||
命令`resequence`则会创建新的序号,自`100`开始,每个新行增加`20`。译者注:在更新的IOS版本中,此命令可指定开始序号及步进序号。
|
||||
|
||||
###ACL日志
|
||||
|
||||
**ACL Logging**
|
||||
@@ -609,10 +611,12 @@ Extended IP access list test
|
||||
|
||||
这时,当有该特定ACL条目匹配时,路由器就会生成一条更为详细的日志消息,当中包含了进入的接口以及源MAC地址。
|
||||
|
||||
`%SEC-6-IPACCESSLOGP: list test denied tcp 10.10.10.2(14013) (FastEthernet0/0 00aa.aabb.ccdd) -> 10.10.10.1(80), 1 packet`
|
||||
```console
|
||||
%SEC-6-IPACCESSLOGP: list test denied tcp 10.10.10.2(14013) (FastEthernet0/0 00aa.aabb.ccdd) -> 10.10.10.1(80), 1 packet
|
||||
```
|
||||
|
||||
**ACL日志在查看到底那些数据包被丢弃或放行的故障排除中,会是非常有用的**, 但在现实世界情形中(此内容超出CCNA考试范围)不得提的是:包含`[log]`或`[log-input]`关键字的ACL条目是为路由器进行线程交换的, 与之相反,现代路由器中, 默认都是经由CEF交换的(ACL entries that contain `[log]` or `[log-input]` keyword are process-switched by the router, as opposed to being CEF-switched, which is the default in modern routers)。这需要更多的路由器CPU周期,因而导致在有大量与被记录的ACL条目匹配时,出现问题。
|
||||
|
||||
|
||||
###使用ACLs来限制Telnet和SSH访问
|
||||
|
||||
**Using ACLs to Limit Telnet and SSH Access**
|
||||
@@ -621,7 +625,7 @@ Extended IP access list test
|
||||
|
||||
有时,我们可能不想接受到设备或自设备发出的所有Telnet/SSH连接。而为实现此操作,就必须定义一条ACL,以指定在VTY线路上所允许或拒绝的流量类型。该ACL可以是编号ACL或命名ACL。通过命令`access-class <acl> | [in|out]`, 将该ACL加入到想要的VTY线路上。
|
||||
|
||||
下面的例子定义了一条允许来自主机10.10.10.1的Telnet流量,该ACL随后被应用到VTY线路的进入方向。
|
||||
下面的例子定义了一条允许来自主机`10.10.10.1`的Telnet流量,该ACL随后被应用到VTY线路的进入方向。
|
||||
|
||||
```
|
||||
Router(config)#ip access-list extended VTY_ACCESS
|
||||
@@ -647,7 +651,7 @@ access-class VTY_ACCESS in
|
||||
|
||||
**Trubleshooting and Verifying ACLs**
|
||||
|
||||
相信有了对配置命令和规则的深入理解,在访问控制清单上就不会有问题了。在ACL不工作的时候,首先要通过ping操作,检查有没有基本的IP连通性问题。接着看看有没有应用该ACL,看看在ACL中有没有什么文字错误,以及你是否需要允许任何IP流量通过(记住那个隐式的”deny all“条目)。而一些在ACL故障排除过程中最重要的检查点包括下面这些。
|
||||
相信有了对配置命令和规则的深入理解,在访问控制清单上就不会有问题了。在ACL不工作的时候,首先要通过ping操作,检查有没有基本的IP连通性问题。接着看看有没有应用该ACL,看看在ACL中有没有什么文字错误,以及你是否需要允许任何IP流量通过(记住那个隐式的`deny all`条目)。而一些在ACL故障排除过程中最重要的检查点包括下面这些。
|
||||
|
||||
- 查看ACL统计信息
|
||||
- 检查所允许的网络
|
||||
@@ -655,7 +659,7 @@ access-class VTY_ACCESS in
|
||||
|
||||
###查看ACL统计信息
|
||||
|
||||
在成功配置一条ACL并将其应用到某个接口上之后,某种可以验证该ACL正确行为的手段非常重要,尤其是某个ACL条目被使用到的次数。基于匹配次数,就可以对过滤策略进行调整,或者对ACLs进行增强,以实现整体安全性的提升。而根据需求的不同,可以在全局层面或者单个接口上(从IOS 12.4开始)查看ACL统计信息。
|
||||
在成功配置一条ACL并将其应用到某个接口上之后,某种可以验证该ACL正确行为的手段非常重要,尤其是某个ACL条目被使用到的次数。基于匹配次数,就可以对过滤策略进行调整,或者对ACLs进行增强,以实现整体安全性的提升。而根据需求的不同,可以在全局层面或者单个接口上(从`IOS 12.4`开始)查看ACL统计信息。
|
||||
|
||||
**ACL全局统计信息**
|
||||
|
||||
@@ -685,7 +689,7 @@ Extended IP access list 100 in
|
||||
30 permit ip host 10.10.10.2 any (31 matches)
|
||||
```
|
||||
|
||||
如未有指定方向,则应用到该特定接口上的任何进或出方向的ACL都将显示出来。此特性也叫做“ACL可管理能力(ACL Manageability)”,自IOS 12.4开始可用。
|
||||
如未有指定方向,则应用到该特定接口上的任何进或出方向的ACL都将显示出来。此特性也叫做“ACL可管理能力(ACL Manageability)”,自`IOS 12.4`开始可用。
|
||||
|
||||
###检查那些放行的网络
|
||||
|
||||
@@ -737,14 +741,14 @@ Extended IP access list 100 in
|
||||
|
||||
**实验步骤**
|
||||
|
||||
1. 配置上面的网络。在两台路由器上加入一条静态路由,领导到任何网络的任何流量都从串行接口发出。这么做的原因是,尽管这不是一个路由实验,仍然需要路由的流量。把.1地址加到路由器A的串行接口,.2地址加到路由器B的串行接口。
|
||||
1. 配置上面的网络。在两台路由器上加入一条静态路由,领导到任何网络的任何流量都从串行接口发出。这么做的原因是,尽管这不是一个路由实验,仍然需要路由的流量。把`.1`地址加到路由器`A`的串行接口,`.2`地址加到路由器`B`的串行接口。
|
||||
|
||||
```
|
||||
RouterA(config)#ip route 0.0.0.0 0.0.0.0 s0/1/0
|
||||
RouterB(config)#ip route 0.0.0.0 0.0.0.0 s0/1/0
|
||||
```
|
||||
|
||||
2. 在路由器A上配置一条标准ACL,放行192.168.1.0/10网络。默认情况下,其它所有网络都将被阻止。
|
||||
2. 在路由器A上配置一条标准ACL,放行`192.168.1.0/10`网络。默认情况下,其它所有网络都将被阻止。
|
||||
|
||||
```
|
||||
RouterA(config)#access-list 1 permit 192.168.1.0 0.0.0.63
|
||||
@@ -755,7 +759,7 @@ RouterA(config)#exit
|
||||
RouterA#
|
||||
```
|
||||
|
||||
3. 从路由器B上测试该条ACL,默认将使用10.0.0.1地址。
|
||||
3. 从路由器`B`上测试该条ACL,默认将使用`10.0.0.1`地址。
|
||||
|
||||
```
|
||||
RouterB#ping 10.0.0.1
|
||||
@@ -765,7 +769,7 @@ UUUUU
|
||||
Success rate is 0 percent (0/5)
|
||||
```
|
||||
|
||||
4. 以源地址192.168.1.1来做另一个ping测试,这将没有问题。
|
||||
4. 以源地址`192.168.1.1`来做另一个ping测试,这将没有问题。
|
||||
|
||||
```
|
||||
RouterB#ping
|
||||
@@ -802,11 +806,11 @@ Success rate is 100 percent (5/5), round-trip min/avg/max = 31/31/32 ms
|
||||
|
||||
**实验步骤**
|
||||
|
||||
1. 配置上述网络。在路由器B上加入一条静态路由,令到前往所有网络的所有流量都从串行接口上发出。这么做是因为,尽管这不是一个路由实验,仍然需要路由流量。
|
||||
1. 配置上述网络。在路由器`B`上加入一条静态路由,令到前往所有网络的所有流量都从串行接口上发出。这么做是因为,尽管这不是一个路由实验,仍然需要路由流量。
|
||||
|
||||
`RouterB(config)#ip route 0.0.0.0 0.0.0.0 s0/1/0`
|
||||
|
||||
2. 在路由器A上配置一条扩展ACL。仅允许往环回接口上发起Telnet流量。
|
||||
2. 在路由器`A`上配置一条扩展ACL。仅允许往环回接口上发起Telnet流量。
|
||||
|
||||
```
|
||||
RouterA(config)#access-list 100 permit tcp any host 172.20.1.1 eq 23
|
||||
@@ -819,11 +823,11 @@ RouterA(config-line)#^Z
|
||||
RouterA#
|
||||
```
|
||||
|
||||
上面的那条ACL编号为100, 这就告诉路由器,它是一条扩展ACL。所要允许的是TCP。该条ACL允许来自任何网络的,目的地址为172.20.1.1的Telnet端口,端口号为23。在执行`show run`命令时,就会看到,路由器实际上会将端口号替换为其对应的名称,就像下面演示的这样。
|
||||
上面的那条ACL编号为`100`, 这就告诉路由器,它是一条扩展ACL。所要允许的是TCP。该条ACL允许来自任何网络的,目的地址为`172.20.1.1`的Telnet端口,端口号为`23`。在执行`show run`命令时,就会看到,路由器实际上会将端口号替换为其对应的名称,就像下面演示的这样。
|
||||
|
||||
`access-list 100 permit tcp any host 172.20.1.1 eq telnet`
|
||||
|
||||
3. 现在,从路由器B上做一个Telnet测试。首先往路由器A的串行接口上Telnet,将会被阻止。接着测试环回接口。
|
||||
3. 现在,从路由器B上做一个Telnet测试。首先往路由器`A`的串行接口上Telnet,将会被阻止。接着测试环回接口。
|
||||
|
||||
```
|
||||
RouterB#telnet 10.0.0.1
|
||||
@@ -836,7 +840,7 @@ Password:
|
||||
RouterA> ←Hit Control+Shift+6 together and then let go and press the X key to quit.
|
||||
```
|
||||
|
||||
>**注意:**我们会在其它实验中涉及ACLs,但你真的需要完全地掌握这些内容。为此,要尝试其它的TCP端口,比如80、25等等。另外,要试试那些UDP端口,比如53。如没有将一台PC接上路由器,则是无法对这些其它端口进行测试的。
|
||||
>**注意:**我们会在其它实验中涉及ACLs,但你真的需要完全地掌握这些内容。为此,要尝试其它的TCP端口,比如`80`、`25`等等。另外,要试试那些UDP端口,比如`53`。如没有将一台PC接上路由器,则是无法对这些其它端口进行测试的。
|
||||
|
||||
##命名ACL实验
|
||||
|
||||
@@ -859,7 +863,7 @@ RouterA(config)#ip route 0.0.0.0 0.0.0.0 s0/1/0
|
||||
RouterB(config)#ip route 0.0.0.0 0.0.0.0 s0/1/0
|
||||
```
|
||||
|
||||
2. 在路由器B上加入一条扩展的命名ACL。只放行主机172.20.1.1,阻止其它任何主机或网络。
|
||||
2. 在路由器`B`上加入一条扩展的命名ACL。只放行主机`172.20.1.1`,阻止其它任何主机或网络。
|
||||
|
||||
```
|
||||
RouterB(config)#ip access-list extended blockping
|
||||
@@ -870,7 +874,7 @@ RouterB(config-if)#ip access-group blockping in
|
||||
RouterB(config-if)#
|
||||
```
|
||||
|
||||
3. 现在分别从路由器A的串行接口和换回接口发出ping来测试该条ACL。
|
||||
3. 现在分别从路由器`A`的串行接口和换回接口发出`ping`来测试该条ACL。
|
||||
|
||||
```
|
||||
RouterA#ping 192.168.1.1
|
||||
|
||||
Reference in New Issue
Block a user