ทำความรู้จัก Route Failover บน FortiGate

เมื่ออินเทอร์เน็ตหลักล่ม สำรองต้องมาทันที

อ่าน 8 ครั้ง
ทำความรู้จัก Route Failover บน FortiGate

ทำความรู้จัก Route Failover บน FortiGate: เมื่ออินเทอร์เน็ตหลักล่ม สำรองต้องมาทันที

ในการใช้งานจริง องค์กรส่วนใหญ่มักไม่พึ่งพาอินเทอร์เน็ตเพียงเส้นทางเดียว เพราะถ้าลิงก์หลักมีปัญหา ระบบงานทั้งหมดอาจหยุดชะงักทันที FortiGate จึงมีฟีเจอร์ Route Failover ที่ช่วยให้ไฟร์วอลล์สลับไปใช้เส้นทางสำรองโดยอัตโนมัติเมื่อเส้นทางหลักใช้งานไม่ได้ บทความนี้จะพาไปดูขั้นตอนการตั้งค่าทีละส่วน โดยอ้างอิงจากแล็บ "Exercise 1: Configuring Route Failover" ซึ่งเหมาะสำหรับผู้เริ่มต้นที่อยากเข้าใจหลักการทำงานของ Static Route, Administrative Distance, Priority และ Link Health Monitor บน FortiGate

ภาพรวมของแล็บนี้คือ Local-FortiGate มีพอร์ตเชื่อมต่ออินเทอร์เน็ต 2 เส้นทาง คือ port1 (เป็นเส้นทางหลัก) และ port2 (เป็นเส้นทางสำรอง) เป้าหมายคือให้ FortiGate ใช้ port1 เป็นหลักเสมอ และจะสลับไปใช้ port2 ก็ต่อเมื่อ port1 ใช้งานไม่ได้เท่านั้น


1. Verify the Routing Configuration (ตรวจสอบค่า Routing ที่มีอยู่เดิม)

ก่อนจะเพิ่มเส้นทางสำรอง ต้องตรวจสอบเส้นทางเริ่มต้น (default route) ที่มีอยู่แล้วก่อน โดยเข้าไปที่หน้า GUI ของ Local-FortiGate แล้วไปที่เมนู Network > Static Routes จะเห็นว่ามี default route (0.0.0.0/0) ผ่าน port1 ไปยัง Gateway IP 10.200.1.254 อยู่แล้ว

สิ่งที่ต้องทำเพิ่มคือเปิดคอลัมน์ Distance และ Priority ให้แสดงในตาราง (คลิกขวาที่หัวตารางแล้วเลือก Select Columns) เพื่อดูค่าที่ FortiGate ใช้ตัดสินใจว่าจะเลือกเส้นทางไหน

ค่าเริ่มต้นของ static route คือ:

  • Distance = 10
  • Priority = 1

ค่าทั้งสองนี้สำคัญมาก เพราะเป็นกลไกหลักที่ทำให้ Route Failover ทำงานได้ โดยหลักการคือ ยิ่งค่า Distance ต่ำ ยิ่งมีความสำคัญมากกว่า (ถูกเลือกใช้ก่อน)


2. Configure a Second Default Route (สร้างเส้นทางสำรองผ่าน port2)

ขั้นตอนนี้คือหัวใจของ Route Failover เราจะสร้าง default route เส้นที่สองผ่าน port2 แต่กำหนดให้มีค่า Distance สูงกว่าเส้นทางหลัก เพื่อให้ FortiGate มองว่าเส้นนี้เป็นแค่ "ตัวสำรอง" ไม่ใช่เส้นทางที่ใช้งานจริงตราบใดที่ port1 ยังปกติ

วิธีตั้งค่า:

  1. ไปที่ Network > Static Routes แล้วคลิก Create New
  2. กรอกค่าดังนี้
ฟิลด์ ค่าที่ตั้ง
Gateway Address 10.200.2.254
Interface port2
Administrative Distance 20
  1. คลิกขยาย Advanced Options แล้วตั้งค่า Priority = 5
  2. คลิก OK

หลังจากนี้จะเห็น static route 2 เส้นในตาราง คือ port1 (Distance 10, Priority 1) และ port2 (Distance 20, Priority 5) เนื่องจาก port2 มีค่า Distance สูงกว่า มันจะกลายเป็นเส้นทางสำรองโดยอัตโนมัติ


3. Configure the Firewall Policies (ตั้งค่านโยบายไฟร์วอลล์รองรับทั้งสองเส้นทาง)

การมี Static Route เพียงอย่างเดียวยังไม่พอ เพราะ FortiGate ต้องมี Firewall Policy อนุญาตให้ทราฟฟิกวิ่งผ่านอินเทอร์เฟซที่เกี่ยวข้องด้วย ขั้นตอนนี้แบ่งเป็น 2 ส่วน

