Bài viết chuyên đề

Standard Access List

15/12/2017 10:57:25

Bài số 1: Chuyên đề Access Control List

Trong loạt bài viết tiếp theo này, chúng ta sẽ cùng điểm qua một vài đặc điểm của Access Control List, thường được gọi tắt là Access – list, một công cụ được sử dụng rất rộng rãi của Cisco IOS.

Access control list (ACL), đúng như tên gọi của nó, là một danh sách điều khiển truy nhập. Nếu không được sử dụng kèm với các thực thể khác, access – list sẽ không có một vai trò gì cả. Vì vậy, khi khai báo một access – list, access – list này phải được áp vào một thực thể nào đó thì mới phát huy tác dụng. Ta cùng điểm qua một số đặc điểm của access – list.

Công dụng của access – list

Access – list thường được sử dụng cho hai mục đích:

  • Lọc lưu lượng (traffic filtering):

Điều này được thực hiện bằng cách áp access – list lên một cổng của router theo chiều in hoặc chiều out. Nếu đặt theo chiều in, ACL sẽ thực hiện lọc lưu lượng đi vào cổng, và nếu đặt theo chiều out, ACL sẽ lọc lưu lượng đi ra khỏi cổng. Việc lọc bỏ hay cho qua lưu lượng trên một access – list sẽ được căn cứ vào các từ khóa permit hoặc deny trên từng dòng của access – list ấy.

  • Phân loại dữ liệu (data classification):

Trong trường hợp này, ACL được sử dụng để phân loại dữ liệu. ACL sẽ được cấu hình để chỉ ra những đối tượng nào được tham gia và những đối tượng nào không được tham gia vào một tiến trình hay một hoạt động nào đấy của router (ví dụ: distribute – list, NAT, VPN,debug,…).

Các loại access – list

Có hai loại access – list chính: Standard ACL và Extended ACL.

  • Standard ACL:

Loại ACL này chỉ đề cập đến source IP của gói tin IP, không đề cập thêm bất cứ thông tin nào khác của gói tin.

  • Extended ACL:

Loại ACL này đề cập đến không chỉ source IP mà còn cả destination IP, source port, destination port, giao thức nền (TCP, UDP, ICMP,…) và một số thông số khác của gói tin IP.

  • Các loại khác:

Bên cạnh hai loại ACL chính nói đã đến ở trên, còn nhiều loại ACL khác có thể được sử dụng trong nhiều tình huống khác nhau như: Reflexive ACL, Dynamic ACL, Timed based ACL,...

Chúng ta sẽ cùng nhau khảo sát từng loại ACL này thông qua các ví dụ cấu hình.

Nguyên tắc hoạt động của Access list

Access – list là một danh sách gồm nhiều dòng. Khi được truy xuất, ACL sẽ được đọc và thi hành từng dòng một từ trên xuống dưới, dòng nào chứa thông tin khớp với thông tin của gói tin đang được xem xét, dòng ấy sẽ được thi hành ngay và các dòng còn lại sẽ được bỏ qua.

Một nguyên tắc nữa cần lưu ý là các dòng mới được khai báo sẽ được tự động thêm vào cuối ACL, tuy nhiên dòng cuối cùng thực sự của một ACL luôn là một dòng ngầm định “deny” tất cả, có nghĩa là nếu gói tin không match bất cứ dòng nào đã khai báo của ACL, nó sẽ bị deny.

Numbered ACL và Named ACL

Một ACL có thể được định danh bởi số hiệu (Numbered ACL) hoặc một chuỗi ký tự (Named ACL). Numbered ACL và Named ACL có nguyên tắc hoạt động cũng như cách sử dụng hoàn toàn giống nhau. Điểm khác biệt giữa hai loại ACL này là Named ACL cho phép chèn, sửa, xóa từng dòng còn Numbered ACL không cho phép chèn, sửa, xóa trên từng dòng mà phải viết lại toàn bộ ACL nếu có sai sót.

