Tại sao hệ thống của bạn cần Multi-WAN Failover?
Hãy thử tính toán thiệt hại nếu server của bạn mất kết nối trong 30 phút. Đối với một sàn TMĐT quy mô trung bình, con số này có thể tương đương hàng chục triệu đồng doanh thu bị mất trắng. Việc phụ thuộc vào một nhà mạng (ISP) duy nhất là một rủi ro cực lớn.
Linux mặc định không đủ thông minh để tự chuyển hướng khi đường truyền chính gặp sự cố. Nếu gateway chính bị nghẽn hoặc đứt cáp, hệ thống sẽ đứng im chờ đợi. Bằng cách kết hợp ip route và Keepalived, chúng ta sẽ tạo ra một cơ chế tự động hóa. Khi WAN 1 gặp sự cố, lưu lượng sẽ tự động “nhảy” sang WAN 2 chỉ trong vài giây.
Chuẩn bị môi trường
Để triển khai thực tế, bạn cần một server Linux (Ubuntu 22.04 hoặc Debian 12 là lựa chọn tốt nhất). Thiết bị cần trang bị ít nhất 3 card mạng: 2 cổng kết nối ra ISP (WAN1, WAN2) và 1 cổng cho mạng nội bộ (LAN).
Cài đặt các công cụ điều phối cần thiết:
sudo apt update
sudo apt install keepalived iproute2 curl -y
Cấu hình chi tiết hệ thống
1. Thiết lập bảng định tuyến riêng biệt
Mặc định Linux chỉ sử dụng một bảng định tuyến chính (Main table). Để chạy Multi-WAN, ta phải tách biệt luồng dữ liệu của từng nhà mạng. Hãy khai báo thêm hai “làn đường” trong file /etc/iproute2/rt_tables:
100 isp1
101 isp2
Mẹo nhỏ: Khi cần tính toán dải IP (Subnet) cho các interface, bạn nên dùng IP Subnet Calculator. Công cụ này giúp tính nhanh Network range và Broadcast, tránh sai sót thủ công gây xung đột IP.
2. Kịch bản kiểm tra sức khỏe đường truyền (Health Check)
Đừng chỉ tin vào trạng thái vật lý của card mạng. Đôi khi đèn vẫn xanh nhưng bạn không thể truy cập Internet do nhà mạng gặp sự cố định tuyến quốc tế. Chúng ta cần một script để kiểm tra thực tế bằng cách ping tới DNS Google.
Tạo file /etc/keepalived/check_wan.sh:
#!/bin/bash
# Kiểm tra WAN 1 bằng cách ping qua interface eth0
if ping -I eth0 -c 1 -W 2 8.8.8.8 > /dev/null; then
exit 0 # Mạng ổn định
else
exit 1 # Mạng gặp sự cố
fi
Cấp quyền thực thi để Keepalived có thể gọi script này:
sudo chmod +x /etc/keepalived/check_wan.sh
3. Cấu hình Keepalived điều phối Gateway
Thông thường Keepalived dùng cho Cluster Server, nhưng ở đây ta dùng nó để quản lý trạng thái Gateway. Chỉnh sửa file /etc/keepalived/keepalived.conf:
vrrp_script check_wan_status {
script "/etc/keepalived/check_wan.sh"
interval 2 # Kiểm tra mỗi 2 giây
fall 2 # Chết 2 lần liên tiếp mới xác nhận lỗi
rise 2 # Sống lại 2 lần mới xác nhận OK
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
track_script {
check_wan_status
}
# Kích hoạt khi WAN 1 hoạt động bình thường
notify_master "/sbin/ip route add default via [IP_GW_1] dev eth0 metric 10"
# Kích hoạt khi WAN 1 gặp sự cố
notify_fault "/sbin/ip route del default via [IP_GW_1] dev eth0 metric 10"
}
Lưu ý: Thay [IP_GW_1] bằng địa chỉ Gateway thực tế do nhà mạng cung cấp.
Cơ chế ưu tiên Metric (Failover Logic)
Chúng ta sử dụng chỉ số Metric để xếp hạng độ ưu tiên. Trong bảng định tuyến chính, hãy thiết lập cả hai đường truyền nhưng với mức ưu tiên khác nhau:
# WAN 1: Ưu tiên cao (Metric thấp)
sudo ip route add default via [IP_GW_1] dev eth0 metric 10
# WAN 2: Dự phòng (Metric cao)
sudo ip route add default via [IP_GW_2] dev eth1 metric 20
Khi WAN 1 chết, Keepalived thực hiện lệnh notify_fault để xóa route Metric 10. Lúc này, Linux tự động chuyển toàn bộ traffic sang route Metric 20 của WAN 2. Khi WAN 1 hồi phục, Keepalived sẽ chèn lại route cũ, đưa hệ thống về trạng thái ban đầu.
Kiểm tra và Giám sát
Khởi động dịch vụ để áp dụng cấu hình:
sudo systemctl restart keepalived
Để kiểm tra, bạn hãy thử rút dây mạng của WAN 1 hoặc tắt interface bằng lệnh sudo ip link set eth0 down. Sau đó, theo dõi log hệ thống theo thời gian thực:
tail -f /var/log/syslog | grep Keepalived
Nếu thấy dòng “Entering FAULT state”, hệ thống đã kích hoạt chế độ dự phòng thành công. Thời gian chuyển đổi thường chỉ mất từ 3 đến 5 giây, hầu như không gây gián đoạn cho người dùng cuối.
Cách tiếp cận này mang lại sự chủ động hoàn toàn. Bạn có thể tùy chỉnh tham số interval để cân bằng giữa tốc độ phản ứng và sự ổn định, tránh tình trạng mạng chập chờn (flap) làm hệ thống nhảy liên tục giữa hai nhà mạng.