ส่วนแรก ปรับปรุงนโยบายเดิมชื่อ Full_Access ให้เปิด Logging แบบ All Sessions (แทนที่จะ log แค่ Security Events) เพื่อให้เราสามารถตรวจสอบทราฟฟิกทั้งหมดผ่านหน้า Forward Traffic Log ได้ ซึ่งจะมีประโยชน์มากตอนทดสอบ Failover ในขั้นตอนถัดไป

ส่วนที่สอง สร้างนโยบายใหม่ชื่อ Backup_Access สำหรับอนุญาตทราฟฟิกจาก port3 ไป port2 (เส้นทางสำรอง) โดยต้องเปิด NAT และเปิด Logging แบบ All Sessions เช่นกัน

สรุปสั้น ๆ คือ:

  • Full_Access → ใช้กับเส้นทางหลัก (port1) และต้อง log ทุก session
  • Backup_Access → ใช้กับเส้นทางสำรอง (port2) และต้อง log ทุก session เช่นกัน

การเปิด log ทั้งสองนโยบายไว้ จะช่วยให้เราเห็นชัดเจนว่า ณ เวลานั้น ทราฟฟิกวิ่งออกทางพอร์ตไหนอยู่


4. View the Routing Table (ตรวจสอบตารางเส้นทางผ่าน CLI)

หลังตั้งค่าทั้งสองเส้นเสร็จแล้ว ให้เข้าไปที่ CLI ของ Local-FortiGate แล้วรันคำสั่ง:

 
get router info routing-table database

ผลลัพธ์จะแสดงเส้นทางทั้งหมดที่ FortiGate รู้จัก รวมถึงเส้นที่ยังไม่ถูกเลือกใช้งานจริงด้วย ตัวอย่างผลลัพธ์:

 
S    0.0.0.0/0 [20/0] via 10.200.2.254, port2, [5/0]
S *> 0.0.0.0/0 [10/0] via 10.200.1.254, port1, [1/0]

สังเกตเครื่องหมาย *> หน้าบรรทัด port1 ซึ่งหมายถึงเส้นทางนี้ถูก เลือกใช้งานจริง (FIB route) ส่วนเส้นทาง port2 แม้จะอยู่ใน routing table database แต่ยังไม่ถูกเลือกใช้ เพราะมีค่า Distance สูงกว่า (20 > 10)

พูดง่าย ๆ คือ FortiGate เก็บเส้นทางสำรองไว้ในใจเสมอ พร้อมสลับมาใช้ทันทีที่เส้นทางหลักมีปัญหา แต่ตราบใดที่ port1 ยังใช้งานได้ปกติ ระบบจะไม่เลือกใช้ port2 เด็ดขาด


5. Configure Link Health Monitors (ตั้งค่าตัวตรวจสอบสถานะลิงก์)

คำถามคือ แล้ว FortiGate จะรู้ได้อย่างไรว่า port1 "ล่ม" แล้ว? คำตอบคือฟีเจอร์ Link Health Monitor ซึ่งทำหน้าที่ ping ไปยังปลายทางที่กำหนดอย่างต่อเนื่อง ถ้าไม่ได้รับการตอบกลับ ก็จะถือว่าลิงก์นั้นตายและนำ static route ที่เกี่ยวข้องออกจากตารางเส้นทางโดยอัตโนมัติ (ถ้าเปิดออปชัน update-static-route ไว้)

ตั้งค่าผ่าน CLI ดังนี้ สำหรับ port1:

 
config system link-monitor
    edit port1-monitor
        set srcintf port1
        set server 4.2.2.1
        set gateway-ip 10.200.1.254
        set protocol ping
        set update-static-route enable
    next
end

และสำหรับ port2:

 
config system link-monitor
    edit port2-monitor
        set srcintf port2
        set server 4.2.2.2
        set gateway-ip 10.200.2.254
        set protocol ping
        set update-static-route enable
    next
end

ทั้งสอง monitor นี้จะคอย ping ปลายทางที่กำหนด (4.2.2.1 และ 4.2.2.2) ผ่านแต่ละพอร์ตตลอดเวลา ถ้าพอร์ตไหนหยุดตอบสนอง static route ของพอร์ตนั้นจะถูกถอดออกจากตารางเส้นทางทันที ทำให้ระบบสลับไปใช้เส้นทางที่เหลืออยู่โดยอัตโนมัติ


6. Test the Route Failover (ทดสอบการสลับเส้นทางจริง)

ขั้นตอนนี้คือการพิสูจน์ว่าที่ตั้งค่ามาทั้งหมดทำงานได้จริงหรือไม่ แบ่งเป็น 3 ช่วง

ช่วงที่ 1 - ยืนยันว่า port1 เป็นเส้นทางหลักอยู่ตอนนี้ เปิด Log & Report > Forward Traffic แล้วเพิ่มคอลัมน์ Destination Interface จากนั้นไปที่เครื่อง Local-Client แล้วลองเปิดเว็บไซต์ทดสอบ เช่น neverssl.com, testingmcafeesites.com หรือ eu.httpbin.org แล้วกลับมาดู log จะเห็นว่าทราฟฟิกทั้งหมดออกทาง port1 ตามที่คาดไว้

