โจทย์จากเครื่อข่าย Router on stick ให้ทำการกำหนดเงื่อนไขการใช้งาน (ACL) ดังนี้
1. Vlan 10 เปิดได้เฉพาะ Web
2. Vlan 20 ไม่สามารถเชื่อมต่อกับ Server ได้
3. Vlan 30 Ping ไป server ได้อย่างเดียว
Access Control List (ACL) คือ กลไกการควบคุมของ Router/Switch ที่สร้างขึ้นเป็นเงื่อนไขในการอนุญาตให้เข้าถึงทรัพยากรระหว่างเครื่องผู้ใช้หรือระหว่างเครือข่าย (Network)
ACL (Access Control List ) แบ่งเป็น 2 ประเภทคือ แบบ Standard ACL และ แบบ Extended ACL โดย Standard ACL สนใจเฉพาะ source address เท่านั้น ส่วน Extended ACL สนใจ source และ destination address รวมถึง ต้องระบุ protocols และ applications ให้ถูกต้องด้วย
ส่วนการ Config บน Router CISCO นั้น Config ได้ 2 แบบคือ แบบ Numbered ACLs และแบบ Named ACLs ใช้การกำหนดชื่อเงื่อนไข
Numbered ACLs
การ Config แบบ Standard ACL number จะใช้หมายเลข 0 - 99
การ Config แบบ Extended ACL number จะใช้หมายเลข 100 – 199
ACL จะใช้เงื่อนไขการทำงานจากบรรทัดบน ลงบรรทัดล่างโดย คำสั่งบรรทัดบนสำคัญกว่าในกรณีที่เกิดการขัดแย้งของเงื่อนไข
Standard ACL สนใจเฉพาะ source address เท่านั้น
ตัวอย่าง Standard ACL Command:
Router(config)#access-list access-number (permit, deny) (Source Address and Wildcard )
Router(config)#access-list 1 deny 192.168.1.0 0.0.0.255
Router(config)#access-list 1 permit any
( เงื่อนไข 1 คือ ไม่อนุญาตให้การเชื่อมต่อจาก IP 192.168.1.0 – 192.168.1.255 ผ่าน แต่ IP อื่นๆผ่านได้)
*คำสั่งลบ เงื่อนไข 1 ใช้ Router(config)#no access-list 1
กำหนดเงื่อนไข 1 ให้ interface gigabitEthernet 0/0 ขาออก
R1(config)#interface gigabitEthernet 0/0
R1(config-if)#ip access-group 1 out
Extended ACL สนใจ source และ destination address รวมถึง ต้องระบุ protocols และ protocols ด้วย
ตัวอย่าง Extended ACL Command:
Router(config)# access-list 100 permit tcp host 10.1.1.2 30.1.1.0 0.0.0.255 eq 23
- Protocol: TCP
- Source IP address: host 10.1.1.2
- Source TCP Port: Any port (เพราะไม่ได้ระบุว่าให้ใช้ port อะไร หรือไม่มี command eq ตามหลัง source IP address)
- Destination IP address: host ตั้งแต่ IP address 30.1.1.0 ไปจนถึง IP address 30.1.1.255 (แต่ในความเป็นจริงแล้ว IP address ที่สามารถใช้ได้จริงคือ IP address 30.1.1.1 จนถึง IP address 30.1.1.254 เท่านั้น)
- Destination TCP Port: eq 23 (หรือ TCP port 23 หรือ Telnet Application)
ความหมายคือ: เรากำลังสนใจ traffic จาก client เครื่องใดเครื่องหนึ่งที่มี IP address 10.1.1.2 ไปยัง server IP address ใด address หนึ่งจาก 30.1.1.1 ถึง 30.1.1.254 โดยไม่สนใจว่า client จะใช้ source TCP port เป็นหมายเลขอะไร (any port) แต่สนใจ traffic ที่ไปหา server 30.1.1.1 ถึง 30.1.1.254 เพื่อไปติดต่อ server ขอใช้บริการ Telnet Application (หรือ TCP port 23)
Named ACLs เป็นการกำหนด ชื่อเงื่อนไขแทนตัวเลข
Command ที่เกี่ยวข้อง
R1(config)# ip access-list standard {acl-name | acl-num}
R1(config)# no ip access-list standard {acl-name | acl-num}
รูปแบบประกอบด้วยคำสั่ง ip access-list
ประเภท ACL Standard หรือ Extended
ชื่อหรือตัวเลข {acl-name | acl-num}
ตัวอย่าง
สร้างชื่อเงื่อนไข ACL แบบ standard ชื่อ blockVlan20
R1(config)#ip access-list standard blockVlan20
ปฏิเสธการเชื่อมต่อ IP 192.168.20.0 – 192.168.20.255
R1(config-std-nacl)#deny 192.168.20.0 0.0.0.255
อนุญาตให้ IP Address อื่นสามารถ เชื่อมต่อได้
R1(config-std-nacl)#permit any
ออกไปยัง config
R1(config-std-nacl)#exit
กำหนดการทำงานให้ Router interface gigabitEthernet 0/0 ขาออก
R1(config)#interface gigabitEthernet 0/0
กำหนดเงื่อนไขการทำงาน ชื่อ blockVlan20 ขาออก
R1(config-if)#ip access-group blockVlan20 out
R1(config-if)#exit
ขั้นตอนการ Config
1. Vlan 10 เปิดได้เฉพาะ Web
สร้าง Access-list แบบ Extended หมายเลข 101 อนุญาตการเชื่อมต่อ IP 192.168.20.0 – 192.168.20.255
Port protocols TCP 80 /UDP 53 ไปยัง IP 199.199.199.199 port 80, 443, 53
R1(config)# access-list 101 permit tcp 192.168.10.0 0.0.0.255 host 199.199.199.199 eq 80
R1(config)# access-list 101 permit tcp 192.168.10.0 0.0.0.255 host 199.199.199.199 eq 443
R1(config)# access-list 101 permit tcp 192.168.10.0 0.0.0.255 host 199.199.199.199 eq 53
R1(config)# access-list 101 permit udp 192.168.10.0 0.0.0.255 host 199.199.199.199 eq 53
ไม่อนุญาตให้ทุก IP และทุก port เชื่อมต่อ ไปยัง 199.199.199.199
R1(config)# access-list 101 deny ip any host 199.199.199.199
อนุญาตการเชื่อมต่อไปยัง VLAN อื่นได้
R1(config)# access-list 101 permit ip any any
กำหนดการทำงานให้ Router interface gigabitEthernet 0/1.10 ขาเข้า Router
R1(config)#interface gigabitEthernet 0/1.10
R1(config-subif)#ip access-group 101 in
R1(config-subif)#exit
2. Vlan 20 ไม่สามารถเชื่อมต่อกับ Server ได้
สร้างชื่อเงื่อนไข ACL แบบ standard ชื่อ blockVlan20 ปฏิเสธการเชื่อมต่อ IP 192.168.20.0 – 192.168.20.255 แต่ อนุญาตให้ IP Address อื่นสามารถ เชื่อมต่อได้ กำหนดการทำงานให้ Router interface gigabitEthernet 0/0 ขาออก Router
R1(config)#ip access-list standard blockVlan20
R1(config-std-nacl)#deny 192.168.20.0 0.0.0.255
R1(config-std-nacl)#permit any
R1(config-std-nacl)#exit
R1(config)#interface gigabitEthernet 0/0
R1(config-if)#ip access-group blockVlan20 out
R1(config-if)#exit
3. Vlan 30 Ping ไป server ได้อย่างเดียว
สร้าง Access-list แบบ Extended หมายเลข 103 อนุญาตการเชื่อมต่อ IP 192.168.30.0 – 192.168.30.255
Port protocols ipmp ไปยัง IP 199.199.199.199
R1(config)# access-list 103 permit icmp 192.168.30.0 0.0.0.255 host 199.199.199.199
ไม่อนุญาตให้ทุก IP และทุก port เชื่อมต่อ ไปยัง 199.199.199.199
R1(config)# access-list 103 deny ip any host 199.199.199.199
อนุญาตการเชื่อมต่อไปยัง VLAN อื่นได้
R1(config)# access-list 103 permit ip any any
กำหนดการทำงานให้ Router interface gigabitEthernet 0/1.30 ขาเข้า Router
R1(config)#interface gigabitEthernet 0/1.30
R1(config-subif)#ip access-group 103 in
R1(config-subif)#exit
R1(config)#