Monday, December 1, 2014

Cài đặt Firmware Openwrt thay thế firmware gốc router wifi

OpenWrt  là firmware thay thế cho firmware (FW) gốc của router wifi. Được phát triển từ Linux, có thể chỉnh sửa một file cấu hình trên đó, hay cài thêm tiện ích samba và truy cập vô thư mục chia sẻ của một máy Windows khác trong mạng.
Các tính năng:
- Nhanh, nhẹ, nhiều tùy chọn
- Phát sóng mạnh hơn firmware gốc
- Hỗ trợ nhiều tính năng hơn firmware gốc
- Nhiều tùy biến

I. Các bước cài đặt:

1. Tìm firmware Openwrt phù hợp với router của bạn:
Do router wifi có nhiều chủng loại khác nhau, mỗi loại có chủng loại phần cứng, cách sắp đặt, phối hợp khác nhau nên bản Openwrt cũng phải thay đổi tùy theo nó sẽ được cài lên router nào. Các bạn xem ở phía sau thiết bị của bạn có cái tem, các bạn cần xác định 2 thứ: "Model No" và "Ver". Tìm đúng thiết bị của mình theo 2 thông số trên. Nếu router của bạn không có trong danh sách, lý do có thể là nhóm phát triển router chưa nghiên cứu, vọc tới loại router đó, hay họ chưa có trong tay driver của chip cấu tạo nên router, hay do router đó có bộ nhớ flash quá ít không đủ để chứa Openwrt.
Khi tìm được bạn sẽ thấy thông tin đầy đủ của Router của mình, vào trang Openwrt Project tìm đúng tên model và version xem Router của bạn có hỗ trợ không
Sau đó truy cập: Download Openwrt để tìm và tải FW về, ví dụ: Router Tplink 740N thì vào chọn: targets / ar71xx / ... (dựa vào trang Openwrt Project để tìm đường dẫn tải FW)
- Tìm file có đuôi "squashfs-factory.bin" dành để update từ firmware gốc lên; file có đuôi "squashfs-sysupgrade.bin" để cài lại khi đang ở Fimware Openwrt.
Đa số dòng router của TP-Link ta có thể cài OpenWrt trực tiếp qua giao diện web của router, tại mục Firmware Upgrade(vốn dùng để cập nhật firmware "chính hãng"). Trước khi update nên reset về Factory Defaults rồi tiến hành cập nhật từ file vừa tải về (file xxx.squashfs-factory.bin). Đợi router khởi động lại là xong
Lưu ý: Nên sử dụng Lan cable để cập nhật FW cho ổn định, hơn nữa mặc định Openwrt tắt Wifi nên phải dùng Lan cable để config sau khi cập nhật.

Fix lỗi Error code: 18005
Một số Router TPLINK khi tìm đúng file cập nhật Openwrt, nhưng vẫn báo lỗi Error code: 18005 . Cách fix như sau: 
Truy cập vào Web quản lý của Router, vào phần sửa tên Wifi, copy lần lượt từng dòng dưới vào ô tên wifi, rồi save, xong lại xoá đi copy lại dòng tiếp theo, lặp lại đến khi đủ 8 dòng dưới.

`echo "httpd -k"> /tmp/s`
`echo "sleep 10">> /tmp/s`
`echo "httpd -r&">> /tmp/s`
`echo "sleep 10">> /tmp/s`
`echo "httpd -k">> /tmp/s`
`echo "sleep 10">> /tmp/s`
`echo "httpd -f">> /tmp/s`
`sh /tmp/s`

Sau khi copy dòng cuối và save lại, Router sẽ khởi động lại. Sau khi khởi động lại tiến hành up FW openwrt sẽ ko bị lỗi 18005 nữa. Tham khảo video hướng dẫn

2. Các tùy chỉnh
Sau khi cài đặt, router khởi động lại, các bạn truy cập vào Router theo IP mặc định của Openwrt: 192.168.1.1 Việc đầu tiên bạn cần làm là set password cho router. Cứ đặt như mình user: root, password : root cho dễ nhớ sau này, đây cũng là user/pass sử dụng cho Putty và WinSCP truy cập Router thông qua SSH
Sau khi đặt xong click Save & Apply để lưu thay đổi.
Các bạn tiếp tục config các IP, DHCP, Wifi trong các tab cho các sử dụng thông thường.

3. Quay về Firmware gốc.
- Không sử dụng file Firmware tải tại trang chủ. Sử dụng File firmware đã chỉnh sửa để flash:
- Tải Fimware đã được chỉnh sửa cho Router của bạn về và giải nén: 
     Tại dd-wrt.com (đăng ký user rồi login mới cho tải)
- Rút hết các kết nối, chỉ để lại 1 cáp nối với Laptop để Flash qua Web
- Truy cập Web Interface, tiến hành Reset to Default để đưa về cài đặt ban đầu của Openwrt. 
- Tại giao diện WEB của Router, vào System —> Flash firmware: chọn file FW gốc đã tải về
- Bỏ tich ô 
- Nhấn Flash Image và xác nhận, đợi Router khởi động lại là xong.

II. Bổ xung thêm một số tiện ích

1. Mở rộng bộ nhớ lữu trữ qua USB (chỉ dành cho Router hỗ trợ cổng USB)

