Nâng cấp router sử dụng Tomato firmware Theo dõi băng thông và chất lượng dịch vụ QoS trên dòng router dùng Tomato firmware, kết hợp với 2 công cụ là IPTables Bandwidth Monitor của Mark
Trang 1Nâng cấp router sử dụng Tomato firmware
Theo dõi băng thông và chất lượng dịch vụ (QoS) trên dòng router dùng Tomato firmware, kết hợp với 2 công cụ là IPTables Bandwidth Monitor của Mark Vejvoda và Script Generator của Robert
"Robson" Mytkowski
Trừ phi bạn mua bộ định tuyến (router) đắt tiền giá khoảng chục triệu, còn không, với các router giá vài triệu chạy Linux khó hy vọng có sẵn các tính năng quản lý băng thông Tuy nhiên, bạn có thể làm được chuyện đó nhờ các phiên bản Linux tuỳ biến
Trong bài, người viết sử dụng
Linksys WRT54GL version 1.1
giá tầm 1,2 triệu đồng Để mua
đúng thiết bị chạy Tomato (nhân
Linux) thì bạn nên biết về các loại router sử dụng chipset của Broadcom có đủ bộ nhớ flash (thường phải từ 4MB trở lên) và RAM (từ 16MB trở lên) Bạn có thể tìm mua những dòng router
Trang 2tương thích với Tomato được nhắc đến trên website của Tomato (http://www.polarcloud.com/tomato)
Giới thiệu về Tomato
Đây là phiên bản firmware nhỏ gọn và đơn giản với giao diện web dễ sử dụng - một lợi thế của Tomato vì khi nghe nhắc đến router chạy Linux thì nhiều người e ngại sự phức tạp của việc dùng dòng lệnh để thiết lập cấu
hình Dĩ nhiên với các bạn đã biết qua OpenWRT với phiên bản X-WRT kèm theo hay với DD-WRT thì giao diện web không phải là mới Nhưng Tomato có giao diện thân thiện hơn vì sử dụng AJAX và mô tả băng
thông với tính năng đồ họa Tomato không yêu cầu bạn phải khởi động lại router mỗi lần thay đổi cấu hình
Bạn có thể tham khảo thêm đoạn video clip tại: http://www.polarcloud.com/v/s cbwm.htm Tomato còn rất nhiều tính năng khác Hữu ích hay không… phải tùy theo nhu cầu của bạn Nếu bạn muốn một danh sách các tính năng của Tomato, có thể xem ở: http://en.wikipedia.org/wiki/Tomato_(firmware)#Features
Cài đặt Tomato không khó Trên website của Tomato có hướng dẫn khá
đầy đủ hoặc trong file readme.htm đi kèm với firmware mà bạn tải về
Tuy nhiên Tomato sẽ sử dụng lại cấu hình có sẵn của router nên việc cài đặt sẽ giống như một lần nâng cấp, chỉ có điều sau đó thì bạn sẽ có một giao diện mới với nhiều tính năng hơn
Giao diện của Tomato có thêm phần Bandwidth để theo dõi băng thông, QoS để quản lý chất lượng dịch vụ, Access Restriction cho phép tạo các rule để quản lý truy cập… theo từng TCP/UDP port và hạn chế
download P2P (peer to peer) hay theo giờ sử dụng Phần Administration
của Tomato có một số lựa chọn khác với các firmware có sẵn của các loại router thông thường như Debugging (khá quen thuộc với các bạn đã làm việc với IOS của Cisco) Hay mục CIFS Client và JFFS2 để truy
cập các thư mục chia sẻ trên mạng nội bộ hay sử dụng bộ nhớ flash làm
thư mục chứa file Ngoài ra, mục Scripts và Scheduler là nơi để bạn
thêm các tính năng mà Tomato chưa có, nếu bạn biết khai thác Như để
Trang 3theo dõi băng thông bình thường thì Tomato đã có sẵn theo thời gian thực hay từng ngày, từng tuần, từng tháng Nhưng nếu muốn theo dõi băng thông theo từng địa chỉ IP hay hạn chế/tùy biến download của người dùng
thì bạn sẽ phải kết hợp 2 mục Scripts và Scheduler với 2 công cụ sẽ
được giới thiệu sau đây
Theo dõi băng thông theo từng địa chỉ IP
Tại sao bạn lại cần theo dõi băng thông sử dụng theo từng địa chỉ IP?
Để sử dụng IPTables Bandwidth Monitor của Mark Vejvoda với
Tomato, bạn phải sử dụng Static Lease của dịch vụ DHCP để cố định địa chỉ IP của người dùng Việc này làm rất dễ dàng với Tomato, chỉ cần vào
mục Device List, chọn từng địa chỉ IP của người dùng rồi nhấn chữ [static] ngay bên dưới, giao diện của Static DHCP sẽ hiện ra, bạn có thể
gõ tên người dùng hoặc tên computer vào mục Hostname, nhấn Add và
thế là xong cho một người dùng Cứ lặp lại việc này cho đến khi hết danh sách người dùng của bạn
Bạn cần thiết lập một thư mục chia sẻ để chứa log và các file cần thiết
cho gói IPTables Bandwidth Monitor Bạn có thể sử dụng bộ nhớ flash, nhưng để đơn giản, bạn có thể bắt đầu với CIFS Client trước Bạn hãy
tạo một thư mục chia sẻ trên một máy tính trong mạng nội bộ, cấp quyền truy cập write cho một username trên máy tính Sau đó sử dụng username
và password để khai báo trong mục CIFS Client Đường dẫn UNC nên
sử dụng tên máy theo địa chỉ IP, dạng: \\xxx.xxx.xxx.xxx\sharedfolder Nếu bạn làm đúng, sau khi nhấn Save và đợi Tomato khởi động lại các dịch vụ cần thiết, mục Total/Free Size sẽ hiện lên dung lượng tối đa và
còn trống của thư mục chia sẻ nói trên
Tiếp theo bạn cần tải về gói phần mềm IPTables Bandwidth Monitor từ đây và bung file ipt-parse.7z để lấy thư mục tên là tomato_files Chép
nội dung của thư mục này vào thư mục chia sẻ nói trên
Trong trang wiki hướng dẫn của Mark Vejvoda có hướng dẫn 2 cách: sử dụng logfile hoặc sử dụng SQLITE database Bài viết này chỉ đề cập đến cách thứ hai Bạn hãy vào mục Scripts bên dưới phần Administration, chọn tab Firewall và gõ dòng lệnh như sau vào ô trống: /cifs1/ipt-parse 6
Nhấn Save và để cho Tomato khởi động lại dịch vụ cần thiết Sau đó vào mục Scheduler, chọn phần Custom 1, nhấn lên Enable Chọn Time là
“Every 15 minutes” và đảm bảo là bạn chọn Everyday ở mục Days
Trong ô Command bạn gõ những dòng lệnh như sau:
Trang 4cd /cifs1
BANDWIDTH "iptables
-L traffic_all -vnx"
"iptables -Z traffic_all"
./ipt-parse 4 today today
BANDWIDTH
flags=morehostinfo >
dailybandwidthlive.html
./ipt-parse 4 today-7 today BANDWIDTH flags=morehostinfo > weeklybandwidthlive.html
(Bạn có thể vào trang wiki của Mark Vejvoda để copy and paste các dòng lệnh)
Nhấn Save và chờ Tomato khởi động lại dịch vụ Nếu bạn làm đúng, và username để truy cập trong CIFS Client có đủ quyền, sau thời gian 15
phút trong thư mục chia sẻ sẽ xuất hiện 2 file có đuôi html có các thông
tin về băng thông sử dụng của từng địa chỉ IP mà bạn đã khai báo trong
Static Lease của DHCP
Nếu đã thành công và vẫn muốn tìm tòi thêm, trang wiki có hướng dẫn cách đưa 2 trang report ở trên lên router Lúc đó bạn sẽ truy cập 2 trang
đó theo địa chỉ của router với dạng như sau:
http://xxx.xxx.xxx.xxx/ext/dailybandwidthlive.asp với các chữ x là địa chỉ
IP của router Hoặc bạn có thể đưa thẳng nội dung của thư mục tomato_files vào bộ nhớ flash, không cần phải sử dụng thư mục chia sẻ
QoS
Tomato cung cấp các giao diện như sau để bạn quản lý chất lượng dịch
của lưu lượng băng thông trên mạng Như ở trên đã đề cập, phần View Details rất hữu ích để bạn nắm được ai-đang-làm-gì-ở-đâu trên mạng của mình Từ đó bạn có thể điều chỉnh, hoặc thậm chí hạn chế với các rule trong phần Access Restriction
Tuy nhiên, công cụ Script Generator của Robson cho bạn nhiều quyền
lực hơn những tính năng sẵn có của Tomato (Xem hình)
Bạn có thể quy định đến từng địa chỉ IP, hay dãy địa chỉ IP, hay port, hay thậm chí một dãy port có băng thông riêng, bao nhiêu kết nối… Thậm chí
ưu tiên cho một loại traffic nào đó
Trang 5Script Generator chỉ đơn giản là viết lệnh Linux thay cho bạn, sau khi
bạn đã thiết lập các rule phục vụ nhu cầu của bạn, theo hướng dẫn của nó Sau đó nó sẽ xuất ra thành các dòng lệnh Bạn chỉ việc copy và paste chúng vào mục Scripts, trong tab Firewall Save và nếu được nên khởi động lại router