[บทความ] การติดตั้ง Internet Load Balance บน VM โดยใช้ pfSense แบบ Step-By-Step

Guys

Staff Member
Administrator
สมัครเมื่อ
21 พฤษภาคม 2009
คำขอบคุณ
141
#1
ทุกวันนี้หลายๆ ที่มีการติดตั้ง Internet ไว้หลาย Link ไม่ว่าจะเพื่อทำ Redundant, ทำ Load Balance หรือแบ่งโหลดการใช้งานก็ตาม บางที่ที่แอดมินเจอ ส่วนใหญ่ก็จะมี Link Corporate 2 Link เพื่อใช้สำหรับระบบงานของ core business/core application หลัก แต่ก็จะเช่าไว้อีก 2-3 Link ที่เป็น ADSL/FTTX สำหรับให้ User ใช้งานเกี่ยวกับ internet ทั่วไป
หากเราต้องการทำ Load Balance Link เราจำเป็นที่จะต้องมีอุปกรณ์เพื่อมารองรับฟังชันก์นี้ บางที่ก็อาจจะใช้ Firewall UTM ช่วย Load Balance , บางที่ก็อาจจะใช้อุปกรณ์ Load Balance โดยเฉพาะ เช่นพวก Peplink, Mikrotik, Cisco RV เป็นต้น
แต่วันนี้เรามีเทคนิคง่ายๆ ในการติดตั้ง Internet Load balance เพื่อใช้งานเองบน VM โดยเราจะใช้ Pfsense และใช้ความรู้เรื่อง VLAN นิดหน่อย เข้ามาช่วยในเรื่องของการควบคุมเส้นทางของข้อมูลให้เข้า-ออกบนระบบ VM ได้อย่างถูกต้อง
เริ่มต้นเราก็ออกแบบ Network Diagram กันก่อนนะครับตามด้านล่าง