Với Numbered ACL, các standard ACL sẽ lấy số hiệu từ 1 đến 99 hoặc 1300 đến 1999, các extended ACL sẽ lấy số hiệu từ 100 đến 199 hoặc 2000 đến 2699.

Như thường lệ, để nắm được các ý tưởng, chúng ta cùng khảo sát các bài lab ví dụ:

Sơ đồ:

Hình 1 – Sơ đồ bài lab ví dụ.

Mô tả:

Trên sơ đồ hình 1 là một phần của một mạng doanh nghiệp. Phần này gồm hai router R1 và R2 đại diện cho hai chi nhánh của doanh nghiệp. R1 và R2 được đấu nối với nhau bằng một đường leased – line qua các cổng S0/0/0 của hai router. R1 kết nối vào hai VLAN 10 và 110 của chi nhánh 1 với quy hoạch IP được chỉ ra như hình 1 cho các VLAN. R2 sử dụng cổng F0/0 đấu nối xuống VLAN 20 của chi nhánh 2 và cổng F0/1 đấu nối với phần còn lại của mạng doanh nghiệp.

Chúng ta sẽ sử dụng phân khúc mạng này để khảo sát cách thức cấu hình và hoạt động của Access – list. Trong ví dụ này, chúng ta chỉ xem xét Standard ACL. Các loại ACL khác sẽ được xem xét trong các ví dụ khác của các bài viết tới.

Thực hiện:

Đầu tiên các chi nhánh của công ty phải chạy một hình thức định tuyến nào đó đảm bảo mọi địa chỉ thấy nhau. Giả sử công ty sử dụng giao thức định tuyến EIGRP trên toàn bộ hệ thống mạng, chúng ta thực hiện cấu hình đặt địa chỉ IP trên các cổng và chạy định tuyến EIGRP trên R1 và R2:

Trên R1:

R1(config)#interface s0/0/0

R1(config-if)#no shutdown

R1(config-if)#ip add 192.168.12.1 255.255.255.252

R1(config-if)#exit

R1(config)#interface f0/0

R1(config-if)#no shutdown

R1(config-if)#ip add 192.168.10.1 255.255.255.0

R1(config-if)#exit

R1(config)#interface f0/1

R1(config-if)#no shutdown

R1(config-if)#ip add 192.168.110.1 255.255.255.0

R1(config-if)#exit

R1(config)#router eigrp 100

R1(config-router)#no auto-summary

R1(config-router)#network 0.0.0.0

Trên R2:

R2(config)#interface s0/0/0

R2(config-if)#no shutdown

R2(config-if)#ip add 192.168.12.2 255.255.255.252

R2(config-if)#exit

R2(config)#interface f0/0

R2(config-if)#no shutdown

R2(config-if)#ip add 192.168.20.1 255.255.255.0

R2(config-if)#exit

R2(config)#router eigrp 100

R2(config-router)#no auto-summary

R2(config-router)#network 0.0.0.0

Ta kiểm tra rằng R1 và R2 đã thấy các subnet của nhau trong bảng định tuyến:

R1#show ip route 192.168.20.0

Routing entry for 192.168.20.0/24

  Known via "eigrp 100", distance 90, metric 2172416, type internal

  Redistributing via eigrp 100

  Last update from 192.168.12.2 on Serial0/0/0, 00:08:38 ago

  Routing Descriptor Blocks:

  * 192.168.12.2, from 192.168.12.2, 00:08:38 ago, via Serial0/0/0

      Route metric is 2172416, traffic share count is 1

      Total delay is 20100 microseconds, minimum bandwidth is 1544 Kbit

      Reliability 255/255, minimum MTU 1500 bytes

      Loading 1/255, Hops 1

R2#sh ip route 192.168.10.0

