• Thứ Hai, 24/01/2011 15:24 (GMT+7)

    Lên đời router

    Lý Lâm
    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 tươ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 theo người viết là 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. 

    Người viết tin chắc hầu hết các bạn sẽ thấy ấn tượng với giao diện theo dõi băng thông của nó. Bạn có thể tham khảo thêm đoạn video clip tại: http://www.polarcloud.com/v/scbwm.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. 

    Nếu bạn đã đọc tới đây thì người viết tin chắc bạn không lạ gì với tính năng cơ bản trong giao diện của các router như LAN, WAN, Administration, Firewall hay Status… 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ụ (người viết tin rằng nhiều bạn sẽ đánh giá cao mục View Details của phần QoS, cho phép theo dõi các địa chỉ IP trên mạng của mình đang truy cập địa chỉ nào, dùng port nào để truy cập), 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ư để theo 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? Người viết nghĩ bạn tự trả lời được câu hỏi này. 

    Để 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ừ địa chỉ: https://launchpad.net/ipt-parse và bung file ipt-parse.7z bằng 7-zip hay WinRAR để 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:

    cd /cifs1
    ./ipt-parse 2 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. Thử nhìn vào hình sau: 

    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 đó.

    Script 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.

    ID: A1010_122