Loading...

Cấu hình cân bằng tải và Failover 2 đường WAN với Mikrotik PCC, Dst-nat, Harpin Nat!

1. Tổng quan về cân bằng tải PCC (Per Connection Classifier)

PCC là phương pháp cân bằng tải mạnh mẽ nhất trên MikroTik, cho phép chia nhỏ lưu lượng đi ra nhiều đường WAN dựa trên các trường dữ liệu như địa chỉ IP hoặc Port.

Ưu điểm vượt trội của PCC là khả năng tạo ra các "Sticky Connections". Điều này giúp người dùng không bị văng khỏi các ứng dụng yêu cầu tính liên tục như Ngân hàng, Game online hay Chứng khoán khi Router thực hiện chia tải.


2. Sơ đồ mô hình triển khai (Topology)

                   +----------+ WAN 1 (ISP 1) - ether1
                   |          |--------- Gateway: 192.168.1.1
                   | MikroTik |
                   |  Router  |--------- Gateway: 192.168.2.1
                   |          | WAN 2 (ISP 2) - ether2
                   +----------+
                        |
                 Mạng LAN (Bridge)
                   192.168.88.0/24
             /           |           \
      [Client]      [Web Server]     [PC]
    192.168.88.5   192.168.88.10   192.168.88.20

3. Các bước cấu hình chi tiết theo tài liệu chính hãng

3.1 Cấu hình IP Address

/ip address
add address=192.168.1.2/24 interface=ether1 network=192.168.1.0
add address=192.168.2.2/24 interface=ether2 network=192.168.2.0
add address=192.168.88.1/24 interface=bridge-lan network=192.168.88.0

3.2 Cấu hình Mangle (Đánh dấu gói tin)

Chúng ta sử dụng điều kiện dst-address-type=!local để đảm bảo các truy cập nội bộ không bị PCC đẩy nhầm ra ngoài Internet.

/ip firewall mangle
# 1. Chấp nhận lưu lượng nội bộ (LAN-to-LAN)
add chain=prerouting dst-address=192.168.1.0/24 action=accept in-interface=bridge-lan
add chain=prerouting dst-address=192.168.2.0/24 action=accept in-interface=bridge-lan

# 2. Đánh dấu kết nối từ bên ngoài vào Router (Chuỗi Input)
add chain=input in-interface=ether1 action=mark-connection new-connection-mark=WAN1_conn
add chain=input in-interface=ether2 action=mark-connection new-connection-mark=WAN2_conn

# 3. Phân chia luồng dữ liệu PCC (Loại trừ IP Local)
add chain=prerouting in-interface=bridge-lan connection-mark=no-mark dst-address-type=!local \
    per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=WAN1_conn
add chain=prerouting in-interface=bridge-lan connection-mark=no-mark dst-address-type=!local \
    per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=WAN2_conn

# 4. Đánh dấu định tuyến (Routing Mark)
add chain=prerouting connection-mark=WAN1_conn in-interface=bridge-lan action=mark-routing new-routing-mark=to_WAN1
add chain=prerouting connection-mark=WAN2_conn in-interface=bridge-lan action=mark-routing new-routing-mark=to_WAN2
add chain=output connection-mark=WAN1_conn action=mark-routing new-routing-mark=to_WAN1
add chain=output connection-mark=WAN2_conn action=mark-routing new-routing-mark=to_WAN2

3.3 Cấu hình NAT Overload (Masquerade)

Đây là bước bắt buộc để các thiết bị trong mạng LAN có thể truy cập Internet qua địa chỉ IP của các đường WAN.

/ip firewall nat
# NAT Overload cho từng đường WAN riêng biệt
add chain=srcnat out-interface=ether1 action=masquerade comment="NAT_WAN1"
add chain=srcnat out-interface=ether2 action=masquerade comment="NAT_WAN2"

3.4 Cấu hình định tuyến (IP Routes) và Failover

/ip route
# Tuyến đường mặc định cho từng nhóm định tuyến
add dst-address=0.0.0.0/0 gateway=192.168.1.1 routing-mark=to_WAN1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.2.1 routing-mark=to_WAN2 check-gateway=ping