Routing entry for 192.168.10.0/24

  Known via "eigrp 100", distance 90, metric 2172416, type internal

  Redistributing via eigrp 100

  Last update from 192.168.12.1 on Serial0/0/0, 00:09:31 ago

  Routing Descriptor Blocks:

  * 192.168.12.1, from 192.168.12.1, 00:09:31 ago, via Serial0/0/0

      Route metric is 2172416, traffic share count is 1

      Total delay is 20100 microseconds, minimum bandwidth is 1544 Kbit

      Reliability 255/255, minimum MTU 1500 bytes

      Loading 1/255, Hops 1

R2#sh ip route 192.168.110.0

Routing entry for 192.168.110.0/24

  Known via "eigrp 100", distance 90, metric 2172416, type internal

  Redistributing via eigrp 100

  Last update from 192.168.12.1 on Serial0/0/0, 00:00:41 ago

  Routing Descriptor Blocks:

  * 192.168.12.1, from 192.168.12.1, 00:00:41 ago, via Serial0/0/0

      Route metric is 2172416, traffic share count is 1

      Total delay is 20100 microseconds, minimum bandwidth is 1544 Kbit

      Reliability 255/255, minimum MTU 1500 bytes

      Loading 1/255, Hops 1

Các subnet đã đi được đến nhau:

R1#ping 192.168.20.1 source 192.168.10.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.1, timeout is 2 seconds:

Packet sent with a source address of 192.168.10.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms

R1#ping 192.168.20.1 source 192.168.110.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.1, timeout is 2 seconds:

Packet sent with a source address of 192.168.110.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms

Sau khi tất cả các subnet đã đi tới nhau thông suốt, chúng ta thực hiện áp các access – list lên các cổng để khảo sát chức năng lọc lưu lượng của chúng. Điều này phù hợp với quy trình chung: ta chỉ áp các chính sách chặn hoặc lọc lên các dòng lưu lượng sau khi đã được đảm bảo rằng routing và switching đã thông suốt hoàn toàn. Như đã nói ở trên, trong ví dụ này, chúng ta sẽ khảo sát cách thức sử dụng Standard Access List.

Đầu tiên, ta thử viết một access – list chỉ cho phép VLAN 10 của chi nhánh R1 được truy nhập đến VLAN 20 của chi nhánh R2.

VLAN 10 sử dụng subnet 192.168.10.0/24 nên ta viết một access – list chỉ permit subnet này, access – list chúng ta thực hiện như sau:

access-list 1 permit 192.168.10.0 0.0.0.255

Ta cùng phân tích một số ý:

  • Vì chúng ta sử dụng access – list dạng standard và là dạng đánh số để đặt tên nên số hiệu access – list sẽ chạy từ 1 đến 99 hoặc 1300 đến 1999. Ở đây, ta dùng số hiệu là 1. Standard ACL chỉ xét đến source IP của gói tin.
  • Cú pháp để xét một dải IP của access – list là sử dụng wildcard mask để lấy ra các IP mong muốn. Về định nghĩa, wildcard – mask là một dải nhị phân dài 32 bit được sử dụng kèm với một IP tham chiếu để lọc ra các địa chỉ IP cần dùng theo nguyên tắc: bit nào của địa chỉ IP tham chiếu tương ứng với bit 0 của wildcard – mask thì được giữ cố định, bit nào của IP tham chiếu tương ứng với bit 1 của wildcard – mask thì được tự do thay đổi giá trị.

Ví dụ:

Trong ví dụ này, ta cần lấy ra dải IP 192.168.10.0/24 của VLAN 10 để permit trong access – list 1. Ta nhận thấy rằng mọi địa chỉ IP của subnet 192.168.10.0/24 mà ta đang quan tâm đều có 3 octet đầu luôn luôn được giữ cố định là 192, 168 và 1; octet thứ 4 sẽ chạy tự do từ 0 đến 255. Do đó, ta sẽ viết một cặp IP tham chiếu và wildcard – mask để lấy toàn bộ dải này như sau:

192.168.10.0  ← IP tham chiếu

0.0.0.255 ← Wildcard – mask

