Using Redundant Interface on Cisco ASA Firewall
ในการเชื่อมต่ออุปกรณ์สำคัญ ๆ ของระบบเครือข่ายไว้กับอุปกรณ์อย่างเช่นสวิตซ์เพียงตัวใดตัวหนึ่ง เช่น เชื่อมต่อเราเตอร์หรือ Firewall ที่ใช้เป็น gateway ของระบบไว้กับสวิตซ์ Layer 2 ตัวใดตัวหนึ่งเพียงตัวเดียว ถ้าในกรณีที่เหตุการณ์ปกติก็คงไม่มีปัญหาอะไรใช่มั้ยครับ แต่ถ้าเกิดวันใดวันหนึ่งเจ้าสวิตซ์ตัวนี้เกิดทำงานผิดปกติหรือใช้งานไม่ได้ขึ้นมา ก็จะส่งผลกระทบต่อระบบเครือข่ายของเราทั้งหมดที่จะไม่สามารถเชื่อมต่อสู่เครือข่ายภายนอกได้ (เนื่องจากสวิตซ์ตัวนี้ใช้ในการเชื่อมต่อไปยัง gateway) ซึ่งในวันนี้ผมจะมาแนะนำวิธีการที่จะช่วยป้องกันการเกิดเหตุการณ์ดังกล่าวด้วยการใช้งานคุณสมบัติ Redundant Interface บน Cisco ASA Firewall กันครับ
จากที่เคยได้เขียนบทความเรื่อง การใช้งาน Backup Interface บน Cisco IOS Router กันไปแล้ว ซึ่งเป็นการตั้งค่า Backup Interface สำหรับใช้งานกับ Cisco IOS Router แต่ในวันนี้ผมจะมาแนะนำการตั้งค่า Redundant Interface บน Cisco ASA Firewall กันครับ โดยลักษณะการทำงานจะเหมือนกับ Backup Interface บน Cisco IOS Router นั่นเองครับ และสำหรับเพื่อน ๆ ที่ยังไม่รู้จักกับ Cisco ASA Firewall หรือยังไม่เคยทำการตั้งค่าในเบื้องต้นก็ขอให้ติดตามบทความ การตั้งค่า Cisco ASA Firewall ขั้นพื้นฐาน ก่อนนะครับ
การใช้งานคุณสมบัติ Redundant Interface นั้นจะช่วยเพิ่มระดับความน่าเชื่อถือในการส่งต่อข้อมูลไปยังปลายทางได้ครับ เนื่องจากโดยปกติที่ไม่มีการใช้งาน Redundant Interface นั้น ในการเชื่อมต่อทาง Physical บนอุปกรณ์ Cisco ASA Firewall จะสามารถเชื่อมต่อไปยัง Zone ต่าง ๆ ได้เพียง Zone ละอินเทอร์เฟสเท่านั้น (ยกเว้นรุ่น Cisco ASA 5505) เช่นในฝั่ง inside ก็จะสามารถเชื่อมต่อไปยังสวิตซ์ได้เพียงตัวเดียว แต่ด้วยการใช้งานคุณสมบัติ Redundant Interface ทำให้เราสามารถทำการเชื่อมต่ออินเทอร์เฟสบน Cisco ASA Firewall ไปยังแต่ละ Zone ได้สูงสุด 2 อินเทอร์เฟสต่อหนึ่ง Zone เช่น ในฝั่ง inside ก็จะสามารถเชื่อมต่อไปยังสวิตซ์ 2 ตัวได้ ซึ่งถ้ามีสวิตซ์ตัวใดตัวหนึ่งไม่สามารถใช้งานได้ขึ้นมาก็ยังมีอีกเส้นทางนึงที่สามารถเชื่อมต่อไปยัง Cisco ASA Firewall ได้นั่นเองครับ
เอาล่ะครับในวันนี้ก็จะไม่เขียนให้มากความ เรามาดูขั้นตอนการตั้งค่า Redundant Interface บน Cisco ASA Firewall กันเลยดีกว่านะครับ
- ทำการวางแผนว่าจะให้อินเทอร์เฟสใดเป็นสมาชิกของ Redundant Interface ที่ต้องการ
- ทำการตรวจสอบให้แน่ใจว่าอินเทอร์เฟสที่จะกำหนดให้เป็นสมาชิกของ Redundant Interface นั้น ไม่มีการใช้คำสั่ง nameif และไม่อยู่ในสถานะ shutdown
- ทำการสร้าง Redundant Interface ขึ้นมา
- ทำการกำหนดสมาชิกให้กับ Redundant Interface นี้
- ทำการกำหนด nameif และการตั้งค่าอื่น ๆ บน Redundant Interface
- ตรวจสอบการทำงาน
ในขั้นตอนแรกนั้นก็จะเป็นการวางแผนว่าจะเลือกใช้งานอินเทอร์เฟสใด เป็นสมาชิกของ Redundant Interface เช่น เลือกใช้ interface GigabitEthernet 0/1 และ GigabitEthernet 0/2 ให้เป็นสมาชิกของ Redundant Interface หมายเลข 1 โดยใช้ในการเชื่อมต่อไปยัง Zone inside โดยเมือกำหนดอินเทอร์เฟสที่จะนำมาใช้งานเรียบร้อยแล้ว เราก็จะต้องตรวจสอบให้แน่ใจว่าอินเทอร์เฟสนั้น ๆ ไม่ได้มีการตั้งค่า nameif เอาไว้ และไม่ได้อยู่ในสถานะ shutdown
ตัวอย่าง
Running-config(config)# interface GigabitEthernet 0/1
Running-config(config-if)# no nameif
Running-config(config-if)# no shutdown
Running-config(config-if)# interface GigabitEthernet 0/2
Running-config(config-if)# no nameif
Running-config(config-if)# no shutdown
Running-config(config-if)# exit
จากนั้นก็ให้เราทำการสร้าง Redundant Interface ขึ้นมา ด้วยการใช้คำสั่ง "interface redundant <number>" ใน global-config mode โดยในส่วนของ number นี้จะสามารถกำหนดเป็นหมายเลขได้ตั้งแต่ 1-8
ตัวอย่าง
Running-config(config)# interface redundant 1
เมื่อทำการสร้าง Redundant Interface ขึ้นมาแล้ว ในขั้นตอนต่อมา ก็จะเป็นการกำหนดสมาชิกให้กับ Redundant Interface ที่สร้างขึ้นมานี้ โดยสามารถทำได้โดยการใช้คำสั่ง "member-interface <interface>" ใน redundant interface config mode โดยการกำหนดสมาชิกนี้จะสามารถกำหนดได้สูงสุด 2 Physical Interface ต่อหนึ่ง Redundant Interface เท่านั้น
ตัวอย่าง
Running-config(config)# interface redundant 1
Running-config(config-if)# member-interface GigabitEthernet 0/1
INFO: security-level and IP address are cleared on GigabitEthernet0/1.
Running-config(config-if)# member-interface GigabitEthernet 0/2
INFO: security-level and IP address are cleared on GigabitEthernet0/2.
เมื่อทำการกำหนดสมาชิกให้กับ Redundant Interface แล้ว ก็จะสามารถใช้คำสั่ง nameif ในการตั้งชื่อให้กับอินเทอร์เฟสนี้ได้ และในการตั้งค่าอื่น ๆ เช่น IP Address ก็ให้ทำการตั้งค่าใน Redundant Interface นี้เพียงที่เดียว ไม่จำเป็นที่จะต้องไปทำการตั้งค่าบน Physical Interface และในการใช้งานอื่น ๆ ก็จะเหมือนกับการใช้งาน Physical Interface ที่จะอ้างถึง nameif ที่กำหนดไว้เสมอ
ตัวอย่าง
Running-config(config)# interface redundant 1
Running-config(config-if)# nameif inside
INFO: Security level for "inside" set to 100 by default.
Running-config(config-if)# ip address 10.0.0.1 255.255.255.0
Running-config(config-if)# no shutdown
Running-config(config-if)# exit
เมื่อทำการตั้งค่าเสร็จเรียบร้อยแล้ว ก็ให้ทำการเชื่อมต่ออินเทอร์เฟสนี้ไปยังสวิตซ์ตามต้องการ (ซึ่งควรจะเชื่อมต่อแต่ละอินเทอร์เฟสไปยังสวิตซ์คนละตัว) โดยสามารถตรวจสอบการตั้งค่าได้ด้วยการใช้คำสั่ง "show interface redundant 1"
ตัวอย่าง
Running-config(config)# show interface redundant 1
Interface Redundant1 "inside", is down, line protocol is down
Hardware is i82546GB rev03, BW 1000 Mbps, DLY 10 usec
Auto-Duplex, Auto-Speed
MAC address 0027.0df9.7209, MTU 1500
IP address 10.0.0.1, subnet mask 255.255.255.0
0 packets input, 0 bytes, 0 no buffer
Received 0 broadcasts, 0 runts, 0 giants
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
0 L2 decode drops
0 packets output, 0 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets
0 late collisions, 0 deferred
0 input reset drops, 0 output reset drops, 0 tx hangs
input queue (blocks free curr/low): hardware (510/255)
output queue (blocks free curr/low): hardware (510/255)
Traffic Statistics for "inside":
0 packets input, 0 bytes
0 packets output, 0 bytes
0 packets dropped
1 minute input rate 0 pkts/sec, 0 bytes/sec
1 minute output rate 0 pkts/sec, 0 bytes/sec
1 minute drop rate, 0 pkts/sec
5 minute input rate 0 pkts/sec, 0 bytes/sec
5 minute output rate 0 pkts/sec, 0 bytes/sec
5 minute drop rate, 0 pkts/sec
Redundancy Information:
Member GigabitEthernet0/1(Active), GigabitEthernet0/2
Last switchover at 10:34:33 UTC Mar 3 2011
ซึ่งจากการ show interface redundant 1 ตามตัวอย่างด้านบนนี้ จะเห็นว่า Redundant Interface นี้มีสมาชิกอยู่ 2 อินเทอร์เฟสด้วยกัน คือ GigabitEthernet0/1, GigabitEthernet0/2 โดยอินเทอร์เฟสที่อยู่ในสถานะ Active ก็คือ GigabitEthernet0/1 โดยเราสามารถเลือกอินเทอร์เฟสที่จะให้อยู่ในสถานะ Active ได้ด้วยการใช้คำสั่ง "redundant-interface redundant <number> active-member <interface>"
ตัวอย่าง Running-config# redundant-interface redundant 1 active-member GigabitEthernet 0/2 Running-config# show interface redundant 1 | grep Member
Running-config# show interface redundant 1 | grep Member
Member GigabitEthernet0/1(Active), GigabitEthernet0/2
Member GigabitEthernet0/2(Active), GigabitEthernet0/1
เห็นมั้ยครับเพื่อน ๆ เพียงแค่เพิ่มการตั้งค่าขึ้นอีกนิดเราก็จะสามารถเพิ่มระดับความน่าเชื่อถือในการส่งต่อข้อมูลของระบบเครือข่ายได้มากขึ้นเยอะเลยนะครับ โดยถ้าสวิตซ์ทั้งสองตัวที่เชื่อมต่ออยู่กับทั้งสองอินเทอร์เฟสนี้ไม่เกิดเสียขึ้นมาพร้อม ๆ กัน(ซึ่งมีโอกาสเป็นไปได้น้อย) เราก็จะสามารถส่งต่อข้อมูลไปยังเครือข่ายอื่น ๆ ได้ตลอดเวลาครับ
เห็นภาพ ในการนำไปใช้งานขึ้นเยอะเลย แต่มีคำถามเพิ่มเิตม เพื่อให้กระจ่าง มันคือ concept เดียวกับ Ether Channel ของ Switch ใช่ป่ะครับ
ReplyDelete