1 底層配置
R1
interface Serial2/1
ip address 12.0.0.1 255.255.255.0
router eigrp 90
network 12.0.0.0 0.0.0.255
no auto-summary
R2
interface Serial2/1
ip address 12.0.0.2 255.255.255.0
interface Serial2/2
ip address 23.0.0.2 255.255.255.0
router eigrp 90
network 0.0.0.0
no auto-summary
R3
interface Serial2/1
ip address 23.0.0.3 255.255.255.0
router eigrp 90
network 23.0.0.0 0.0.0.255
no auto-summary
2 在R2上做ACL 拒絕R3對(duì)R1的所有TCP連接,但不能影響R1對(duì)R3的telnet
在這里我們先用擴(kuò)展訪問(wèn)列表做一下,看能不能實(shí)現(xiàn)。
r2(config)#access-list 100 deny tcp host 23.0.0.3 host 12.0.0.1
r2(config)#access-list 100 permit ip any any
r2(config)#int s2/2
r2(config-if)#ip access-group 100 in / 將ACL應(yīng)用到接口
為了驗(yàn)證將R1和R3的VTY線(xiàn)路配置成直接登陸,無(wú)需密碼。
r1(config)#line vty 0 4
r1(config-line)#no login
r3(config)#line vty 0 4
r3(config-line)#no login
現(xiàn)在進(jìn)行驗(yàn)證。
r3#telnet 12.0.0.1
Trying 12.0.0.1 ...
% Destination unreachable; gateway or host down
在R3上無(wú)法telnetR1,訪問(wèn)列表起了作用。我們?cè)偃1做一下驗(yàn)證。
r1#telnet 23.0.0.3
Trying 23.0.0.3 ...
% Connection timed out; remote host not responding
這時(shí),R1也無(wú)法telnet R3 這可不是我們所希望的結(jié)果。那為什么會(huì)產(chǎn)生這種結(jié)果呢?這是因?yàn)镽1向R3發(fā)起telnet請(qǐng)求時(shí),是R1的一個(gè)隨機(jī)端口與R3的23號(hào)端口通信。R3收到這個(gè)請(qǐng)求后,再用自己的23號(hào)端口向R1的隨即端口回應(yīng)。在這個(gè)例子中,R1向R3的請(qǐng)求,R3可以收到。但當(dāng)R3向R1回應(yīng)時(shí),卻被R2上的ACL阻止了。因?yàn)镽2的ACL的作用是阻止R3向R1的所有TCP連接。這個(gè)TCP回應(yīng)也就被阻止掉了,所以就間接的造成了R1無(wú)法telnet到R3.
綜上所述,在R2上用擴(kuò)展訪問(wèn)列表可以阻止R3主動(dòng)向R1發(fā)起的TCP連接。但也阻止了R3被動(dòng)向R1發(fā)的TCP回應(yīng)。這是不合題意的。因此就目前而言,擴(kuò)展訪問(wèn)列表無(wú)法滿(mǎn)足這個(gè)需求。于是就引出了一個(gè)新型的訪問(wèn)列表―――自反訪問(wèn)控制列表。
3 用自反訪問(wèn)列表解決此問(wèn)題。
注意:因?yàn)樽苑戳斜碇荒芙⒃诿L問(wèn)控制列表中,所以這里只能用命名控制列表
r2#sh ip access-lists
Reflexive IP access list REF
/ 觸發(fā)的自反列表項(xiàng),匹配自反列表后自動(dòng)產(chǎn)生
Extended IP access list REFIN
deny tcp host 23.0.0.3 host 12.0.0.1
permit ip any any
evaluate REF
/ 根據(jù)上面的自反列表項(xiàng)執(zhí)行
Extended IP access list REFOUT
permit ip any any reflect REF
/ 建立自反列表
r2(config)#int s2/2
r2(config-if)#ip access-group REFIN in
/ 在進(jìn)方向調(diào)用列表REFIN
r2(config-if)#ip access-group REFOUT out
/在出方向調(diào)用列表REFOUT
下面進(jìn)行檢驗(yàn)
r3#telnet 12.0.0.1
Trying 12.0.0.1 ...
% Destination unreachable; gateway or host down
R3無(wú)法登陸R1,這一步成功。再到R1上驗(yàn)證
r1#telnet 23.0.0.3
Trying 23.0.0.3 ...
% Connection timed out; remote host not responding
R1也無(wú)法登陸R3,這個(gè)需求失敗了,我們到R2上查看一下ACL
r2#sh ip access-lists
Reflexive IP access list REF
permit tcp host 23.0.0.3 eq telnet host 12.0.0.1 eq 11013 (5 matches) (time left 285)
Extended IP access list REFIN
deny tcp host 23.0.0.3 host 12.0.0.1 (18 matches)
permit ip any any (150 matches)
evaluate REF
Extended IP access list REFOUT
permit ip any any reflect REF (5 matches)
讓我們仔細(xì)的分析一下這個(gè)過(guò)程,當(dāng)R3登陸R1時(shí),R2 in 方向的REFIN 列表的第一條語(yǔ)句 deny tcp host 23.0.0.3 host 12.0.0.1 起了作用,因此登陸失敗。
當(dāng)R1登陸R3時(shí),R1先向R3發(fā)起TCP請(qǐng)求,當(dāng)這個(gè)請(qǐng)求數(shù)據(jù)包從R2的S2/2接口出來(lái)時(shí)匹配了REFOUT 列表的permit ip any any reflect REF 的這條語(yǔ)句。并觸發(fā)了一條自反項(xiàng)。
我們可以看到permit tcp host 23.0.0.3 eq telnet host 12.0.0.1 eq 11013 (5 matches) (time left 285) 這個(gè)自反項(xiàng)是由于觸發(fā)自動(dòng)產(chǎn)生的。它的意思是允許R3用自己的23端口對(duì)R1向自己發(fā)出的telnet請(qǐng)求作出回應(yīng),這個(gè)回應(yīng)向R1的隨機(jī)端口11013發(fā)出。我開(kāi)始看到產(chǎn)生了這個(gè)自反項(xiàng),就覺(jué)得R1應(yīng)該能成功登陸R3.但事實(shí)并不是如此。這是因?yàn)殡m然產(chǎn)生了這條自反項(xiàng),但要使數(shù)據(jù)包按照這個(gè)自反項(xiàng)來(lái)走,還需要匹配 evaluate REF 這條語(yǔ)句。而這條語(yǔ)句是建立在列表REFIN 中。當(dāng)R3向R1的回應(yīng)數(shù)據(jù)包到達(dá)R2時(shí)先要匹配列表REFIN .這時(shí)我們可以看到這個(gè)數(shù)據(jù)包直接匹配上了deny tcp host 23.0.0.3 host 12.0.0.1 這條語(yǔ)句,而不再匹配下面的語(yǔ)句了。所以它就被直接拒絕了。evaluate REF 這條語(yǔ)句在這里實(shí)際上被架空了因此 控制列表語(yǔ)句的順序是至關(guān)重要的。