Rất rõ ràng, mọi bit nằm trong 3 octet đầu của IP tham chiếu đều tương ứng với các bit 0 của wildcard – mask nên sẽ được giữ cố định và vì vậy sẽ luôn luôn là “192”, “168” và “10”; các bit thuộc octet thứ 4 đều tương ứng với các bit 1 của wildcard – mask nên sẽ được chạy tự do dẫn đến octet này có quyền lấy bất cứ giá trị nào trong dải từ 0 đến 255. Như vậy, với cặp IP tham chiếu và wildcard – mask này, Cisco IOS hiểu rằng ta đang đề cập đến tất cả các giá trị của dải IP từ 192.168.10.0 đến 192.168.10.255, tức là subnet 192.168.10.0/24.

Để đơn giản cho việc xác định wildcard – mask, ta có thể sử dụng một cách tính nhanh wild – card mask. Ví dụ, với trường hợp ở trên, ta thấy mạng 192.168.10.0/24 có subnet – mask là 255.255.255.0, wildcard – mask được xác định bằng cách lấy giá trị “255.255.255.255” trừ đi subnet – mask:

255.255.255.255

- 255.255.255.0

============

0.0.0.255

Sau khi xác định xong wildcard – mask, ta lấy IP tham chiếu là một địa chỉ IP bất kỳ nằm trong dải IP 192.168.10.0/24 là hoàn tất công việc. Để đơn giản, ta có thể lấy luôn địa chỉ 192.168.10.0 làm IP tham chiếu. Ta có kết quả:

192.168.10.0

0.0.0.255

  • Như đã trình bày trong phần đặc điểm tổng quan ở trên, access – list viết ra chỉ là một danh sách đơn thuần. Trong ví dụ này, đó là một danh sách chỉ có một dòng “permit” các gói tin IP có source IP thuộc về mạng 192.168.10.0/24. Để có thể thực hiện được ý đồ của yêu cầu đặt ra là chỉ cho phép subnet 192.168.10.0/24, ta phải đặt access – list này vào một cổng nào đó của hệ thống. Quan sát hình 1, ta thấy có nhiều vị trí để có thể đặt “trạm kiểm soát” này như: cổng S0/0/0 của R1 – theo chiều out, cổng S0/0/0 của R2 – theo chiều in và cổng F0/0 của R2 – theo chiều out. Tuy nhiên, vị trí thích hợp nhất để đặt ACL đã tạo là cổng F0/0 của R2 theo chiều out vì nếu ta đặt ở các vị trí khác, các lưu lượng khác xuất phát từ VLAN 110 của R1 đi đến phần còn lại của mạng sẽ bị chặn luôn, trong khi ta chỉ muốn chặn lưu lượng từ VLAN 110 đi đến VLAN 20 mà thôi. Standard ACL nên được đặt càng gần đích đến càng tốt. Như vậy, ACL này sẽ được tạo ra trên R2 và được áp vào cổng F0/0 của R2 theo chiều out:

R2(config)#access-list 1 permit 192.168.10.0 0.0.0.255

R2(config)#interface f0/0

R2(config-if)#ip access-group 1 out

Như ở trên ta thấy, câu lệnh áp một access – list lên một cổng là:

R(config-if)#ip access-group ACL_number {in | out}

Từ khóa “” hoặc “” sẽ chỉ ra ACL được áp lên cổng để kiểm soát dữ liệu đi vào hay đi ra khỏi cổng. Lưu ý rằng: trên một cổng, mỗi chiều chỉ được áp một và chỉ một IP ACL.

Tiếp theo, ta thực hiện kiểm tra kết quả áp access – list vừa thực hiện:

Trên R2:

R2#show access-lists

Standard IP access list 1

    10 permit 192.168.10.0, wildcard bits 0.0.0.255

R2#show ip interface f0/0 | include access list

  Outgoing access list is 1

  Inbound  access list is not set

Trên R1, thực hiện ping kiểm tra đến một host thuộc VLAN 20 có địa chỉ là 192.168.20.2 (host này không được thể hiện trên sơ đồ hình 1):

