Loading...

Cấu hình cân bằng tải 2 line Internet trên Router Cisco

Bài này hướng dẫn cấu hình cân bằng tải (load balancing) và dự phòng (failover) cho 2 line Internet FTTH của 2 nhà mạng (ISP) trên router Cisco. Hai line quay PPPoE, cùng chia tải cho người dùng trong LAN, tự động loại line bị mất kết nối bằng IP SLA + track, và có thể public dịch vụ web ra ngoài qua cả 2 WAN.

⚡ Tóm tắt nhanh

  • Mô hình: 1 router Cisco, 3 cổng: Gi0/0 (LAN), Gi0/1 (ISP1), Gi0/2 (ISP2).
  • Kết nối WAN: PPPoE qua Dialer 1 và Dialer 2.
  • Chia tải: 2 default route cùng metric (ECMP). Router chia tải theo từng đích đến (per-destination), không chia theo từng gói tin.
  • NAT: dùng route-map để mỗi gói tin ra đường nào thì được NAT bằng IP của đường đó.
  • Phát hiện đứt line: IP SLA ping ra Internet, track tự gỡ default route khi line mất kết nối.
  • Điểm hay sai nhất: thiếu host route cố định cho địa chỉ IP SLA, làm probe đi nhầm line và báo down giả (xem bước 4).

Chọn mô hình nào? Bài này dùng cho nhu cầu chia tải đều và dự phòng 2 line cùng loại. Nếu bạn muốn chỉ định ứng dụng đi đường nào (ví dụ Zoom, Teams đi Leased Line, YouTube, Facebook đi FTTH), xem bài Multi-WAN theo ứng dụng với NBAR2 + PBR + IP SLA. Hai mô hình này là hai cách thiết kế khác nhau, không cấu hình chung trên cùng một luồng traffic.

1. Chuẩn bị

  • Router Cisco có 3 interface: GigabitEthernet0/0 cho LAN, GigabitEthernet0/1 cho ISP1, GigabitEthernet0/2 cho ISP2.
  • Username và password PPPoE của 2 nhà mạng.
  • Địa chỉ IP tĩnh từ 2 nhà mạng (nếu cần public dịch vụ ra ngoài).

 

2. Các bước cấu hình

Bước 1: Cấu hình LAN

CISCO(config)# interface GigabitEthernet0/0
CISCO(config-if)# description LAN Interface
CISCO(config-if)# ip address 192.168.0.1 255.255.255.0
CISCO(config-if)# ip nat inside
CISCO(config-if)# ip virtual-reassembly in
CISCO(config-if)# ip tcp adjust-mss 1452
CISCO(config-if)# no shutdown

ip tcp adjust-mss 1452 bù cho MTU 1492 của PPPoE (1492 trừ 40 byte header IP/TCP), tránh lỗi một số website mở chậm hoặc không vào được.

Bước 2: Cấu hình quay PPPoE cho 2 ISP

Cổng vật lý:

CISCO(config)# interface GigabitEthernet0/1
CISCO(config-if)# description Interface to ISP1
CISCO(config-if)# no ip address
CISCO(config-if)# pppoe enable group global
CISCO(config-if)# pppoe-client dial-pool-number 1
CISCO(config-if)# no shutdown

CISCO(config)# interface GigabitEthernet0/2
CISCO(config-if)# description Interface to ISP2
CISCO(config-if)# no ip address
CISCO(config-if)# pppoe enable group global
CISCO(config-if)# pppoe-client dial-pool-number 2
CISCO(config-if)# no shutdown

Interface Dialer:

CISCO(config)# interface Dialer1
CISCO(config-if)# description Dialer interface to ISP1
CISCO(config-if)# ip mtu 1492
CISCO(config-if)# encapsulation ppp
CISCO(config-if)# dialer pool 1
CISCO(config-if)# dialer-group 1
CISCO(config-if)# ip address negotiated
CISCO(config-if)# ip nat outside
CISCO(config-if)# ip virtual-reassembly in
CISCO(config-if)# ppp authentication pap callin
CISCO(config-if)# ppp pap sent-username Username_ISP1 password 0 Password_ISP1

CISCO(config)# interface Dialer2
CISCO(config-if)# description Dialer interface to ISP2
CISCO(config-if)# ip mtu 1492
CISCO(config-if)# encapsulation ppp
CISCO(config-if)# dialer pool 2
CISCO(config-if)# dialer-group 2
CISCO(config-if)# ip address negotiated
CISCO(config-if)# ip nat outside
CISCO(config-if)# ip virtual-reassembly in
CISCO(config-if)# ppp authentication pap callin
CISCO(config-if)# ppp pap sent-username Username_ISP2 password 0 Password_ISP2

Nhà mạng nào dùng CHAP thì thay 2 dòng xác thực bằng ppp authentication chap callin và ppp chap hostname <user> / ppp chap password 0 <pass>. Hỏi ISP để biết đúng phương thức.

Bước 3: ACL và NAT bằng route-map

Cho phép toàn bộ máy trong LAN ra Internet:

CISCO(config)# access-list 100 permit ip 192.168.0.0 0.0.0.255 any

Tạo route-map để gói tin ra đường nào thì NAT bằng IP đúng đường đó:

CISCO(config)# route-map isp1 permit 10
CISCO(config-route-map)# match ip address 100
CISCO(config-route-map)# match interface Dialer1

CISCO(config)# route-map isp2 permit 10
CISCO(config-route-map)# match ip address 100
CISCO(config-route-map)# match interface Dialer2

CISCO(config)# ip nat inside source route-map isp1 interface Dialer1 overload
CISCO(config)# ip nat inside source route-map isp2 interface Dialer2 overload

Đây là phần quan trọng nhất của mô hình 2 WAN: nếu chỉ dùng một lệnh NAT chung, gói tin ra ISP2 có thể mang IP nguồn của ISP1 và bị ISP chặn.

Bước 4: IP SLA và Track để phát hiện line bị mất kết nối

Trạng thái up/up của Dialer chỉ cho biết phiên PPPoE còn sống, không đảm bảo Internet còn thông. Vì vậy ta dùng IP SLA ping ra Internet qua từng line:

! Probe qua ISP1: ping 8.8.8.8 (Google DNS), mỗi 5 giây
CISCO(config)# ip sla 100
CISCO(config-ip-sla)# icmp-echo 8.8.8.8 source-interface Dialer1
CISCO(config-ip-sla-echo)# timeout 1000
CISCO(config-ip-sla-echo)# frequency 5
CISCO(config)# ip sla schedule 100 life forever start-time now

CISCO(config)# track 100 ip sla 100 reachability
CISCO(config-track)# delay down 15 up 15

! Probe qua ISP2: ping 1.1.1.1 (Cloudflare DNS), mỗi 5 giây
CISCO(config)# ip sla 200
CISCO(config-ip-sla)# icmp-echo 1.1.1.1 source-interface Dialer2
CISCO(config-ip-sla-echo)# timeout 1000
CISCO(config-ip-sla-echo)# frequency 5
CISCO(config)# ip sla schedule 200 life forever start-time now

CISCO(config)# track 200 ip sla 200 reachability
CISCO(config-track)# delay down 15 up 15

Ý nghĩa: mỗi 5 giây ping 1 lần, quá 1 giây không có phản hồi thì tính là mất. delay down 15 up 15 nghĩa là line phải mất liên tục 15 giây mới bị gỡ, và phải ổn định 15 giây mới được đưa trở lại, tránh hiện tượng chập chờn (flapping). Nên chọn 2 địa chỉ đích khác nhau cho 2 line để một sự cố ở đích không làm cả hai cùng báo down.

⚠️ Bắt buộc: thêm host route cố định cho 2 địa chỉ probe. Tham số source-interface chỉ chọn IP nguồn, không ép gói tin đi ra đúng line. Khi có 2 default route cùng metric, probe của ISP1 có thể bị chia ra đi qua ISP2 và ngược lại, dẫn đến báo down giả hoặc line đứt mà vẫn báo up. Cách xử lý là gắn mỗi địa chỉ probe vào đúng một line bằng route /32 không gắn track:

CISCO(config)# ip route 8.8.8.8 255.255.255.255 Dialer1
CISCO(config)# ip route 1.1.1.1 255.255.255.255 Dialer2

Route /32 này không được gắn track, để khi default route của line bị gỡ thì probe vẫn đi ra đúng line đó và router biết khi nào line hoạt động trở lại.

Bước 5: Default route theo track

Cân bằng tải (cả 2 line cùng chạy, mất line nào thì tự bỏ line đó):

CISCO(config)# ip route 0.0.0.0 0.0.0.0 Dialer1 track 100
CISCO(config)# ip route 0.0.0.0 0.0.0.0 Dialer2 track 200

Chỉ dự phòng (ISP1 chạy chính, ISP2 chỉ dùng khi ISP1 mất), đặt AD cao hơn cho đường dự phòng:

CISCO(config)# ip route 0.0.0.0 0.0.0.0 Dialer1 track 100
CISCO(config)# ip route 0.0.0.0 0.0.0.0 Dialer2 10 track 200

Lưu ý về cách chia tải: ECMP trên router Cisco chia theo từng đích đến. Một kết nối hay một lượt tải file lớn vẫn chỉ đi trên một line, nên băng thông 2 line không cộng gộp cho một luồng đơn lẻ. Mô hình này hiệu quả khi có nhiều người dùng và nhiều kết nối song song. Nếu hai line chênh lệch băng thông nhiều hoặc cần chia theo chính sách (ví dụ VLAN kế toán đi ISP1, VLAN khách đi ISP2), nên dùng Policy-Based Routing (xem Multi-WAN theo ứng dụng với NBAR2 + PBR + IP SLA) hoặc thiết bị chuyên dụng như Peplink.

Bước 6: Public dịch vụ web ra Internet qua 2 WAN

Tạo route-map xác định gói tin vào từ line nào:

CISCO(config)# route-map isp1static permit 10
CISCO(config-route-map)# match interface Dialer1

CISCO(config)# route-map isp2static permit 10
CISCO(config-route-map)# match interface Dialer2

NAT tĩnh cổng 80 của web server (192.168.0.250) ra 2 địa chỉ IP public của 2 ISP:

CISCO(config)# ip nat inside source static tcp 192.168.0.250 80 203.0.113.10 80 route-map isp1static
CISCO(config)# ip nat inside source static tcp 192.168.0.250 80 198.51.100.20 80 route-map isp2static

Thay 203.0.113.10 và 198.51.100.20 bằng IP public tĩnh thật mà mỗi ISP cấp, và 2 địa chỉ này phải là IP mà Dialer tương ứng nhận được. Dùng route-map như trên để phản hồi của server luôn đi ngược ra đúng line mà yêu cầu đã đi vào.

🔒 Bảo mật: mở thẳng cổng 80 từ Internet vào server nội bộ. Nên giới hạn bằng ACL hoặc zone-based firewall trên cổng WAN, nên dùng HTTPS (443) thay vì HTTP, và đặt server trong VLAN riêng (DMZ), không để chung VLAN với máy người dùng.

3. Kiểm tra cấu hình

Mục đíchLệnh
Phiên PPPoE và địa chỉ IP nhận được show ip interface brief, show pppoe session
Kết quả IP SLA show ip sla statistics
Trạng thái track (Up/Down) show track
Bảng định tuyến (thấy 2 default route) show ip route 0.0.0.0
Bảng NAT show ip nat translations
Xem một đích đi ra line nào show ip cef 8.8.4.4 internal

Dấu hiệu cấu hình đúng: show track cho cả 2 track ở Up, show ip route có 2 default route qua Dialer1 và Dialer2, và show ip nat translations có entry NAT ở cả 2 IP của 2 line.

Thử failover: rút cáp (hoặc shutdown) cổng ISP1, sau khoảng 15 giây track 100 chuyển Down, default route qua Dialer1 biến mất và toàn bộ lưu lượng đi qua ISP2. Cắm lại cáp, sau khoảng 15 giây line quay trở lại.

4. Lỗi thường gặp

Triệu chứngNguyên nhân thường gặpCách xử lý
Track báo Down dù line vẫn vào mạng được Probe bị chia ra line còn lại, hoặc thiếu host route Thêm route /32 cho 8.8.8.8 và 1.1.1.1 như bước 4
Line đứt nhưng router vẫn gửi traffic vào Chỉ dựa vào trạng thái interface, chưa gắn track Gắn track vào default route
Một số website chậm hoặc không mở MTU/MSS chưa chỉnh cho PPPoE ip mtu 1492 trên Dialer, ip tcp adjust-mss 1452 trên LAN
Máy trong LAN ra Internet bị chập chờn NAT chung, IP nguồn không khớp line đi ra Dùng route-map NAT như bước 3
Truy cập web server từ ngoài chỉ vào được qua 1 IP Thiếu NAT tĩnh hoặc route-map cho line còn lại Kiểm tra bước 6 cho cả 2 ISP
PPPoE không lên Sai username/password hoặc sai phương thức PAP/CHAP Xác nhận với ISP, xem debug ppp authentication

5. Phương án track nhẹ hơn (tham khảo)

Nếu không cần kiểm tra ping ra Internet, có thể chỉ track trạng thái định tuyến của interface:

CISCO(config)# track 300 interface Dialer1 ip routing
CISCO(config-track)# delay down 15 up 15

Cách này đơn giản nhưng chỉ phát hiện được khi interface down, không phát hiện được trường hợp phiên PPPoE vẫn sống nhưng Internet đã mất. Vì vậy trong triển khai thực tế nên dùng IP SLA như ở bước 4.

6. Câu hỏi thường gặp (FAQ)

Cân bằng tải 2 line có làm tốc độ tải file tăng gấp đôi không? Không với một luồng đơn lẻ. Router chia tải theo đích đến nên một kết nối chỉ đi trên một line. Băng thông được tận dụng khi có nhiều người dùng và nhiều kết nối đồng thời.

Mất một line thì người dùng có bị gián đoạn không? Các kết nối đang đi qua line bị mất sẽ đứt, nhưng sau khoảng 15 giây (theo delay down) router gỡ line đó và các kết nối mới sẽ đi qua line còn lại. Người dùng chỉ cần tải lại trang.

Dùng router nào cho mô hình này? Các dòng Cisco có hỗ trợ PPPoE client, IP SLA và NAT route-map, ví dụ Router Cisco ISR4000. Cần chọn model có thông lượng NAT đủ cho tổng băng thông 2 line.

Khi nào nên dùng thiết bị chuyên dụng thay vì router? Khi cần chia tải theo tỷ lệ băng thông, gộp nhiều line cho một luồng, hoặc quản lý tập trung nhiều chi nhánh. Xem giải pháp cân bằng tải Peplink.

Xem thêm

Comments

*****

18-02-2025, 20:38

New post