Bộ nhớ trong của Router thường nhỏ mà Openwrt thì nhiều tiện ích để cài, nếu Router hỗ trợ cổng USB thì sau khi config sẽ có nhiều không gian cho bạn cài thêm tiện ích mà không lo hết bộ nhớ.
- Dùng mini partition , format USB chia làm 2 partition (Linux Swap - khoảng 200Mb thôi) và (Ext4 - tất cả dung lượng còn lại) như hình
(hình là etx3 minh họa thôi, nhưng các bạn chọn ext4 nhé)
- Dùng Pytty kết nối SSH đến router cài: 
opkg update
opkg install kmod-usb2
insmod ehci-hcd
opkg install usbutils
opkg install kmod-usb-storage kmod-fs-ext4 block-mount
mkdir /mnt
chmod -R 777 /mnt
/etc/init.d/fstab enable

- Trên LUCI của Router, qua phần MountPoint, chỉnh sửa Device "/dev/sda2” (EXT4 Partition) vào Mount point "/mnt" , xong Enable rồi Save&Appy lại.


- Khởi động lại Router, qua phần MountPoint xem có mục mount /mnt chưa, qua Putty, kết nối SSH vào router gõ tiếp lệnh để copy data vào USB:
tar -C /overlay/ -c . -f - | tar -C /mnt/ -xf -
- Lại qua phần MountPoint, chỉnh sửa mount  "/dev/sda2"  thành "/overlay" , Save&Appy lại
Khởi động lại là xong, qua phần MountPoint kiểm tra thấy dung lượng "/overlay" xem tăng lên bằng dung lượng USB là OK, bật thêm cái Mount Swap cho "/dev/sda1” (Linux Swap Partition) là xong.
Từ giờ các config của router sẽ được lưu trên USB và thoải mái cài ứng dụng.

2. Mở Port (port forwarding)

* Mở port: Cho các bác chuyên tải torrent hoặc truy cập từ bên ngoài về thiết bị ở nhà
- Truy cập Router, vào phần Network/Firewall, click thẻ Port Forwards
- Điền thông số như mẫu: Name (bất kỳ), External Port (tên port cần mở), Internal IP (địa chỉ IP thiết bị cần mở Port), Internal port (bằng External Port hoặc bỏ trống cũng đc), xong nhấn Add rồi Save&Apply là ok
- Cần mở thêm port khác làm tương tự
- Nếu Router Openwrt kết nối với modem thì trên modem phải config Enable DMZ cho địa chỉ IP của Router Openwrt (Wan IP để chế độ Static) nữa nhé.
3. Config DDNS, tự cập nhật địa chỉ IP của modem.

 Vào trang duckdns.org, tạo tài khoản, tạo domain. Lấy 2 thông số dạng sau:

DOMAIN="abc123.duckdns.org"
TOKEN="abcd12345-77c6-484b-81f6-21fb83a02a28"

 Sử dụng WinSCP đăng nhập Router Openwrt: Vào thư mục /etc , tạo file duckdns.sh với nội dung theo thông số DOMAIN và TOKEN của bạn:

#!/bin/sh
DOMAIN="abc123.duckdns.org"
TOKEN="abcd12345-77c6-484b-81f6-21fb83a02a28"
wget -qO- "$@" http://duckdns.org/update/$DOMAIN/$TOKEN > /dev/null 2>&1
exit 0

Lưu lại, sử dụng Putty kết nối SSH với ROuter Openwrt gõ lệnh:

chmod 777 /etc/duckdns.sh
echo "*/45 * * * * /etc/duckdns.sh" >> /etc/crontabs/root
/etc/duckdns.sh

Vậy là xong, ưu điển của duckdns là không phải renew sau 30 ngày như no-ip.org.
4. Fix tốc độ Wifi đạt 300Mbps cho 1 số Router 2 râu trở lên.
- Một số Router có tốc độ tín hiệu quảng cáo là Up to 300Mbps (TX rate =150, RX rate =150), tuy nhiên khi để laptop thu wifi ngay bên cạnh router, mở Youtube xem 1 video HD, thông số wifi chỉ đạt (max TX=75Mbps , RX = 75 như hình)

 - Fix như sau: Dùng Pytty kết nối SSH đến router, gõ lệnh: 
uci set wireless.radio0.noscan=0 
uci commit 
reboot
Sau khi khởi động lại, kết nối wifi với laptop, mở thử Youtube, tìm xem 1 video HD, xem thông số đạt TX trên 75Mbps, RX trên 75Mbps như hình là ổn.

5. Cài tiện ích Adblock chặn quảng cáo.

Sau khi cài tiện ích này tất cả các thiết bị kết nối với router khi lướt web sẽ bớt đi các banner, pop up quảng cáo, tốc độ duyệt web từ đó cũng sẽ nhanh hơn. 
- Yêu cầu bộ nhớ còn trống ít nhất 1MB (nên chỉ dành cho router 8MB flash trở lên hoặc mở rộng bộ nhớ qua USB)
- Dùng Pytty kết nối SSH đến router cài:

opkg update
opkg install wget --force-reinstall
opkg install adblock
/etc/init.d/adblock start
- Đợi một lát cho adblock cập nhật trả kết quả sau là thành công : "domain adblock processing finished successfully"
- Khởi động lại Router là xong, vậy là từ giờ mạng nhà bạn bớt được quảng cáo đi nhiều không cần cài adblock riêng lẻ cho từng máy nữa.
Chúc thành công