การติดตั้ง Internet Load Balance บน VM โดยใช้ pfSense แบบ Step-By-Step
  1. เราให้ Client ทั้งหมดไม่ว่าจะกี่ VLAN ก็ตาม ชี้ Gateway บน Core Switch (หากไม่มี core switch ก็สามารถชี้ Gateway มายัง pfSense ได้เลยครับ)
  2. เราจะให้ Core Switch ทำการชี้ Default Route ไปยัง pfSense ที่ VLAN 252
  3. เราจะติดตั้ง pfSense ที่มีจำนวน 3 interface (3 VLAN) ดังนี้
  • VLAN 511 = FW-Outside1 (Connect to Internet Link#1)
  • VLAN 512 = FW-Outside2 (Connect to Internet Link#2)
  • VLAN 252 = FW-Inside (Connect to internal network)
36992477_979307555563944_8040655257488850944_n.png

ภาพ Diagram

36972292_978158612345505_2549580938677846016_n.png

  • ทำการแตกไฟล์ จะได้ไฟล์: pfSense-CE-2.4.3-RELEASE-amd64.iso
36998551_978375225657177_3716343860159315968_n.png

  • เริ่มต้นสร้าง VM Guest สำหรับ pfSense FW
36930998_978376482323718_3150456239301853184_n.png

  • ตั้งชื่อ VM Guest
36957676_978376832323683_3595768056392974336_n.png

  • เลือก DataStore
37045790_978377095656990_8603966258745966592_n.png

  • เลือก Operating System Type
36995121_978377408990292_2860657963863900160_n.png

  • สร้าง Interface card จำนวน 3 ใบ โดยระบุ VLAN ตามที่ออกแบบไว้
36981004_978378368990196_4118492157868769280_n.png

  • กำหนดขนาดของ Disk ตามต้องการ
36968101_978378772323489_3920426863385640960_n.png

  • ตรวจสอบการสร้าง Guest ก่อนระบบจะทำการสร้าง VM
36996319_978380315656668_4376463304009187328_n.png

  • เพิ่ม Memory จาก Default 2GB เป็น 4GB
36966803_978381188989914_6229940394600169472_n.png

  • หลังจาก VM Guest ถูกสร้างเรียบร้อยแล้ว จึงทำการ Power On และ Mount ISO ที่เราได้เตรียมไว้
36927789_978382385656461_1162218403700670464_n.png

  • เลือก ISO
36942364_978382688989764_3011009586187468800_n.png

  • หลังจากทำการ Mount ISO แล้ว ทำการ Reboot 1 รอบ เพื่อให้ระบบ Boot ISO ขึ้นมา
37011743_978384385656261_7840804089834242048_n.png

  • กด Accept
37020719_978384632322903_5005533286814973952_n.png

  • กด OK เพื่อเริ่มการติดตั้ง
36925722_978384838989549_3156281945827049472_n.png

  • กด Enter
36967433_978385232322843_4213825622792732672_n.png

  • กด OK
36913010_978385452322821_2714405965133774848_n.png

  • รอจนกว่าจะติดตั้งเสร็จ
37095858_978385672322799_8517336523572510720_n.png

  • หลังจากติดตั้งเสร็จแล้ว ระบบจะให้ทำการ Reboot อีก 1 รอบ
36996363_978386065656093_2996626522397212672_n.png

  • หลังจาก Boot ขึ้นมาแล้ว จะขึ้นหน้าจอให้ setup VLAN ให้กด “n”
37024772_978386368989396_3936303098326155264_n.png

  • เลือก WAN interface เป็น “vmx0”
36895074_978386818989351_2315754127285551104_n.png

  • เลือก LAN เป็น “vmx2”
36948579_978387098989323_6168569692806971392_n.png

  • เลือก Optional 1 เป็น “vmx1” ==> interface นี้เราจะใช้เป็น Internet Link#2
36961550_978387578989275_4707720207265693696_n.png

  • กด y เพื่อทำการ ยืนยันการตั้งค่า
37074757_978387988989234_8886977588208074752_n.png

  • หลังจากตั้งค่าเริ่มต้นเรียบร้อยแล้ว เราจะได้หน้าจอ Console ดังภาพ
37019313_978388655655834_230413205745172480_n.png

  • ให้กด 2 เพื่อทำการ Assign IP ให้กับ Interface LAN เพื่อจะได้เข้า Web Interface ได้
36978268_978389302322436_760860379973681152_n.png

  • กด Enter
36949233_978389728989060_271197781396291584_n.png

  • ทำการ Disable DHCP Server บน LAN โดยการกด “n” (ตัวอย่างนี้ไม่ได้ให้ pfSense เป็นคนแจก IP ให้กับ client เลยทำการ disable)
36905814_978390445655655_7108459316293664768_n.png

  • เราจะใช้ HTTPS ในการเข้า Web UI เพื่อตั้งค่า ให้ทำการกด “n”
36944744_978391592322207_8145642997145403392_n.png

  • หลังจากนี้เราจะได้ URL สำหรับเข้าจัดการผ่าน Web Interface ที่ https://10.101.252.251
36961332_979309558897077_1439770563441590272_n.png


  • เปิด web browser และทำการ login โดยใช้ default User/Password = admin / pfsense
36927627_978392545655445_4856953914026622976_o-1024x431.png

  • พอเข้าระบบได้แล้ว เริ่มต้นทำการตั้งค่า Interface ของ WAN โดยไปที่ Interface > WAN โดยทำการตั้งชื่อ Interface , กรอก IP address และเลือก subnet mask
36995145_978393142322052_7573770966426189824_o.png

  • กดปุ่ม “Add a new gateway” เพื่อตั้งค่า Gateway ให้กับ WAN#1 = 3BB_1 และใส่ IP Address ของ ขา LAN ของ Modem 3BB Link#1
36907557_978393878988645_2282944167736770560_o-1024x676.png

  • ด้านล่าง ให้เราเลือก Block private network หรือการทำ AntiSpoofing บนขา Internet
37037722_979313035563396_3549548568995954688_o-1024x562.png


  • กด Apply Change เพื่อยืนยันการตั้งค่า
36935868_978395458988487_816589466129924096_o-1024x395.png

  • ถัดมาเราจะทำการตั้งค่า Internet Link#2 โดยเลือก ที่ Interfaces > OPT1
37033802_978397138988319_2858468655824371712_n.png

  • ทำการตั้งชื่อ Interface , กรอก IP address และเลือก subnet mask
36963536_978397528988280_6059492366895546368_o-1024x628.png

  • กดปุ่ม “Add a new gateway” เพื่อตั้งค่า Gateway ให้กับ WAN#2 = 3BB_2 และใส่ IP Address ของ ขา LAN ของ Modem 3BB Link#2
37064458_978398792321487_5927989058226618368_o-1024x522.png

  • ด้านล่าง ให้เราเลือก Block private network หรือการทำ AntiSpoofing บนขา Internet
36996389_978399372321429_8935279400304246784_o-1024x429.png

  • ทำการตั้งค่า Gateway เพิ่มเติมโดยไปที่ System > Routing > Gateways > Gateways tab
36965811_978399985654701_2438318780082814976_o-1024x364.png

  • ทำการ Edit Gateway ของ 3BB_1 ก่อน โดยการกด icon รูปดินสอ
  • ทำการติ๊ก Default Gateway และ ใส่ IP ที่จะทำการ monitor link ในตัวอย่างจะใช้ IP 8.8.8.8
37033843_978401168987916_537152082034032640_o-1024x628.png

  • ทำการ Edit Gateway ของ 3BB_2 ต่อไป
36946953_978402765654423_4004392799712575488_o-1024x636.png

  • เราก็ได้จะ Gateway 2 Gateway ที่พร้อมใช้งาน
36963516_978403282321038_6385484782708457472_o-1024x373.png

  • ถัดมา เราต้องสร้าง Gateway Group เพื่อเป็น Internet Gateway Load Balance โดยไปที่ System>Routing>Gateway Groups จากนั้นสร้าง Group Name ขึ้นมา โดยตั้งชื่อ และเลือก Priority เป็น Tier1 ทั้งคู่เพื่อที่ทำ Load balance
36927803_978404445654255_3619074262633021440_o-1024x635.png

  • หลังจากสร้าง Gateway Group เสร็จเรียบร้อยแล้ว เราจะทำการ Assign ให้กับ Firewall Rule โดยไปที่ Firewall > Rules จากนั้นกดปุ่ม Add
36968008_978407252320641_3665715090616745984_o-1024x372.png

  • เลือก Address Family , Protocol และ Enable Log ตามภาพ
36967442_978407818987251_4323118405738561536_o-1024x614.png

  • เลื่อนลงมาด้านล่าง ทำการเลือก Gateway Group ที่ใช้ Load balance ที่เราได้ทำการสร้างไว้ก่อนหน้านี้ แล้วกด Save
36973036_978408912320475_1411480648949956608_o-1024x569.png

  • กด Apply Change เราก็จะได้ Policy ที่พร้อมจะ load balance internet
36939251_978409678987065_4868656720655679488_o-1024x525.png

  • เนื่องจากการทำ load balance เราจำเป็นที่จะต้องป้องกันไม่ให้เกิดปัญหา session invalid โดยการตั้งค่า Sticky เสียก่อน ไปที่ System > Advanced > Miscellaneous ให้เลือก Use Sticky Connections จากนั้นจึงกด Save
37019509_978411978986835_5968538016266846208_o-1024x554.png

  • ที่นี้ระบบ pfSense Internet Load balance ของเราก็พร้อมใช้งานแล้ว มาเริ่มทดสอบเตะ traffic มายัง load balance กันดีกว่าครับ จากตัวอย่างเราจะใช้ FortiGate เตะ traffic ของวง 10.101.10.x ไปยัง pfSense Load balance (10.101.252.251) มาดูผลกันดีกว่าครับ
36912963_978414315653268_8355535214222508032_n.png

  • ทำการ Test Speed ของเครื่อง Client เครื่องที่ 1 จะเห็นว่าใช้งาน Internet Link#1
36965856_978415848986448_300279133806526464_o-1024x498.png

  • ทำการ Test Speed เครื่อง client เครื่องที่ 2 จะเห็นว่าใช้งาน Internet Link #2
36995160_978417962319570_3178793548757598208_o-1024x468.png

  • ทำการเทส Failover Link โดยการ down internet link#1 พบว่า เครื่องที่ 1 จะมี timeout ก่อนที่จะกลับมาใช้งานได้ปกติ (ตัวอย่างไม่ได้มีการ tuning ค่าเวลาในการ detect route failure อาจจะ timeout นานนิดนึง)
36933688_978420608985972_7179593384988770304_o-1024x490.png

  • สรุป สิ่งที่ทดสอบให้ดูครั้งนี้ สามารถนำไปใช้งานได้จริงนะครับ ช่วยลดภาระการทำงานของ Firewall หลักลงได้ และเคสนี้มีการใช้งานจริงมากกว่า 2 ปี ซึ่ง Environment นั้นใช้ VM Guest Resource
    • Memory 4 GB
    • Disk 60 GB (เนื่องจากเก็บ log ที่อุปกรณ์ตัวอื่น)
    • Internet Link Speed = 200 Mbps x 2 (วิ่งเต็มทุกวัน 2 Link)
  • สิ่งที่สามารถต่อยอดได้ ก็คือ สามารถที่จะทำ Cluster Configuration Sync ได้
37010162_979315282229838_3353902702605107200_o-1024x712.png
 

Top