|
发现网络版里太少东西了,自己写点东西来。是关于路由器中访问控制列表应用的。访问控制列表有什么用?
例如说:学校有一台服务器只准老师访问不准学生访问就是在路由器或者三层交换机上设置访问控制列表。
用dynamipssee制作两个路由器拓扑图
R1 F0/0--F0/0 R2 (R1通过F0/0与R2的F0/0相连)
R1 F0/0 192.168.1.1 255.255.255.0
R2 F0/0 192.168.1.2 255.255.255.0 F1/0 100.0.0.1 255.0.0.0
R1>enable (可以按“EN”进入特权模式)
R1#configure terminal (可以按“config t"进入特权模式)
在R1上配置一条静态路由命令让R1知道网络100.0.0.0/8 否则PING不到
R1(config)#ip route 100.0.0.0 255.0.0.0 192.168.1.2
R1(config)#access-list ?
<1-99> IP standard access list
<100-199> IP extended access list
<1000-1099> IPX SAP access list
<1100-1199> Extended 48-bit MAC address access list
<1200-1299> IPX summary address access list
<1300-1999> IP standard access list (expanded range)
<200-299> Protocol type-code access list
<2000-2699> IP extended access list (expanded range)
<300-399> DECnet access list
<600-699> Appletalk access list
<700-799> 48-bit MAC address access list
<800-899> IPX standard access list
<900-999> IPX extended access list
dynamic-extended Extend the dynamic ACL absolute timer
rate-limit Simple rate-limit specific access list
1—99和1300-1999为标准访问控制列表 检查IP数据包的源地址
100-199 和2000-2699为宽展型访问控制列表 检查IP数据包的源地址和目的地址
稍后再讲它们的区别。
别的就不说了,很少用到,MAC的可能会用到但是模拟器里弄不出来,学会这两样
别的也很容易上手。
给路由器的端口配置好IP地址
R1(config)#int f0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.252 (ip address 为配置IP地址口令)
R1(config-if)#no shut (激活端口,一般端口都是处于ADMINISTRATIVELY DOWN状态下)
R1(config-if)#exit (退出该端口配置模式)
R1(config)#int f1/0
R1(config-if)#ip add 172.16.1.1 255.255.255.0
R1(config-if)#no shut
然后在R2上也配置好IP地址。
现在在特权模式下PING一下端口是否互通
R2#ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
!!!!!
路由器默认使用离目的地址最近的端口PING,也就是说PING192.168.1.1 R2会用192.168.1.2来作为源地址
先讲
标准访问控制列表
R1(config)#access-list 1 ?
deny Specify packets to reject
permit Specify packets to forward
remark Access list entry comment
deny 绝对 permit 允许 remark给这条访问控制列表做标记,没什么用。。。
R1(config)#access-list 1 deny 192.168.1.0 0.0.0.255
该语句声明拒绝192.168.1这个网段,0.0.0.255叫通配符像网络号和子网掩码一样为10进制 变为二进制就是00000000.00000000.00000000.11111111
0表示路由器会检查该位,是否与你前面输入的网络号匹配,1表示忽略。
进入一个端口,将该语句应用与一个端口
R1(config)#int f0/0
R1(config-if)#ip access-group 1 in (记住!每一个端口in和out只能使用一条ACCESS-LIST
ip access-group 命令是应用访问控制列表 后面的数字表示应用哪条访问控制列表 in表示进入
也就是R2传输数据包从R1的F0/0端口进入R1,如果用out就是R1通过F0/0传送数据包给R2。
现在f0/0端口拒绝源地址为192.168.1.0这个网段的数据包进入接口。)
当一个数据包进入该端口,路由器会按访问控制列表中的语句检查数据包0.0.0.255意思就是只检查前24位。当前24位为192.168.1时该
数据包就会被路由器抛弃不允许进去。
PING一下
R2#ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
U.U.U
不通
用别的地址PING,使用扩展PING命令可以指定使用哪个地址PING对方
R2#ping
Protocol [ip]: ip
Target IP address: 192.168.1.1 (要PING的地址)
Repeat count [5]: (不管按回车)
Datagram size [100]: (不管按回车)
Timeout in seconds [2]: (不管按回车)
Extended commands [n]: y (提问是否使用扩展命令 按Y)
Source address or interface: 100.0.0.1 (要用哪个地址PING对方)
Type of service [0]: (不管按回车)
Set DF bit in IP header? [no]: (不管按回车)
Validate reply data? [no]: (不管按回车)
Data pattern [0xABCD]: (不管按回车)
Loose, Strict, Record, Timestamp, Verbose[none]: (不管按回车)
Sweep range of sizes [n]: (不管按回车)
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5
嘿嘿~当前24位不是192.168.1时也抛弃。当数据包没有与之匹配的语句时路由器就会执行隐藏语句deny any记住
所以要在access-list 1中再加入一个语句
R1(config)#access-list 1 permit any
然后再PING
R2#ping
Protocol [ip]: ip
Target IP address: 192.168.1.1
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 100.0.0.1
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
Packet sent with a source address of 100.0.0.1
!!!!!
记住路由器是从第一条语句开始检查数据包,当找到匹配的语句后就不会再检查下面的语句。所以语句排序很重要。
如果把access-list 1 改成
R1(config)#access-list 1 permit any
R1(config)#access-list 1 deny 192.168.1.0 0.0.0.255
路由器会先看到permit any然后就不会再往下看下面的deny了,所以一般要把permit any放在最后面。
R2#ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
!!!!!
再讲回通配符,要拒绝100.0.0.0 的网络 通配符就用 0.255.255.255 当数据包前8为位10的时候就会被绝对
而后面24位则不理会,如果一个数据包前8位不是十进制10只要有permit any语句就会被允许。
你要拒绝一个网络160.X.X.X的网络,160转为二进制就是10100000通配符可以为0.255.255.255 也就是00000000.11111111.11111111.11111111
也可以用01011111.11111111.11111111.11111111 0表示该位会被检查1表示不检查,也就是说路由器会查看数据包第1位和第3位是否与通配符前的
网络号匹配。
清除前面的语句。
R1(config-if)#no ip access-group 1 in
R1(config-if)#exit
R1(config)#no access-list 1
现在讲一下permit
R1(config)#access-list 1 permit 100.0.0.0 0.255.255.255
R1(config-if)#ip access-group 1 in
该语句声明允许源地址为100.0.0.0网段的数据包进入该端口
R2#ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
U.U.U
不通,因为源地址不是100.0.0.0内的主机。列表1中只有语句permit 100.0.0.0 0.255.255255 当路由器找不到匹配语句时就执行隐藏语句
deny any
用100.0.0.1 PING
R2#ping
Protocol [ip]: ip
Target IP address: 192.168.1.1
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 100.0.0.1
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
Packet sent with a source address of 100.0.0.1
!!!!!
语句允许地址为100.0.0.0网段内的地址进入
如果加入permit any就没有意义了。
现在清除语句做一下OUT的实验。
R2(config)#access-list 1 deny 192.168.1.2 0.0.0.0 (0.0.0.0表示全匹配,也就是拒绝192.168.1.2这个IP地址的数据包)
R2(config)#access-list 1 permit any
R2(config)#int f0/0
R2(config-if)#ip access-group 1 out (现在192.168.1.2无法PING 192.168.1.1因为该端口不允许源地址为192.168.1.1的数据包输出
permit any表示允许别的数据包输出,再次提醒隐含语句deny any)
R2#ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5) (不通,192.168.1.2的数据包不允许通过)
R2#ping
Protocol [ip]: ip
Target IP address: 192.168.1.1
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 100.0.0.1
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
Packet sent with a source address of 100.0.0.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 72/99/136 ms
(有了permit any语句,别的数据包就可以从该端口输出。如果没有该语句路由器就会执行隐藏语句deny any 什么流量都无法输出)
在特权模式下用show ip access-lists 命令可以查看已存在的列表
清除语句,做扩展访问控制列表的实验。
标准访问控制列表只检查数据包的源地址,而扩展访问控制列表检查数据包的源地址和目的地址以及协议。
R2(config)#access-list 100 deny ?
<0-255> An IP protocol number
ahp Authentication Header Protocol
eigrp Cisco's EIGRP routing protocol
esp Encapsulation Security Payload
gre Cisco's GRE tunneling
icmp Internet Control Message Protocol
igmp Internet Gateway Message Protocol
ip Any Internet Protocol
ipinip IP in IP tunneling
nos KA9Q NOS compatible IP over IP tunneling
ospf OSPF routing protocol
pcp Payload Compression Protocol
pim Protocol Independent Multicast
tcp Transmission Control Protocol
udp User Datagram Protocol
封端口就是用这个了。
现在设定一条不允许192.168.1.1 ping 100.0.0.网段的语句
R2(config)#$ 100 deny icmp host 192.168.1.1 100.0.0.0 0.255.255.255 echo
扩展访问控制列表有很大的灵活性 host表是通配符为0.0.0.0即为全匹配路由器会检查该数据包地址32位是否匹配 也就是 192.168.1.1 0.0.0.0 192.168.1.1 0.0.0.0
如果要封TCP 或者UDP语句为
Router(config)#access-list 102 deny tcp host 192.168.1.1 host 100.0.0.1 eq ?
<0-65535> Port number
bgp Border Gateway Protocol (179)
chargen Character generator (19)
cmd Remote commands (rcmd, 514)
daytime Daytime (13)
discard Discard (9)
domain Domain Name Service (53)
drip Dynamic Routing Information Protocol (3949)
echo Echo (7)
exec Exec (rsh, 512)
finger Finger (79)
ftp File Transfer Protocol (21)
ftp-data FTP data connections (20)
gopher Gopher (70)
hostname NIC hostname server (101)
ident Ident Protocol (113)
irc Internet Relay Chat (194)
klogin Kerberos login (543)
kshell Kerberos shell (544)
login Login (rlogin, 513)
lpd Printer service (515)
nntp Network News Transport Protocol (119)
pim-auto-rp PIM Auto-RP (496)
pop2 Post Office Protocol v2 (109)
pop3 Post Office Protocol v3 (110)
smtp Simple Mail Transport Protocol (25)
sunrpc Sun Remote Procedure Call (111)
syslog Syslog (514)
tacacs TAC Access Control System (49)
talk Talk (517)
telnet Telnet (23)
time Time (37)
uucp Unix-to-Unix Copy Program (540)
whois Nicname (43)
www World Wide Web (HTTP, 80)
eq 后面加端口号或者用上面列出各项服务名称,例如按 eq wwww = eq 80
将access-list 120 应用到R2的F0/0上
R2(config-if)#ip access-group 100 in
然后在R1上ping 100.0.0.1
R1>ping 100.0.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.0.0.1, timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5)
R1>ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
U.U.U
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms
再次提醒隐藏语句deny any
要在access-list 100 加上
R2(config)#access-list 100 permit ip any any
R1才可以ping 得到192.168.1.2
R1>ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!! |
|