CCNA7:ACL、NAT(一對一、一對多、多對多)、端口映射、遠程登錄

CCNA7:ACL、NAT(一對一、一對多、多對多)、端口映射、遠程登錄

一、遠程登錄:

遠程登錄的思路:首先在被登錄方設置一個用戶名和密碼,然後開啓遠程登錄。虛擬鏈路0-4,一共5根虛擬鏈路,允許同時5人登錄進來。
在這裏插入圖片描述

R2(config)#username ccna privilege 15 secret cisco123
R2(config)#line vty 0 4
R2(config-line)#login local 

我們嘗試遠程登錄一下R1,密碼默認不顯示:
在這裏插入圖片描述

二、ACL:訪問控制列表:

首先我們要知道ACL有兩種功能:一個是訪問控制,還有一個

1、訪問控制:

訪問控制:對路由器流量進出的接口上,規則流量的進出。

定義ACL列表後,將列表調用於路由器的接口上,當流量通過接口時,進行匹配,匹配成功後按照設定的動作進行處理即可(允許、拒絕)

(1)匹配規則:

至上而下逐一匹配,上條匹配按上條執行,不再查看下條,末尾隱含拒絕所有。

解釋: 這句話的意思是說:如果對一個網段或某個IP做了兩個策略,那麼會比較兩個策略的先後順序,位於策略中相對先出現的先執行。如果末尾不添加任何對其它路由的策略,則默認是拒絕的。

(2)分類:

①:標準ACL:

標準ACL僅關注數據包中的源IP地址,因此在調用的時候,應該儘量靠近目標,避免誤刪。

標準ACL的寫法:編號寫法:1~99,命名寫法爲:一個名字一張列表。

不足:當要刪除一個表中的某條規則的時候整張表消失,解決辦法就是使用 show running-config 然後將裏面的配置複製到某個文檔中,然後再修改,最後在貼進去。

②:擴展ACL:

擴展ACL關注數據包中的源、目標IP地址、目標端口號、協議號。因此在調用的時候應該靠近源,但是不能在源上。因爲ACL不能限制本地路由器產生的其它流量(路由協議),因此可以拒絕其它路由器控制層面上的流量。

寫法:擴展ACL的寫法:編號寫法:100~199,命名寫法爲:一個名字一張列表。

關注目標端口號:
ICMP(ping)跨層封裝協議,不存在端口號
Telnet(遠程登錄):TCP下的23端口

特點:
1、一個名字一張表,刪除其中某條策略並不影響。
2、有序列號便於刪除和插入。

③:基於時間的ACL:

 創建A列表:
R1(config)#time-range A =

R1(config-time-range)#absolute start 12:00 1 aug 2018 end 12:00 1 aug 2020

定義整個列表的工作的總週期時間:
R1(config-time-range)#periodic daily 9:30 to 12:00
R1(config-time-range)#periodic daily 13:30 to 16:00

創建ACL擴展列表:A
R1(config)#ip access-list extended A
R1(config-ext-nacl)#permit ip host 172.16.20.253 any
R1(config-ext-nacl)#deny ip 172.16.20.0 0.0.0.255 any time-range A
R1(config-ext-nacl)#deny ip 172.16.10.0 0.0.0.255 any time-range A
R1(config-ext-nacl)#permit ip any any

2、定義感興趣的流量:

定義感興趣的流量:爲其它的策略去匹配流量,可以爲其它的策略進行服務,這裏可以參考我的另一篇博客中寫的相關策略:CCNP9:重發布技術+路由策略

如果只是這樣晦澀的一說,我覺得還不是很好理解,接下來我用個小實驗爲大家深刻講解一下,這個實驗。

3、實驗

這個實驗我想採用之前單臂路由的實驗圖(CCNA實驗:單臂路由),然後再稍微添加一下,做出來的效果如圖:
在這裏插入圖片描述
這裏再說明一下,左邊的路由器R2,右邊的路由器R1,中間的交換機名爲sw1,最右邊的交互機名爲sw2。右邊路由器下的PC均爲DHCP方式獲取的IP,左邊的爲靜態方式。注意右邊的路由器做的是單臂路由,存在兩個虛擬子接口F0/0.1(vlan2)、F0/0.2(vlan3)。最後我使用的模擬器是Cisco Packet Tracer Instructor。

IP如上配置,配置好之後,添加兩條靜態路由即可。其餘的可查看我那次的實驗圖。

R2(config)#ip route 192.168.1.0 255.255.255.0 192.168.3.2
R2(config)#ip route 192.168.2.0 255.255.255.0 192.168.3.2
R1(config)#ip route 192.168.4.0 255.255.255.0 192.168.3.1