R1#ping 192.168.20.2 source 192.168.10.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.2, timeout is 2 seconds:

Packet sent with a source address of 192.168.10.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/37/176 ms

R1#ping 192.168.20.2 source 192.168.110.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.2, timeout is 2 seconds:

Packet sent with a source address of 192.168.110.1

U.U.U

Success rate is 0 percent (0/5)

Từ kết quả kiểm tra ta thấy nếu lấy source IP là một địa chỉ thuộc dải IP của VLAN 10, kết quả ping thành công (được permit), còn nếu lấy source IP là một IP thuộc dải IP của VLAN 110, kết quả ping không thành công (bị deny). Ta cũng thấy rằng trong access – list 1 không có một dòng tường minh nào cho hoạt động deny các gói đến từ VLAN 110. Hoạt động deny này được thực hiện bởi một dòng ngầm định “deny any” cho bất kỳ gói tin nào không thỏa mãn các dòng khai báo tường minh đang có trong danh sách.

Trong trường hợp này, gói tin đến từ VLAN 110 với IP source thuộc subnet 192.168.110.0/24 trước hết được tra cứu bởi dòng “permit 192.168.10.0 0.0.0.255”. Vì không match với dòng này, nó được chuyển qua tra cứu dòng tiếp theo là dòng ngầm định “deny any” và bị drop bỏ.

Tiếp theo, chúng ta cùng thử một số yêu cầu khác.

Ta gỡ bỏ access – list vừa thực hiện trên R2:

R2(config)#no access-list 1

R2(config)#interface f0/0

R2(config-if)#no ip access-group 1 out

R2(config-if)#exit

Yêu cầu tiếp theo là viết ACL cấm VLAN 10 truy nhập đến VLAN 20, nhưng mọi lưu lượng khác vẫn phải được phép truy nhập vào VLAN 20.

Như đã phân tích ở trên, standard ACL nên được đặt càng gần đích đến càng tốt nên ta thực hiện yêu cầu này trên R2:

R2(config)#access-list 2 deny 192.168.10.0 0.0.0.255

R2(config)#interface f0/0

R2(config-if)#ip access-group 2 out

Ta thực hiện kiểm tra từ R1:

R1#ping 192.168.20.2 source 192.168.10.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.2, timeout is 2 seconds:

Packet sent with a source address of 192.168.10.1

U.U.U

Success rate is 0 percent (0/5)

R1#ping 192.168.20.2 source 192.168.110.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.2, timeout is 2 seconds:

Packet sent with a source address of 192.168.110.1

U.U.U

Success rate is 0 percent (0/5)

Kết quả ping không thành công cho thấy ACL đã chặn đúng theo yêu cầu: deny các gói tin từ VLAN 10 đi đến VLAN 20. Tuy nhiên, ta thấy ngay cả VLAN 110 cũng bị chặn bởi ACL và điều này không đúng với yêu cầu “mọi lưu lượng khác vẫn phải được phép truy nhập vào VLAN 20”.

Ta kiểm tra lại ACL đã cấu hình:

R2#show access-lists

Standard IP access list 2

    10 deny   192.168.10.0, wildcard bits 0.0.0.255 (8 matches)

Ta thấy rằng access – list này chỉ có một dòng “deny”, dòng này match cho các gói tin đến từ subnet 192.168.10.0/24 và thực hiện đúng chức năng deny của mình cho các gói này. Tuy nhiên, khi một gói tin đến từ subnet của VLAN 110 là 192.168.110.0/24, nó sẽ không match dòng “deny” tường minh này và sẽ được chuyển qua đối chiếu với dòng kết thúc ngầm định của ACL, và vì dòng ngầm định này “deny any” nên gói tin sẽ bị drop. Như vậy, không chỉ lưu lượng từ VLAN 10 mà mọi lưu lượng đều không thể đi đến được VLAN 20 với cách viết ACL như ở trên.

