binhndt
06-27-2016, 10:08 PM
Thiết bị router hotspot Mikrotik RB1100AHx2 là thiết bị router chịu tải lớn, tính năng cao cấp, giá thành hợp lư, phù hợp cho doanh nghiệp, trường học, điểm truy cập wifi công cộng, .... có yêu cầu thiết bị router mạnh mẻ, load balancing, failover trên nhiều kết nối WAN - Internet để phục vụ Internet tốc độ cao cho người dùng.
Bài hướng dẫn sau đây hướng được viết dựa trên cấu h́nh load balancing và failover trên 3 kết nối WAN, trên thiết bị router Mikrotik (http://switch-router.com/products/Thiet-bi-wifi-Mikrotik/Thiet-bi-Mikrotik-Router-HotSpot-Gateway-336/) RB1100AHx2, được chúng tôi triển khai cho 1 điểm truy cập wifi công cộng của khách hàng sử dụng sản phẩm và dịch vụ của công ty Sao Thiên Vương.
Hiện trạng của khách hàng:
- Khách hàng có 5 đường Internet tốc độ cao.
- Thiết bị router nhà mạng cung cấp, thiết bị phát sóng wifi SOHO (Small Office and Home), do đó, kết nối wifi không đảm bảo.
- Cao điểm, có thể lên đến 300 người dùng truy cập Internet đồng thời.
Yêu cầu của khách hàng:
- Load balancing và failover trên 3 đường kết nối Internet này, có thể tăng lên 5 kết nối WAN tốc độ cao nếu cần.
- Cung cấp kết nối wifi ổn định, tốc độ cao cho người dùng wifi công cộng của khách hàng.
Với hiện trạng và yêu cầu trên, chúng tôi đề xuất trang bị thiết bị wifi chuyên dụng, thay thế các thiết bị wifi SOHO mà khách hàng đang sử dụng.
Trang bị thiết bị router Mikrotik RB1100AHx2 có khả năng chịu tải lên đến 500 kết nối Internet đồng thời, 13 Gigabit Interface, có thể load balancing, failover lên đến 12 đường WAN - Internet.
Bên dưới là mô h́nh đấu nối thiết bị:
http://switch-router.com/uploads/forum/Loadbalancing/network topology.png
Tiếp theo là chi tiết cấu h́nh thiết bị router Mikrotik RB1100AHx2 load balancing và failover trên 3 kết nối WAN - Internet.
Với thiết bị router Mikrotik, chúng ta có nhiều phương án để load balancing và failover cho kết nối WAN, ở đây, chúng tôi triển khai theo phương thức gọi là PCC (Per Connection Classifier). Với phương thức này, balancing trên các kết nối WAN theo các kết nối (connection).
Đầu tiên chúng ta cần chú ư rằng, interface bridge trên router Mikrotik được thiết kế để làm cấu nối cho traffic ở Layer 2, do đó, giao tiếp bridge này là kết nối logic để vận chuyển traffic Layer 2 giữa các cổng của thiết bị router Mikrotik. Mặc định traffic này giao tiếp bridge sẽ không được xử lư bởi các rule của firewall hoạt động ở Layer 3. Để bắt buộc Layer traffic trên brigde được xử lư bởi các rule của firewall ở Layer 3, chúng ta phải tường ḿnh khai báo với lệnh sau:
/interface bridge settings
set use-ip-firewall=yes
Trong trường hợp của ta traffic trên các cổng khai báo là WAN được đóng gói với giao thức PPPoE, cũng cần tường minh cho phép đi qua các rule của firewall ở Layer 3.
/interface bridge settings
set use-ip-firewall-for-pppoe=yes
Các traffic của nội bộ mạng LAN qua router Mikrotik không cần phải xử lư bởi các rule của firewall. Do đó, chúng ta cần khai báo rule đầu tiên cho tất cả traffic của nội bộ mạng LAN bypass các rule của firewall.
/ip firewall mangle
add chain=prerouting dst-address=192.168.100.0/24 in-interface=bridge action=accept
Lệnh trên thực hiện ở chain pre-routing, do đó, traffic được xử lư trước khi mọi quyết định định tuyến gói tín xảy ra đối với các traffic đến router Mikrotik và traffic đang được forward bởi router Mikrotik. Rule trên kiểm tra mọi traffic có đích đến là mạng LAN (192.168.100.0/24) và interface tiếp nhận traffic trong trường hợp này là bridge - giao tiếp cầu nối cho traffic các cổng LAN của router Mikrotik. Action "accept" với mục đích dừng không xử lư traffic này với các rule kế tiếp sau. Để bắt traffic đi qua các rule bên dưới tiếp theo, cần khai báo trường "passthrough=yes".
Với mỗi interface WAN, các traffic từ Internet vào WAN nào cần phải đi ra WAN đó, nếu không, kết nối sẽ bị gián đoạn - treo. Đặc biệt chú ư khi cần publish các dịch vụ từ mạng LAN ra Internet như Web service, FTP, Email service... hoặc các traffic khởi tạo từ Internet vào LAN như: SSH, VPN, ....
Các traffic vào router Mikrotik sẽ qua chain input và traffic rời router Mikrotik sẽ qua chain output. Chúng ta sẽ sử dụng 2 bộ rule, một cho chain input và một cho chain output cho mỗi interface WAN mà ta muốn load balancing và failover. Trong tường hợp này, chúng ta cần load balancing và failover trên 3 kết nối WAN.
Bên dưới là các mangle rule để xác định traffic khởi tạo từ Internet vào các interface WAN và đánh dấu (new-connection-mark) các traffic này với interface WAN mà nó vào
/ip firewall mangle
add chain=input in-interface=pppoe-out1 connection-mark=no-mark action=mark-connection new-connection-mark=WAN1 passthrough=no
add chain=input in-interface=pppoe-out2 connection-mark=no-mark action=mark-connection new-connection-mark=WAN2 passthrough=no
add chain=input in-interface=pppoe-out3 connection-mark=no-mark action=mark-connection new-connection-mark=WAN3 passthrough=no
Như vậy, các kết nối khởi tạo từ Internet (new-connection) được đánh dấu với WAN1, WAN2, hoặc WAN3 tương ứng interface WAN mà traffic đi vào. Tiếp theo, chúng ta cần đảm bảo các kết nối này sẽ ra đúng interface WAN mà nó đă khởi tạo vào. Chúng ta thực hiện điều này ở chain output và dùng routing-mark để định tuyến gói tin theo đúng bảng định tuyến mà ta sẽ khai báo sau.
/ip firewall mangle
add chain=output out-interface=pppoe-out1 connection-mark=WAN1 action=mark-routing new-routing-mark=WAN1 passthrough=no
add chain=output out-interface=pppoe-out2 connection-mark=WAN2 action=mark-routing new-routing-mark=WAN2 passthrough=no
add chain=output out-interface=pppoe-out3 connection-mark=WAN3 action=mark-routing new-routing-mark=WAN3 passthrough=no
Tiếp theo, chúng ta sẽ thực hiện load balancing bằng phương thức PCC để cân bằng tải kết nối từ mạng nội bộ LAN ra 3 interface WAN mà ta có bằng các rule mangle sau:
/ip firewall mangle
add chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=bridge per-connection-classifier=both-addresses:3/0 action=mark-connection new-connection-mark=WAN1
add chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=bridge per-connection-classifier=both-addresses:3/1 action=mark-connection new-connection-mark=WAN2
add chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=bridge per-connection-classifier=both-addresses:3/2 action=mark-connection new-connection-mark=WAN3
Với các rule trên, chỉ đánh dấu (mark) các traffic được chuyển tiếp từ mạng nội bộ LAN ra Internet, các traffic từ mạng nội bộ LAN đến chính router Mikrotik sẽ không bị các rule tác động (dst-address-type=!local). Các kết nối (connection) sẽ được chia điều trên 3 kết nối WAN (load balancing) và được đánh dấu (new-connection-mark) với kết nối WAN tương ứng mà connection sẽ đi ra Internet.
Các giá trị của trường per-connection-classifier=both-addresses liên quan đến biểu thức modular trong toán học, các bạn có thể t́m hiểu thêm ở các link cuối bài này.
Chú ư, mặc định th́ passthrough=yes được bật cho các rule mangle ở trên. Tiếp theo, với các kết nối đă được dánh dấu ở trên, chúng ta cần đánh dấu routing mark kết nối được định tuyến theo đúng bảng định tuyến mà ta khai bao sau.
/ip firewall mangle
add chain=prerouting connection-mark=WAN1 in-interface=bridge action=mark-routing new-routing-mark=WAN1 passthrough=no
add chain=prerouting connection-mark=WAN2 in-interface=bridge action=mark-routing new-routing-mark=WAN2 passthrough=no
add chain=prerouting connection-mark=WAN3 in-interface=bridge action=mark-routing new-routing-mark=WAN3 passthrough=no
Vậy traffic ở đây sẽ được balancing trên 3 kết nối WAN, với mỗi kết nối xuất phát từ mạng nội bộ LAN sẽ lần lược được điều hướng đến 3 bảng định tuyến WAN1, WAN2, WAN3 được khai bao bên dưới:
/ip route
add dst-address=0.0.0.0/0 gateway=pppoe-out1 routing-mark=WAN1
add dst-address=0.0.0.0/0 gateway=pppoe-out2 routing-mark=WAN2
add dst-address=0.0.0.0/0 gateway=pppoe-out3 routing-mark=WAN3
Tiếp theo, chúng ta cần khai báo các route cho bảng định tuyến chính (main) để các traffic xuất phát từ chính router có thể định tuyến ra ngoài Internet.
/ip route
add dst-address=0.0.0.0/0 gateway=pppoe-out1 distance=1
add dst-address=0.0.0.0/0 gateway=pppoe-out2 distance=2
add dst-address=0.0.0.0/0 gateway=pppoe-out3 distance=2
Đến đây, chúng ta đă hoàn thành việc cấu h́nh load balancing và failover trên 3 kết nối WAN cho thiết bị router Mikrotik RB1100AHx2
Bài hướng dẫn sau đây hướng được viết dựa trên cấu h́nh load balancing và failover trên 3 kết nối WAN, trên thiết bị router Mikrotik (http://switch-router.com/products/Thiet-bi-wifi-Mikrotik/Thiet-bi-Mikrotik-Router-HotSpot-Gateway-336/) RB1100AHx2, được chúng tôi triển khai cho 1 điểm truy cập wifi công cộng của khách hàng sử dụng sản phẩm và dịch vụ của công ty Sao Thiên Vương.
Hiện trạng của khách hàng:
- Khách hàng có 5 đường Internet tốc độ cao.
- Thiết bị router nhà mạng cung cấp, thiết bị phát sóng wifi SOHO (Small Office and Home), do đó, kết nối wifi không đảm bảo.
- Cao điểm, có thể lên đến 300 người dùng truy cập Internet đồng thời.
Yêu cầu của khách hàng:
- Load balancing và failover trên 3 đường kết nối Internet này, có thể tăng lên 5 kết nối WAN tốc độ cao nếu cần.
- Cung cấp kết nối wifi ổn định, tốc độ cao cho người dùng wifi công cộng của khách hàng.
Với hiện trạng và yêu cầu trên, chúng tôi đề xuất trang bị thiết bị wifi chuyên dụng, thay thế các thiết bị wifi SOHO mà khách hàng đang sử dụng.
Trang bị thiết bị router Mikrotik RB1100AHx2 có khả năng chịu tải lên đến 500 kết nối Internet đồng thời, 13 Gigabit Interface, có thể load balancing, failover lên đến 12 đường WAN - Internet.
Bên dưới là mô h́nh đấu nối thiết bị:
http://switch-router.com/uploads/forum/Loadbalancing/network topology.png
Tiếp theo là chi tiết cấu h́nh thiết bị router Mikrotik RB1100AHx2 load balancing và failover trên 3 kết nối WAN - Internet.
Với thiết bị router Mikrotik, chúng ta có nhiều phương án để load balancing và failover cho kết nối WAN, ở đây, chúng tôi triển khai theo phương thức gọi là PCC (Per Connection Classifier). Với phương thức này, balancing trên các kết nối WAN theo các kết nối (connection).
Đầu tiên chúng ta cần chú ư rằng, interface bridge trên router Mikrotik được thiết kế để làm cấu nối cho traffic ở Layer 2, do đó, giao tiếp bridge này là kết nối logic để vận chuyển traffic Layer 2 giữa các cổng của thiết bị router Mikrotik. Mặc định traffic này giao tiếp bridge sẽ không được xử lư bởi các rule của firewall hoạt động ở Layer 3. Để bắt buộc Layer traffic trên brigde được xử lư bởi các rule của firewall ở Layer 3, chúng ta phải tường ḿnh khai báo với lệnh sau:
/interface bridge settings
set use-ip-firewall=yes
Trong trường hợp của ta traffic trên các cổng khai báo là WAN được đóng gói với giao thức PPPoE, cũng cần tường minh cho phép đi qua các rule của firewall ở Layer 3.
/interface bridge settings
set use-ip-firewall-for-pppoe=yes
Các traffic của nội bộ mạng LAN qua router Mikrotik không cần phải xử lư bởi các rule của firewall. Do đó, chúng ta cần khai báo rule đầu tiên cho tất cả traffic của nội bộ mạng LAN bypass các rule của firewall.
/ip firewall mangle
add chain=prerouting dst-address=192.168.100.0/24 in-interface=bridge action=accept
Lệnh trên thực hiện ở chain pre-routing, do đó, traffic được xử lư trước khi mọi quyết định định tuyến gói tín xảy ra đối với các traffic đến router Mikrotik và traffic đang được forward bởi router Mikrotik. Rule trên kiểm tra mọi traffic có đích đến là mạng LAN (192.168.100.0/24) và interface tiếp nhận traffic trong trường hợp này là bridge - giao tiếp cầu nối cho traffic các cổng LAN của router Mikrotik. Action "accept" với mục đích dừng không xử lư traffic này với các rule kế tiếp sau. Để bắt traffic đi qua các rule bên dưới tiếp theo, cần khai báo trường "passthrough=yes".
Với mỗi interface WAN, các traffic từ Internet vào WAN nào cần phải đi ra WAN đó, nếu không, kết nối sẽ bị gián đoạn - treo. Đặc biệt chú ư khi cần publish các dịch vụ từ mạng LAN ra Internet như Web service, FTP, Email service... hoặc các traffic khởi tạo từ Internet vào LAN như: SSH, VPN, ....
Các traffic vào router Mikrotik sẽ qua chain input và traffic rời router Mikrotik sẽ qua chain output. Chúng ta sẽ sử dụng 2 bộ rule, một cho chain input và một cho chain output cho mỗi interface WAN mà ta muốn load balancing và failover. Trong tường hợp này, chúng ta cần load balancing và failover trên 3 kết nối WAN.
Bên dưới là các mangle rule để xác định traffic khởi tạo từ Internet vào các interface WAN và đánh dấu (new-connection-mark) các traffic này với interface WAN mà nó vào
/ip firewall mangle
add chain=input in-interface=pppoe-out1 connection-mark=no-mark action=mark-connection new-connection-mark=WAN1 passthrough=no
add chain=input in-interface=pppoe-out2 connection-mark=no-mark action=mark-connection new-connection-mark=WAN2 passthrough=no
add chain=input in-interface=pppoe-out3 connection-mark=no-mark action=mark-connection new-connection-mark=WAN3 passthrough=no
Như vậy, các kết nối khởi tạo từ Internet (new-connection) được đánh dấu với WAN1, WAN2, hoặc WAN3 tương ứng interface WAN mà traffic đi vào. Tiếp theo, chúng ta cần đảm bảo các kết nối này sẽ ra đúng interface WAN mà nó đă khởi tạo vào. Chúng ta thực hiện điều này ở chain output và dùng routing-mark để định tuyến gói tin theo đúng bảng định tuyến mà ta sẽ khai báo sau.
/ip firewall mangle
add chain=output out-interface=pppoe-out1 connection-mark=WAN1 action=mark-routing new-routing-mark=WAN1 passthrough=no
add chain=output out-interface=pppoe-out2 connection-mark=WAN2 action=mark-routing new-routing-mark=WAN2 passthrough=no
add chain=output out-interface=pppoe-out3 connection-mark=WAN3 action=mark-routing new-routing-mark=WAN3 passthrough=no
Tiếp theo, chúng ta sẽ thực hiện load balancing bằng phương thức PCC để cân bằng tải kết nối từ mạng nội bộ LAN ra 3 interface WAN mà ta có bằng các rule mangle sau:
/ip firewall mangle
add chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=bridge per-connection-classifier=both-addresses:3/0 action=mark-connection new-connection-mark=WAN1
add chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=bridge per-connection-classifier=both-addresses:3/1 action=mark-connection new-connection-mark=WAN2
add chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=bridge per-connection-classifier=both-addresses:3/2 action=mark-connection new-connection-mark=WAN3
Với các rule trên, chỉ đánh dấu (mark) các traffic được chuyển tiếp từ mạng nội bộ LAN ra Internet, các traffic từ mạng nội bộ LAN đến chính router Mikrotik sẽ không bị các rule tác động (dst-address-type=!local). Các kết nối (connection) sẽ được chia điều trên 3 kết nối WAN (load balancing) và được đánh dấu (new-connection-mark) với kết nối WAN tương ứng mà connection sẽ đi ra Internet.
Các giá trị của trường per-connection-classifier=both-addresses liên quan đến biểu thức modular trong toán học, các bạn có thể t́m hiểu thêm ở các link cuối bài này.
Chú ư, mặc định th́ passthrough=yes được bật cho các rule mangle ở trên. Tiếp theo, với các kết nối đă được dánh dấu ở trên, chúng ta cần đánh dấu routing mark kết nối được định tuyến theo đúng bảng định tuyến mà ta khai bao sau.
/ip firewall mangle
add chain=prerouting connection-mark=WAN1 in-interface=bridge action=mark-routing new-routing-mark=WAN1 passthrough=no
add chain=prerouting connection-mark=WAN2 in-interface=bridge action=mark-routing new-routing-mark=WAN2 passthrough=no
add chain=prerouting connection-mark=WAN3 in-interface=bridge action=mark-routing new-routing-mark=WAN3 passthrough=no
Vậy traffic ở đây sẽ được balancing trên 3 kết nối WAN, với mỗi kết nối xuất phát từ mạng nội bộ LAN sẽ lần lược được điều hướng đến 3 bảng định tuyến WAN1, WAN2, WAN3 được khai bao bên dưới:
/ip route
add dst-address=0.0.0.0/0 gateway=pppoe-out1 routing-mark=WAN1
add dst-address=0.0.0.0/0 gateway=pppoe-out2 routing-mark=WAN2
add dst-address=0.0.0.0/0 gateway=pppoe-out3 routing-mark=WAN3
Tiếp theo, chúng ta cần khai báo các route cho bảng định tuyến chính (main) để các traffic xuất phát từ chính router có thể định tuyến ra ngoài Internet.
/ip route
add dst-address=0.0.0.0/0 gateway=pppoe-out1 distance=1
add dst-address=0.0.0.0/0 gateway=pppoe-out2 distance=2
add dst-address=0.0.0.0/0 gateway=pppoe-out3 distance=2
Đến đây, chúng ta đă hoàn thành việc cấu h́nh load balancing và failover trên 3 kết nối WAN cho thiết bị router Mikrotik RB1100AHx2