現在我們開始添加策略:
Ⅰ、左邊的PC6(192.168.4.2)不可以ping通右邊的vlan2下的電腦要求如下:
(1)使用標準ACL的編號寫法:在R1上的F0/0.1口的 方向調用。
原因:
標準ACL只關注源IP的位置,那麼當我們在R2(左邊的路由器)上添加策略,必然會導致PC6訪問不了vlan3下的電腦,同樣的R1上的F0/1口也一樣。爲了儘可能的讓這種數據包減少網絡資源的佔用,我們需要將數據包能儘早就儘早的拒絕掉,因此我們需要在R1上F0/0.1的出方向( 方向在圖上是↓)進行調用。

配置如下:
創建1表:
R1(config)#access-list 1 deny 192.168.4.2
R1(config)#access-list 1 permit any

f0/0.1口進行調用:
R1(config)#int f0/0.1
R1(config-subif)#ip access-group 1 out

(2)使用標準ACL的命名寫法:

R1(config)#ip access-list standard a
R1(config-std-nacl)#deny host 192.168.4.2
R1(config-std-nacl)#permit any

R1(config)#int f0/0.1
R1(config-subif)#ip access-group a out

Ⅱ、接下來一個要求是:現在有另一個要求就是PC6不可以pingPC0,但是可以ping通其餘的所有電腦。
我們刪除之前的策略。由於使用擴展ACL,那麼可以精準的匹配,因此我們最好的是在左邊的路由器R2上F0/0口的入向調用。
(1)使用擴展ACL的編號寫法:

拒絕主機192.168.4.2的流量到192.168.1.2R2(config)#access-list 100 deny ip host 192.168.4.2 host 192.168.1.2
R2(config)#access-list 100 permit ip any any

R2(config)#int f0/0
R2(config-if)#ip access-group 100 in

(2)使用擴展ACL的命名寫法:

R2(config)#ip access-list extended b
R2(config-ext-nacl)#deny ip host 192.168.4.2 host 192.168.1.2 
R2(config-ext-nacl)#permit ip any any 

R2(config)#int f0/0
R2(config-if)#ip access-group b in

Ⅲ、拒絕PC6遠程登錄R1:
我這裏使用的是編號寫法:

R1(config)#access-list 101 deny tcp host 192.168.4.2 host 192.168.3.2 eq 23
R1(config)#access-list 101 permit ip any any
R1(config)#int f0/1
R1(config-if)#ip access-group 101 in
功能 配置
標準ACL R1(config)#access-list 1 deny host 192.168.1.1(拒絕單一設備)
R1(config)#access-list 1 deny 192.168.1.0(拒絕範圍)
R1(config)#access-list 1 deny any(拒絕所有)
擴展ACL R1(config)#access-list 100 deny ip host 192.168.1.1 host 192.168.1.2
R1(config)#access-list 100 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
R1(config)#access-list 100 permit ip any any
規則端口 R1(config)#access-list 101 deny tcp host 1.1.1.1 host 2.2.2.2 eq 23
R1(config)#access-list 102 deny icmp host 1.1.1.1 host 2.2.2.2
命名寫法的增刪 R1(config)#ip access-list standard a
R1(config-std-nacl)#15 deny host 1.1.1.1
R1(config-std-nacl)#no 15
調用策略 R1(config)#int f0/0
R1(config-subif)ip access-group 1 out

二、NAT:

NAT的作用就是實現網絡地址轉換(公有IP和私有IP間的互相轉換),如下圖所示,本地指的就是私有IP,全局指的就是公有IP。作用如下:
在邊界路由器上:
流量從內部去往外部時,將數據包中的源IP地址進行修改(內部本地修改爲內部全局);
流量從外部進入內部時,修改目標IP地址(外部全局修改爲外部本地)
在這裏插入圖片描述
接下來我們用來講解實驗的圖如下:實驗底層配置、電腦IP如下圖所示,之後R1、R2需要寫兩條靜態,和兩條缺省。