# Tuyến đường dự phòng (Failover)
add dst-address=0.0.0.0/0 gateway=192.168.1.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.2.1 distance=2 check-gateway=ping

3.5 Cấu hình Port Forwarding (DST-NAT)

Mở cổng để người dùng từ Internet có thể truy cập vào Server qua IP Public của 2 đường WAN.

/ip firewall nat
add chain=dstnat dst-address=192.168.1.2 protocol=tcp dst-port=80 action=dst-nat to-addresses=192.168.88.10
add chain=dstnat dst-address=192.168.2.2 protocol=tcp dst-port=80 action=dst-nat to-addresses=192.168.88.10

3.6 Cấu hình Hairpin NAT (SRC-NAT)

Đây là bước quan trọng: Quy tắc này sẽ "ép" các gói tin từ mạng nội bộ đi tới Server thông qua IP Public phải quay ngược lại Router để xử lý địa chỉ nguồn.

/ip firewall nat
# Hairpin NAT: Áp dụng khi nguồn và đích cùng nằm trong lớp mạng LAN
add chain=srcnat src-address=192.168.88.0/24 dst-address=192.168.88.10 \
    protocol=tcp dst-port=80 action=masquerade comment="Hairpin_NAT"

Tại sao bạn cần Hairpin NAT (NAT on a stick)?

Nếu không có Hairpin NAT, gói tin từ máy khách trong LAN gửi tới IP Public sẽ bị Router chuyển hướng thẳng tới Server, nhưng Server lại phản hồi trực tiếp cho máy khách qua địa chỉ IP nội bộ. Máy khách sẽ từ chối gói tin này vì nó đang đợi phản hồi từ IP Public.

Giải pháp: Hairpin NAT sẽ "ép" gói tin phản hồi phải quay ngược lại Router để Router thay đổi lại địa chỉ nguồn, giúp phiên làm việc thông suốt ngay cả khi bạn đang đứng trong mạng nội bộ.


4. Những lưu ý kỹ thuật quan trọng

  • Tại sao cần !local? Giúp Router bỏ qua thuật toán PCC khi bạn truy cập vào Winbox hoặc các dịch vụ nội bộ, tránh việc gói tin nội bộ bị đẩy nhầm ra cổng WAN gây mất kết nối.
  • NAT Masquerade: Việc tách riêng NAT cho từng interface đảm bảo gói tin đi ra đường nào sẽ được "đóng dấu" IP của đường đó, giúp phiên làm việc không bị ngắt quãng.
  • MSS Clamping: Khuyên dùng để khắc phục lỗi không truy cập được một số trang web lớn do sai số MTU.
    /ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn action=change-mss new-mss=clamp-to-pmtu
  • Tỷ lệ băng thông: Tùy chỉnh tham số PCC (3/0, 3/1...) nếu hai đường WAN có tốc độ không bằng nhau.


5. Giải mã kỹ thuật: Tại sao cần chuỗi Input trong Mangle? (mục 3.2 #2)

Trong cấu hình trên, bước đánh dấu chain=input thường gây thắc mắc. Dưới đây là phân tích từ chuyên gia:

  • Trường hợp cần thiết: Nếu bạn thực hiện Public máy chủ (Web, Camera, VPN) ra ngoài Internet hoặc muốn truy cập Winbox/WebFig từ xa qua IP Public của cả 2 WAN. Nếu không có chuỗi này, phản hồi từ Router có thể đi sai cổng WAN, dẫn đến mất kết nối.
  • Trường hợp có thể bỏ qua: Nếu hệ thống chỉ cần mạng LAN đi ra Internet (Outbound) và bạn không mở bất kỳ dịch vụ nào hướng vào bên trong.

Lời khuyên: Nên giữ lại để đảm bảo tính sẵn sàng cao và quản trị Router ổn định trên mọi đường mạng.


6. Kết luận

Cấu hình PCC 2 đường WAN hoàn chỉnh đòi hỏi sự kết hợp chính xác giữa Mangle, NAT và Routing. Việc tuân thủ tài liệu chính hãng giúp hệ thống vận hành trơn tru, cộng băng thông hiệu quả và tự động chuyển dự phòng ngay khi có sự cố xảy ra.