Để sửa lỗi, chúng ta phải bổ sung thêm một dòng “permit” tất cả các lưu lượng khác ngay sau dòng “deny” tường minh 192.168.10.0/24. Dòng “permit” tất cả lưu lượng khác này, thực chất là một dòng “permit” tất cả mọi lưu lượng với source IP có thể lấy giá trị bất kỳ trên toàn không gian IPv4:

R2(config)#access-list 2 permit 0.0.0.0 255.255.255.255

Access – list 2 lúc này gồm các dòng như sau:

R2#show access-lists

Standard IP access list 2

    10 deny   192.168.10.0, wildcard bits 0.0.0.255 (8 matches)

    20 permit any

Ta thấy, dòng đầu tiên của ACL deny tường minh mạng 192.168.10.0/24 theo yêu cầu, dòng thứ hai cho qua tất cả mọi loại lưu lượng và rõ ràng sẽ cho qua các lưu lượng không thỏa dòng thứ nhất, trong đó có lưu lượng đến từ VLAN 110.

Ta lưu ý cách viết IP tham chiếu và wildcard – mask để lấy toàn bộ không gian IPv4:

IP tham chiếu: 0.0.0.0

Wildcard – mask: 255.255.255.255

Với wildcard – mask “255.255.255.255”, 32 bit của IP tham chiếu chạy tự do, IP mà ta lấy sẽ đi trọn cả không gian IPv4. Ta có thể lấy IP tham chiếu là một địa chỉ bất kỳ, nhưng trong các cú pháp cấu hình, địa chỉ “0.0.0.0” thường được sử dụng.

Trong cách khai báo các dòng của ACL, cụm “0.0.0.0 255.255.255.255” có thể được thay thế bằng từ khóa “any” cho gọn câu lệnh cấu hình:

R2(config)#access-list 2 permit any

Ta cùng nhau kiểm tra lại kết quả thực hiện:

R1#ping 192.168.20.2 source 192.168.10.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.2, timeout is 2 seconds:

Packet sent with a source address of 192.168.10.1

U.U.U

Success rate is 0 percent (0/5)

R1#ping 192.168.20.2 source 192.168.110.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.2, timeout is 2 seconds:

Packet sent with a source address of 192.168.110.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms

Ta thấy kết quả kiểm tra đã đúng như yêu cầu. Ta xem xét thêm trên R2:

R2#show access-lists

Standard IP access list 2

    10 deny   192.168.10.0, wildcard bits 0.0.0.255 (16 matches)

    20 permit any (5 matches)

Ta thấy dòng “permit any” đã xuất hiện “matches”, cho thấy nó đã được tra cứu để thực hiện cho qua các gói tin xuất phát từ VLAN 110.

Cuối cùng, ta thực hiện thêm một yêu cầu nữa:

  • Tạo một interface loopback trên R1 với địa chỉ 192.168.1.1/24 giả lập một mạng LAN với subnet 192.168.1.0/24.
  • Chặn không để cho “mạng LAN” mới tạo này được phép truy nhập vào VLAN 20 của R2.

Như được yêu cầu, trước hết ta tạo thêm loopback trên R1:

R1(config)#interface loopback 1

R1(config-if)#ip add 192.168.1.1 255.255.255.0

Tiếp theo, ta bổ sung một dòng vào access – list 2 để chặn mạng mới này đi đến VLAN 20:

R2(config)#access-list 2 deny 192.168.1.0 0.0.0.255

Tiếp theo, chúng ta thực hiện kiểm tra từ R1:

R1#ping 192.168.20.2 source 192.168.1.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.2, timeout is 2 seconds:

Packet sent with a source address of 192.168.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 32/75/132 ms

Access – list đã bổ sung thêm entry cấm nhưng việc ngăn chặn vẫn không thành công! Chúng ta cùng kiểm tra lại access – list 2 trên R2:

R2#show access-lists 

Standard IP access list 2

    10 deny   192.168.10.0, wildcard bits 0.0.0.255 (16 matches)

    20 permit any (10 matches)

    30 deny   192.168.1.0, wildcard bits 0.0.0.255

