1. Tổng quan.
OPNsense có hỗ trợ tính năng tương tự SD-WAN của Fortigate để thực hiện load balancing internet thông qua việc cấu hình Multi-WAN. Cụ thể, OPNsense cung cấp các công cụ để quản lý và cân bằng tải giữa nhiều đường truyền internet.
Các tính năng chính bao gồm:
- Load Balancing
OPNsense hỗ trợ chia tải giữa nhiều kết nối WAN dựa trên các thuật toán như:- Round Robin: Phân phối lưu lượng mạng đồng đều giữa các WAN.
- Failover: Chuyển đổi tự động sang đường truyền dự phòng khi một WAN bị mất kết nối.
- Policy-based Routing: Định tuyến lưu lượng dựa trên các quy tắc cụ thể, như địa chỉ nguồn, đích, hoặc loại ứng dụng.
- Failover Detection
OPNsense sử dụng Gateway Monitoring để kiểm tra tình trạng của từng kết nối WAN. Nếu một cổng bị mất kết nối, hệ thống sẽ tự động chuyển lưu lượng sang các cổng còn lại. - Traffic Shaping (QoS)
Có thể cấu hình để ưu tiên băng thông cho các dịch vụ hoặc ứng dụng quan trọng, giúp tối ưu hóa trải nghiệm người dùng. - Dynamic DNS
Hỗ trợ Dynamic DNS khi sử dụng nhiều đường WAN, đảm bảo việc truy cập từ bên ngoài vẫn ổn định dù địa chỉ IP thay đổi.
So sánh với SD-WAN của Fortigate.
- Tính năng cơ bản: OPNsense có thể cung cấp các tính năng tương tự SD-WAN của Fortigate như load balancing và failover, nhưng không mạnh mẽ bằng khi xử lý các kịch bản phức tạp hoặc cần tích hợp sâu với các dịch vụ đám mây.
- Giao diện quản lý: Fortigate cung cấp giao diện SD-WAN đơn giản và tự động hóa tốt hơn, trong khi OPNsense yêu cầu thiết lập thủ công nhiều hơn.
- Khả năng mở rộng: SD-WAN của Fortigate thường tích hợp với các giải pháp bảo mật nâng cao và dễ dàng mở rộng cho môi trường doanh nghiệp lớn, trong khi OPNsense phù hợp với SMB hoặc người dùng cá nhân.
2. Lab.
Tham khảo sơ đồ.
Hãy tạo ra Gateway với thông tin phù hợp và bạn có thể tham khảo setting như của mình cũng được.
Hình chụp dưới đây là Gateway của Wan 1.
Hình chụp dưới đây là Gateway của Wan 2.
Kết quả khi bạn có 2 Gateway đang ở trạng thai UP.
Tiếp theo mình sẽ tạo 1 Group để gộp 2 Gateway này lại.
Đây là phần chính trong bài này nên mình sẽ nói sơ qua các chức năng của các thành phần trong tùy chọn này nhé.
- Tier trong Gateway Priority:
- Tier trong cài đặt Gateway Priority biểu thị mức độ ưu tiên của các gateway. Các Tier được sử dụng để xác định cách OPNsense xử lý lưu lượng qua các gateway trong nhóm.
- Các gateway ở cùng một Tier sẽ được sử dụng Load Balancing. Nghĩa là lưu lượng sẽ được phân phối đều qua tất cả các gateway trong cùng một cấp.
- Nếu tất cả các gateway trong một Tier bị lỗi hoặc không khả dụng, OPNsense sẽ chuyển sang các gateway thuộc Tier tiếp theo để đảm bảo kết nối (Failover).
Ví dụ từ hình:
INTERNET_GW_GW2
vàINTERNET_GW_GW1
đều được đặt ở Tier 1.- Điều này có nghĩa là OPNsense sẽ sử dụng cả hai gateway để cân bằng tải.
- Nếu một trong hai gateway gặp lỗi (mất kết nối), OPNsense vẫn sẽ sử dụng gateway còn lại.
Trigger Level:
- Trigger Level (mức kích hoạt) xác định khi nào gateway được coi là không khả dụng:
- Packet Loss: Gateway sẽ được đánh dấu là lỗi nếu tỷ lệ mất gói đạt ngưỡng xác định.
- Các tùy chọn khác có thể bao gồm High Latency hoặc Both (kết hợp cả mất gói và độ trễ cao).
Trong cấu hình trên, mức Packet Loss được chọn, có nghĩa là gateway sẽ chỉ bị coi là lỗi nếu xảy ra tình trạng mất gói đáng kể.
Các tùy chọn của Trigger Level trong OPNsense:
- Member Down
- Gateway được coi là không khả dụng (offline) nếu thành viên (member) bị đánh dấu là Down.
- Tùy chọn này thường kiểm tra kết nối trực tiếp (ví dụ: ping hoặc trạng thái giao diện mạng) để xác định trạng thái của gateway.
- Dùng trong các trường hợp đơn giản, khi chỉ cần kiểm tra trạng thái trực tuyến (online/offline) của gateway.
- Packet Loss
- Gateway sẽ được coi là lỗi nếu xảy ra mất gói đáng kể (packet loss) trên kết nối.
- Tùy chọn này hữu ích trong trường hợp kết nối vẫn hoạt động nhưng chất lượng đường truyền kém (ví dụ: gói tin bị mất do lỗi mạng hoặc nghẽn băng thông).
- Phù hợp với các ứng dụng yêu cầu độ tin cậy cao, nơi mất gói có thể ảnh hưởng nghiêm trọng đến trải nghiệm người dùng.
- High Latency
- Gateway được coi là lỗi nếu độ trễ mạng (latency) vượt quá ngưỡng cho phép.
- Tùy chọn này phù hợp với các mạng cần đảm bảo tốc độ phản hồi nhanh, đặc biệt trong các ứng dụng nhạy cảm với độ trễ (như VoIP hoặc video call).
- Lý tưởng cho các ứng dụng yêu cầu độ trễ thấp, như game trực tuyến hoặc hội nghị truyền hình.
- Packet Loss or High Latency
- Gateway sẽ bị đánh dấu là lỗi nếu xảy ra mất gói hoặc độ trễ cao.
- Đây là tùy chọn kết hợp, đảm bảo loại bỏ gateway có bất kỳ vấn đề nào về chất lượng kết nối, như mất gói hoặc độ trễ cao.
- Dùng khi bạn muốn giám sát cả hai yếu tố để đảm bảo kết nối luôn đạt chất lượng tốt nhất.
Các tùy chọn trong Pool Options
của OPNsense:
Default
- Hệ thống sẽ sử dụng cấu hình mặc định của nhóm gateway.
- Điều này có nghĩa là cách phân phối tải hoặc sử dụng gateway sẽ tuân theo các thiết lập cài đặt sẵn của OPNsense.
- Phù hợp nếu bạn không cần kiểm soát chi tiết cách phân phối tải giữa các gateway.
Round Robin
- Cách thức phân phối lưu lượng theo cơ chế luân phiên:
- Lưu lượng được phân phối đồng đều giữa các gateway trong cùng một Tier.
- Ví dụ: Nếu có 2 gateway ở Tier 1, hệ thống sẽ lần lượt gửi yêu cầu đến mỗi gateway, không phụ thuộc vào nguồn IP hay kết nối trước đó.
- Phù hợp cho mục tiêu cân bằng tải đơn giản mà không quan tâm đến việc duy trì phiên kết nối (session persistence).
Round Robin with Sticky Address
- Tương tự như Round Robin, nhưng có thêm tính năng Sticky Address:
- Khi một nguồn IP đã được kết nối thông qua một gateway, nó sẽ tiếp tục sử dụng gateway đó cho đến khi phiên kết thúc.
- Điều này đảm bảo các ứng dụng yêu cầu duy trì kết nối ổn định (session persistence) không bị gián đoạn khi lưu lượng được phân phối qua các gateway khác nhau.
- Phù hợp với các ứng dụng như ngân hàng, thương mại điện tử, hoặc các hệ thống yêu cầu duy trì trạng thái của người dùng.
Khi nào nên sử dụng các tùy chọn này?
- Default: Sử dụng nếu không cần kiểm soát chi tiết, hoặc muốn giữ nguyên cấu hình mặc định của OPNsense.
- Round Robin: Phù hợp để tối ưu hóa sử dụng băng thông của các gateway, khi không có yêu cầu đặc biệt về duy trì kết nối.
- Round Robin with Sticky Address: Sử dụng trong trường hợp cần cân bằng tải nhưng vẫn phải đảm bảo duy trì phiên kết nối ổn định cho các ứng dụng.
Sau khi tạo xong bạn sẽ có 1 Group như hình dưới.
Mình vào Group Firewall -> Rules -> vtnet1_vlan1649 (đây là interface thuộc mạng LAN) và tạo 1 rule mới.
Hãy tạo 1 rule mà bạn mong muốn nhưng ở phần Gateway bạn chọn Group Gateway mà bạn đã tạo ở trên.
Sau khi Apply xong chúng ta có như hình dưới.
3. Kiểm tra.
Check gateway Server 10.10.99.250 bạn thấy gateway đang trỏ về 10.10.99.101.
shell> route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.10.99.101 0.0.0.0 UG 0 0 0 ens18
10.10.99.0 0.0.0.0 255.255.255.0 U 0 0 0 ens18
Kiểm tra IP WAN bạn thấy IP Wan hiện tại là 125.253.125.93 của Line 2 thuộc vlanid 82.
shell> curl ifconfig.co
125.253.125.93
Đây là kết quả của bảng tracert.
shell> traceroute 1.1.1.1
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
1 _gateway (10.10.99.101) 0.201 ms 0.165 ms 0.131 ms
2 125.253.125.65 (125.253.125.65) 13.847 ms 13.823 ms 14.161 ms
3 10.0.2.1 (10.0.2.1) 0.945 ms 0.923 ms 0.979 ms
4 10.0.0.1 (10.0.0.1) 0.950 ms 0.920 ms 0.898 ms
5 static.cmcti.vn (203.205.25.61) 1.077 ms 1.058 ms 1.073 ms
6 static.cmcti.vn (203.205.56.160) 63.256 ms static.cmcti.vn (183.91.12.156) 34.841 ms 34.806 ms
7 98.98.50.194 (98.98.50.194) 38.919 ms 34.856 ms 34.922 ms
8 45.43.32.97 (45.43.32.97) 35.129 ms 35.105 ms 67.706 ms
9 98.98.231.40 (98.98.231.40) 30.607 ms 30.585 ms 63.072 ms
10 23.91.111.0 (23.91.111.0) 67.625 ms 67.607 ms 23.91.110.254 (23.91.110.254) 38.825 ms
11 23.91.110.87 (23.91.110.87) 67.784 ms 23.91.110.91 (23.91.110.91) 39.770 ms 39.832 ms
12 103.22.203.64 (103.22.203.64) 32.873 ms 32.846 ms 31.587 ms
13 103.22.203.227 (103.22.203.227) 70.170 ms 103.22.203.73 (103.22.203.73) 37.988 ms 103.22.203.75 (103.22.203.75) 68.857 ms
14 one.one.one.one (1.1.1.1) 67.973 ms 67.861 ms 35.287 ms
Giờ hãy down Wan 2.
Giờ vào Server 10.10.99.250 bạn thấy IP WAN đã thay đổi.
shell> curl ifconfig.co
125.253.124.247
Kết quả của bạn tracert.
shell> traceroute 1.1.1.1
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
1 _gateway (10.10.99.101) 0.181 ms 0.151 ms 0.122 ms
2 125.253.124.193 (125.253.124.193) 4.457 ms 4.435 ms 4.442 ms
3 10.0.2.1 (10.0.2.1) 0.445 ms 0.583 ms 0.471 ms
4 10.0.0.1 (10.0.0.1) 0.660 ms 0.685 ms 0.720 ms
5 static.cmcti.vn (203.205.25.61) 0.700 ms 0.778 ms 0.766 ms
6 static.cmcti.vn (183.91.12.156) 34.762 ms static.cmcti.vn (203.205.56.160) 67.715 ms 67.687 ms
7 98.98.50.194 (98.98.50.194) 61.270 ms 34.905 ms 34.881 ms
8 45.43.32.97 (45.43.32.97) 39.188 ms 34.841 ms 34.822 ms
9 98.98.231.40 (98.98.231.40) 34.804 ms 34.788 ms 67.283 ms
10 23.91.111.0 (23.91.111.0) 34.805 ms 39.014 ms 34.663 ms
11 23.91.110.87 (23.91.110.87) 67.606 ms 67.103 ms 67.794 ms
12 103.22.203.62 (103.22.203.62) 37.679 ms 103.22.203.64 (103.22.203.64) 68.410 ms 68.312 ms
13 103.22.203.79 (103.22.203.79) 35.454 ms 103.22.203.77 (103.22.203.77) 71.665 ms 103.22.203.227 (103.22.203.227) 64.253 ms
14 one.one.one.one (1.1.1.1) 68.009 ms 67.987 ms 68.045 ms