从r1过来的数据包送给r2的时候,r2数据链路层解封装之后会查看是否有acl in的acl。如果有的话先检查acl是否放行,如果放行的话再查路由表然后再进行2层的封装。如果不放行的话直接给discrad。我觉得可能是2个问题导致你能ping成功。第一:ping的时候没有指定source。第二:可能是模拟器的问题
用小凡试了下并debug看了下结果再r2与r1的in方向和r2连pc的out方向都能达到要求!
下面debug是in方向的时候.(先matchacl再查路由表再进行数据链路层的封装)
*Mar 1 00:07:11.751: IP: s=1.1.1.1 (FastEthernet0/0), d=23.1.1.3, len 100, access denied
*Mar 1 00:07:11.751: ICMP type=8, code=0
*Mar 1 00:07:11.751: IP: tableid=0, s=12.1.1.2 (local), d=1.1.1.1 (FastEthernet0/0), routed via FIB
*Mar 1 00:07:11.755: IP: s=12.1.1.2 (local), d=1.1.1.1 (FastEthernet0/0), len 56, sending
*Mar 1 00:07:11.755: ICMP type=3, code=13
下面是在r2连pc的out方向时候的debug(先查路由表,然后check acl,之后进行数据链路层的封装)
*Mar 1 00:11:47.799: IP: tableid=0, s=1.1.1.1 (FastEthernet0/0), d=23.1.1.3 (FastEthernet0/1), routed via FIB
*Mar 1 00:11:47.799: IP: s=1.1.1.1 (FastEthernet0/0), d=23.1.1.3 (FastEthernet0/1), len 100, access denied
*Mar 1 00:11:47.803: ICMP type=8, code=0
*Mar 1 00:11:47.803: IP: tableid=0, s=12.1.1.2 (local), d=1.1.1.1 (FastEthernet0/0), routed via FIB
*Mar 1 00:11:47.803: IP: s=12.1.1.2 (local), d=1.1.1.1 (FastEthernet0/0), len 56, sending
*Mar 1 00:11:47.803: ICMP type=3, code=13