ช่วงที่ 2 - บังคับให้เกิด Failover กลับไปที่ CLI แล้วแก้ไข port1-monitor ให้ ping ไปยัง IP ที่ไม่มีอยู่จริงในเครือข่ายแล็บ เช่น 10.200.1.13:

 
config system link-monitor
    edit port1-monitor
        set server 10.200.1.13
    next
end

เมื่อ ping ไม่ได้รับการตอบกลับ Link Monitor จะเข้าใจว่า port1 "ตาย" แล้ว และถอด route ของ port1 ออกจากตารางทันที

ช่วงที่ 3 - ตรวจสอบว่าเปลี่ยนไปใช้ port2 จริง ไปที่ Log & Report > System Events > General System Events จะเห็น log ยืนยันว่า FortiGate ตรวจพบลิงก์ล่มและลบเส้นทาง port1 ออกไปแล้ว จากนั้นเข้าไปดูที่ Dashboard > Network > Routing จะพบว่าตอนนี้เหลือ route ผ่าน port2 เพียงเส้นเดียว

ทดสอบซ้ำโดยเปิดเว็บไซต์เดิมอีกครั้งจากเครื่อง Local-Client แล้วเช็ค Forward Traffic Log จะเห็นว่าทราฟฟิกทั้งหมดเปลี่ยนไปวิ่งผ่าน port2 แทน ซึ่งพิสูจน์ได้ว่าระบบ Failover ทำงานสมบูรณ์


7. Restore the Routing Table (คืนค่าเส้นทางหลักกลับสู่สภาพปกติ)

หลังทดสอบเสร็จแล้ว ต้องคืนค่า Link Monitor ของ port1 กลับไปเป็น IP ที่ถูกต้อง เพื่อให้ port1 กลับมาเป็นเส้นทางหลักตามเดิม:

 
config system link-monitor
    edit port1-monitor
        set server 4.2.2.1
    next
end

เมื่อ ping กลับมาสำเร็จอีกครั้ง FortiGate จะเพิ่ม static route ของ port1 กลับเข้าไปในตารางโดยอัตโนมัติ และเนื่องจาก port1 มีค่า Distance ต่ำกว่า มันจะกลับมาเป็นเส้นทางที่ถูกเลือกใช้งานทันที ตรวจสอบผลลัพธ์ได้ที่ Dashboard > Network > Routing ซึ่งควรจะเห็น route ผ่าน port1 กลับมาเป็นเส้นทางที่ใช้งานอยู่อีกครั้ง


บทสรุป

แล็บนี้สอนหลักการสำคัญของ Route Failover บน FortiGate ผ่าน 3 กลไกหลักที่ทำงานร่วมกัน:

  1. Administrative Distance - กำหนดลำดับความสำคัญของเส้นทาง ยิ่งค่าน้อยยิ่งถูกเลือกก่อน เป็นตัวกำหนดว่าเส้นไหนคือ "หลัก" เส้นไหนคือ "สำรอง"
  2. Firewall Policy - ต้องมีนโยบายรองรับทราฟฟิกสำหรับทั้งเส้นทางหลักและเส้นทางสำรอง พร้อมเปิด Logging เพื่อให้ตรวจสอบสถานะการใช้งานได้ง่าย
  3. Link Health Monitor - เป็นกลไกที่คอยตรวจสุขภาพของแต่ละลิงก์แบบเรียลไทม์ด้วยการ ping และเป็นตัวที่สั่งถอด/เพิ่ม route โดยอัตโนมัติเมื่อสถานะลิงก์เปลี่ยนแปลง

เมื่อทั้งสามส่วนนี้ทำงานร่วมกัน FortiGate จะสามารถตรวจจับปัญหาของอินเทอร์เน็ตเส้นหลักได้อย่างรวดเร็ว และสลับไปใช้เส้นทางสำรองโดยที่ผู้ใช้งานแทบไม่รู้สึกถึงการหยุดชะงัก ซึ่งเป็นพื้นฐานสำคัญของการออกแบบเครือข่ายที่ต้องการความพร้อมใช้งานสูง (High Availability) สำหรับผู้ที่เริ่มต้นศึกษา FortiGate เรื่อง Route Failover ถือเป็นหนึ่งในฟีเจอร์ที่ควรทำความเข้าใจให้แม่นยำ เพราะเป็นรากฐานที่นำไปต่อยอดกับฟีเจอร์อื่น เช่น SD-WAN ได้ในอนาคต

อรรถกร

อรรถกร ทองคำชุม

บุคลากรผู้ร่วมสร้างสรรค์องค์กรแห่งการเรียนรู้ (KM) ผ่าน Blog Space NSTRU