R1(config)#ip route 192.168.3.0 255.255.255.0 192.168.2.2
R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.2
R2(config)#ip route 192.168.1.0 255.255.255.0 192.168.2.1
R2(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

在這裏插入圖片描述
圖中的12.1.1.1 是公有IP,後面接的是整個內網。接下來我們就需要在R2上做NAT。
此時只有邊界的公有IP1.1.1.2可以上網:
在這裏插入圖片描述
切記:一旦進行NAT配置,就必須定義邊界路由器上各個接口的方向

1、一對一(靜態):

R2(config)#ip nat inside source static 192.168.1.2 12.1.1.1 (將本地192.168.1.2轉爲12.1.1.1)
R2(config)#int f1/0
R2(config-if)#ip nat outside 
R2(config-if)#int f0/0
R2(config-if)#ip nat inside 
R2(config-if)#int f0/1
R2(config-if)#ip nat inside

我們用其中一臺PC進行檢驗,沒問題確實實現了訪問外部公網。
在這裏插入圖片描述
一對一實際上是將本地私有和本地全局之間實現了固定的映射,當外部全局ping本地全局的時候,實際ping的是本地私有,可以通過路由器的跳數來判段,下圖是PC4ping本地全局的圖:
在這裏插入圖片描述
我們觀察TTL發現,是125,說明經過了3臺路由器(TTL:生存時間,數據包每經過一臺路由器,TTL就減少1,TTL一般存在3個值:64、128、255)
綜上:我們感覺一對一並沒有太大的意義,那我們就將下面這個意義很大的一對多。

2、一對多(動態):

一對多有個別名叫做:PAT端口地址轉換
上面做到的是一個本地私網IP地址轉一個公有IP地址,然後現在做的 一對多 :就是將多個私網IP轉換爲同一公有IP地址,依賴數據包中的端口號來進行區分。
比如當這些私網IP去訪問百度時,它發送的數據包會攜帶端口號給邊界路由器。例如下面這樣的對應關係:

私網IP及其端口 被轉換後(公網IP及其端口)
192.168.1.1:1111
192.168.1.2:2222
192.168.1.3:3333
12.1.1.1:1111
12.1.1.1:2222
12.1.1.1:3333

這樣就實現了一對多的訪問,現在問題來了,既然用的是端口那麼難免會遇到兩個IP發來的數據包它們的端口竟然會一樣的情況,而NAT是這樣解決的:
當遇到端口衝突的時候,NAT會將一個端口號進行改變,而改變後的端口會被記錄在一張表中,當外部全局的IP發來消息後,依據這張表將數據包轉發給原來的IP。

到這裏問題又來了,上面說的當端口衝突的轉換爲另一個端口閒置的就好了對吧,那麼當65535個端口都被佔用的時候,那是不是就發不出去了呢?

沒錯,一對多的缺陷就在這裏,當用戶過多的時候,延時就會很大,當釋放的端口小於數據包轉發的量的時候就會出現延時,單點時間內65535個包出去之後,必須回來,端口釋放,然後下一個。總之就是卡到炸,帶寬再高也沒用。因此這種一對多僅適合於中小企業等場合適用,要解決這個問題就需要接下來講的多對多。

使用方法:先使用ACL定義感興趣流量,哪些私有IP地址被轉換,之後在定義NAT。

清除上一步驟的NAT:

R2(config)#no ip nat inside source static 192.168.1.2 12.1.1.1

一對多的配置如下:

R2(config)#access-list 1 permit 192.168.1.0 0.0.0.255
R2(config)#access-list 1 permit 192.168.2.0 0.0.0.255
R2(config)#access-list 1 permit 192.168.3.0 0.0.0.255
R2(config)#ip nat inside source list 1 interface f1/0 overload
註釋:list 1:本地列表1interface f1/0表示本地全局,overload負載

由於我們之前定義過接口方向,下面的就可以不用敲了,但是正常得敲。
R2(config)#int f1/0
R2(config-if)#ip nat outside 
R2(config-if)#int f0/0
R2(config-if)#ip nat inside
R2(config-if)#int f0/1
R2(config-if)#ip nat inside

使用命令:show ip nat translations 可以查看對應關係

這裏再補充一下,一對多可以和一對一兩個聯合使用,這樣當外網訪問本地的服務器時可以直接對應上,那如果沒錢買倆IP,還要實現一對一的效果就可以使用端口映射功能。

3、端口映射:

我們可以將邊界路由器上的公有IP的固定端口(比如說80)映射給內網中的服務器(192.168.1.100)這樣通過外部訪問12.1.1.1同時端口爲80時,目標IP地址

R2(config)#ip nat inside source static tcp 192.168.1.100 80 12.1.1.1 80

如果再搭一個http服務器:
我們可以再瀏覽界面輸入服務器IP以及端口http://12.1.1.1:8080,就可以訪問另一臺服務器了。

R2(config)#ip nat inside source static tcp 192.168.1.200 80 12.1.1.1 8080
通過外部訪問12.1.1.2 同時目標端口爲8080時,目標IP地址就一定被轉換爲192.168.1.200,端口號8080

4、多對多(靜態或動態):

多對多就是將多個IP轉爲多個IP
使用方法:先用ACL,後用NAT

R2(config)#access-list 2 permit 192.168.0.0 0.0.255.255 (定義本地地址範圍)
R2(config)#ip nat pool xxx 12.1.1.3 12.1.1.10 netmask 255.255.255.0 (定義內部全局地址)
R2(config)#ip nat inside source list 2 pool xxx overload (配置多對多NAT)

在配置多對多NAT時,是否攜帶overload將決定爲靜態或動態多對多,不攜帶就是靜態多對多

不攜帶overload——靜態多對多:最先來到邊界路由器上的9個私有IP地址與這9個公有IP地址形成一對一。當第10個人想訪問的時候,需要前9人中有人沒有再使用,且釋放後在一定時間之後才能使用。

攜帶overload——動態多對多:循環佔用每個公有IP地址進行PAT(每單點時間內可以承受65535x公有IP個數 的數據包)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章