Từ kết quả show ta thấy dòng vừa tạo được xếp vào sau cùng và đứng sau dòng “permit any”, do đó sẽ không bao giờ được tra cứu vì dòng “permit any” đã được tra cứu trước và luôn match với mọi gói tin trong đó có cả gói đáng lẽ bị cấm. Ta nhắc lại một ý trong hoạt động của access – list: dòng được khai báo sau luôn được xếp vào sau cùng của danh sách và cách thức tra cứu ACL là luôn tra cứu từ trên xuống, match dòng nào thi hành ngay dòng đó. Vì tính chất này, chúng ta phải luôn rất cẩn thận khi khai báo các dòng trong ACL vì nếu không, các chính sách lọc gói có thể không hoạt động theo đúng ý muốn của chúng ta.

Để sửa lỗi này, chúng ta phải xóa bỏ access – list 2 rồi viết lại theo đúng thứ tự vì ta đang sử dụng Numbered ACL – là loại ACL không cho phép sửa, xóa trên từng dòng.

R2(config)#no access-list 2

R2(config)#access-list 2 deny 192.168.11.0 0.0.0.255

R2(config)#access-list 2 deny 192.168.1.0 0.0.0.255

R2(config)#access-list 2 permit any

R2(config)#exit

R2#sh access-lists 2

Standard IP access list 2

    10 deny   192.168.10.0, wildcard bits 0.0.0.255

    20 deny   192.168.1.0, wildcard bits 0.0.0.255

    30 permit any

Các dòng đã được xếp lại đúng thứ tự cần thiết. Ta kiểm tra lại từ R1:

R1#ping 192.168.20.2 source 192.168.1.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.2, timeout is 2 seconds:

Packet sent with a source address of 192.168.1.1

U.U.U

Success rate is 0 percent (0/5)

R1#ping 192.168.20.2 source 192.168.10.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.2, timeout is 2 seconds:

Packet sent with a source address of 192.168.10.1

U.U.U

Success rate is 0 percent (0/5)

R1#ping 192.168.20.2 source 192.168.110.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.2, timeout is 2 seconds:

Packet sent with a source address of 192.168.110.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 44/60/96 ms

Kết quả hoạt động đã đúng như chúng ta mong đợi.

Để sửa lỗi ở trên, ta cũng có thể sử dụng cú pháp của Named ACL. Named ACL cho phép chúng ta sửa xóa từng dòng. Trong kết quả show của access – list bị lỗi ở trên, ta thấy dòng cuối cùng có số thứ tự là 30:

R2#show access-lists 

Standard IP access list 2

    10 deny   192.168.10.0, wildcard bits 0.0.0.255

    20 permit any

    30 deny   192.168.1.0, wildcard bits 0.0.0.255

Mặc định, mỗi dòng trong một access – list đều có một số thứ tự, bắt đầu từ 10 và mỗi dòng mới được bổ sung sẽ có số thứ tự được cộng thêm 10 vào số thứ tự trước đó. Ta cần đổi lại số thứ tự của dòng mới này thành 15 chẳng hạn, nằm giữa 10 và 20 để dòng mới này được đưa lên trước dòng “permit any”.

R2(config)#ip access-list standard 2

R2(config-std-nacl)#no 30

R2(config-std-nacl)#15 deny 192.168.1.0 0.0.0.255

R2(config-std-nacl)#end

R2#sh access-lists 2

Standard IP access list 2

    10 deny   192.168.10.0, wildcard bits 0.0.0.255

    15 deny   192.168.1.0, wildcard bits 0.0.0.255

    20 permit any

Ta thấy thứ tự của các dòng trong danh sách đã được chỉnh sửa lại đúng đắn.

Chúng ta đã cùng nhau review qua một vài đặc điểm của access – list trên router với loại access – list đầu tiên được khảo sát là standard access – list. Chúng ta sẽ cùng nhau tiếp tục khảo sát các loại access – list khác trong các bài viết tới.

TRUNG TÂM WAREN