12/08/2018, 13:19

High Available for pfsense

Hôm nay mình sẽ giới thiệu cho các bạn bài viết về HA trên pfsense. Đầu tiên ta sẽ tìm hiểu HA trên pfsense là gì? High Availability có nghĩa là “Độ sẵn sàng cao“, những máy chủ, thiết bị loại này luôn luôn sẵn sàng phục vụ, người sử dụng không cảm thấy nó bị trục trặc, hỏng hóc gây ...

Hôm nay mình sẽ giới thiệu cho các bạn bài viết về HA trên pfsense. Đầu tiên ta sẽ tìm hiểu HA trên pfsense là gì?

High Availability có nghĩa là “Độ sẵn sàng cao“, những máy chủ, thiết bị loại này luôn luôn sẵn sàng phục vụ, người sử dụng không cảm thấy nó bị trục trặc, hỏng hóc gây gián đoạn. Để đảm bảo được điều đó, tối thiểu có một cặp máy, thiết bị chạy song song, liên tục liên lạc với nhau, cái chính hỏng, cái phụ sẽ lập tức biết và tự động thay thế.

Như trong bài viết lần trước, chúng ta đã biết pfsense là gì và có thể sử dụng ra sao, với các tính năng thế nào. Vậy điều cần thiết đối với 1 filewall mềm như vậy là gì? Đó chính là khả năng HA trên đó. Vậy với pfsense, ta phải làm những gì?

Thông thường các nhóm máy chủ được gọi là "CARP cluster" nhưng CARP chỉ là một phần. High Availability đạt được bằng cách sử dụng sự kết hợp của nhiều kỹ thuật có liên quan, bao gồm cả CARP, trạng thái đồng bộ (pfsync), và cấu hình đồng bộ (XMLRPC Sync).

1. CARP

Common Address Redundancy Protocol (CARP): được sử dụng bởi các node để chia sẻ 1 IP ảo (virtual IP) giữa nhiều nút với nhau sao cho khi 1 node fail thì IP ảo đó vẫn hoạt động bởi các node khác. CARP được bắt nguồn từ OpenBSD như 1 thay thế mã nguồn mở cho giao thức route ảo VRRP (The Virtual Router Redundancy Protocol)

CARP sử dụng multicast vì vậy cần chú ý tới các switch trên hệ thống có hạn chế hoặc block, filter địa chỉ multicast hay không

2. State Synchronization (pfsync)

Trạng thái đồng bộ được xử lý bởi pfsync mà truyền thông tin trạng thái qua 1 bảng (nội dung, thêm, sửa, xóa ...) tới các node khác trên cổng mạng private/share mà bao gồm các trạng thái kết nối có giá trị. Bằng cách này, nếu có 1 node fail thì các node khác sẽ tiếp quản và người dùng có thể tiếp tục sử dụng mà không cần thiết phải reconnect lại.

3. Configuration Synchronization (XMLRPC Sync)

Cấu hình đồng bộ được xử lý bởi XMLRPC Sync. Cơ chế này cho phép pfsense truyền thông tin cấu hình và các command giữa các node. Điển hình là các node chính sẽ đồng bộ tới các node phụ.

4. Cơ chế

HA pfsense hoạt động theo Master - Slave. Khi có 1 thay đổi trên Master, pfsense sẽ tạo 1 bản ghi XML và truyền tới tới Slave qua cổng 80 hoặc 443. Server Slave sẽ đồng bộ với Master theo những cấu hình đã được định sẵn.

5. Điều kiện cần để thực hiện được HA (tối thiểu)

  • Có tối thiểu 3 IP mỗi subnet trên các cổng mạng của pfsense (1 IP cho Master, 1 IP cho Slave và 1 Virtual IP chính dùng để giao tiếp với các thiết bị khác)
  • Các thiết bị layer 2 phải cho phép multicast
  • Upstream/ISP/các routers có liên quan phải có khả năng gọi được các virtual IP được sử dụng bởi CARP

6. Thực hiện

  • Mô hình:

a.png

  • Cấu hình:

Chuẩn bị:

- Master
    - IP wan: 192.168.0.170/22
    - IP lan: 172.16.0.252/24
- Slave
    - IP wan: 192.168.0.171/22
    - IP lan: 172.16.0.253/24
- PC
    - IP: 172.16.0.3/24
  • Setup CARP Share Virtual IP address:
    • Trên Master node, Click Firewall > Virtual IPs > Add
    • Chọn CARP và Interface. Ở đây mình chọn WAN
    • Điền IP address: 192.168.0.160/22
    • Virtual IP password và VHID Group (mỗi interface phải chọn 1 VHID Group khác nhau)
    • Làm tương tự với CARP LAN với IP: 172.16.0.1/24

1.JPG

  • Setup rule for Synchronization

    Vì ta thực hiện đồng bộ trên cổng LAN (mặc định pfsense cho tất cả các traffic chạy qua cổng LAN) nên không phải cấu hình thêm nữa. Nhưng nếu các bạn thực hiện trên 1 cổng khác (OPT1, OPT2 ...) thì phải add thêm rule:

    • Click Firewall > Rules trên Sync interface tab
    • Thêm 1 rule: pass traffic from Sync Net to any destination.
    • Lưu ý: ở đây: Sync interface là cổng các bạn dùng để đồng bộ hóa giữa 2 node. và Sync Net là dải mạng trên cổng đó
  • Setup State synchronization

    • Đến System > High Avail. Sync
    • Check Synchronize States
    • Chọn đúng Synchronize Interface cho state synchronization
    • Nếu dùng 2 cluster nodes, điền pfsync Synchronize Peer IP cho node khác (mặc định là gói tin multicast).
    • Click Save.

3.JPG

  • Enable Configuration Synchronization (XMLRPC Sync)
    • Click System > High Avail. Sync
    • Điền IP address của Slave node trong Synchronize Config to IP (172.16.0.253 trong ví dụ trên)
    • Điền admin cho **Remote System Username ** (không thể sử dụng user khác)
    • Điền Remote System Password
    • Check box cho các cấu hình mong muốn đồng bộ hóa như rule trên filewall, Virtual IP, route, Users and Groups, NAT... Thông thường tất cả trong số này sẽ được lựa chọn.
    • Click Save

2.JPG

  • OK vậy là xong quá trình HA. Ta có thể check lại bằng check Status > CARP (failover). Trên node Master, mỗi sẽ VIP hiển thị MASTER. Còn trên node Slave, mỗi VIP sẽ hiển thị BACKUP.

2.PNG

1.PNG

Kết quả khi Master down, Slave đảm nhận vai trò route trong mạng. Thời gian delay gần như là không có. (DUP! giá trị lặp của gói tin khi chuyển quyền sang node Slave khi node Master fail) 3.PNG

Chúc các bạn cấu hình thành công!

0