實驗要求:通過動態ACL實現:Internet外網上的用戶R1需要訪問內網R3,需要先到邊界路由器R2上進行
身份驗證,驗證過後則可以訪問內網,配置如下:
在R1上:
en
conf t
int s1/1
ip add 12.1.1.1 255.255.255.0
no shu
exit
enable password 123
line vty 0 4
password 123
login
exit
ip route 0.0.0.0 0.0.0.0 12.1.1.2
在R3上:
int s1/0
ip add 23.1.1.3 255.255.255.0
no shu
exit
enable password 123
line vty 0 4
password 123
login
exit
ip route 0.0.0.0 0.0.0.0 23.1.1.2(配置去外網的默認路由)
在R2上配置:
int s1/0
ip add 12.1.1.2 255.255.255.0
no shu
int s1/1
ip add 23.1.1.2 255.255.255.0
no shu
exit
access-list 100 permit tcp any host 12.1.1.2 eq 23(允許外網用戶telnet到R2上進行身份驗證)
access-list 100 permit tcp any host 12.1.1.2 eq 3001(允許外網用戶通過telnet3001端口對R2進 行管理,實際工程中很少在Internet上使用telnet,因爲是明文密碼不安全,如果工程中還使用其他協議,記得打開相應的端口)
access-list 100 dynamic D-ACL timeout 240 permit ip any any(創建動態ACL,名字是D-ACL,語句中的第一個any將被通過驗證用戶的主機ip地址代替,第二個any指的是內網所有主機,這樣做的結果就是,即使外網用戶通過了驗證,也只能訪問內網特定的主機,這裏還可以把IP協議換成其他的協議,如:TCP的80端口,就是訪問內網的web頁面,這裏的timeout指的是絕對時間可以隨意設定)
username cisco password cisco(創建用戶cisco,密碼cisco,用於對外網用戶身份驗證)
line vty 0 3 (虛擬終端用戶0 1 2 3 可以自己設定)
login local (使用路由器本地用戶名密碼進行身份驗證)
autocommand access-enable host timeout 5(意思是驗證主機的源IP代替動態ACL中的any 這裏的timeout是指空閒時間 5分鐘可以自己設定時間 過了空閒時間,就會斷開訪問)
line vty 4
login local(使用路由器本地密碼驗證)
rotary 1 (設置虛擬線路4爲管理員使用,用來對R2進行遠程管理 端口是3001)
int s1/0
ip access-group 100 in (在路由器外網接口上應用ACL)
配置完成後進行測試:
這時候我們發現R3ping不通R1 R1也Ping不通R3,但是R3可以ping通R2的外網接口12.1.1.2,這是因爲從R3發出去的流量沒有問題,但是從R1返回到R3的流量經過了R2的ACL,被ACL給拒絕了;而R1訪問R3時,流量經過R2被直接拒絕。那麼我們如果要實現R1與R3之間的訪問該怎麼做呢?
我們可以在R1上通過telnet到R2上進行身份驗證,驗證通過了就可以實現互訪,如下圖:
通過了,這裏的telnet被關閉時因爲動態ACL的原因,只要驗證通過後就立刻關閉,這也是爲什麼我們
要創建虛擬線路4作爲管理員使用的原因。
驗證通過後可以測試:
顯示在R1上可以ping和telnet到R3上,R3同樣也可以。
我們在R2上”show access-list 100“
這個條目是被動態ACL臨時添加的,表示再過170s就會刪除,類似於反射ACL一樣。
在動態ACL中,1、當路由器產生臨時條目時,該臨時條目的空閒計時器和絕對計時器被啓用。空閒計時器每當有一個報文匹配動態ACL時會進行復位,空閒計時器時間到期時,臨時條目會被刪除。2、當絕對計時器到期時,這個時候無論空閒計時器還有多長時間,臨時條目都會被刪除,直接忽略空閒計時器的時間,絕對計時器是永久不能復位的,所以我們一般設置的時候絕對時間設置大些比較好,遠遠大於空閒時間。3、當臨時條目被刪除後,連接就斷開了,要想再次連接,就得重新telnet到R2上進行身份驗證。