
Здравейте отново и да Ви е честитата новата 2010 година! След "кратко" прекъсване, най-накрая се реших да понапиша нещо в позамрялата ми web страница. Най-пресен ми е спомена за забавлението, което си намерих по време на Коледните празници - flash-ване на firmware-а на моя стар рутер
Toshiba WRC-1000HS с
OpenWrt. Казано на български - смяна на софтуера, с който работи рутера, с друг такъв с идея подобряване на бързодействието му. Не знам дали съм го обяснил точно и правилно, но поне аз така го разбирам. В тази статията няма да изпадам в големи подробности, а просто ще дам решение, което при мене заработи.
В началото стартирах с оригиналния firmware-а на Toshiba, който е инсталиран по подразбиране. За всеки случай нулирах настройките на рутера до фабричните и започнах да търся алтернативен firmware. Натъкнах се почти мигновено на OpenWrt и веднага реших, че това ще е избора ми. В последствие разбрах, че избора ми е бил силно ограничен и кажи рече не съм имал друг такъв. Първото нещо, което направих е да потърся повече информация на
официалния сайт на OpenWrt за Toshiba WRC-1000HS. Такава информация почти липсваше, а малкото налична водеше основно до форума, където така и не намерих готово решение.
Страницата с поддържани устройства съдържа голям броя рутери и за моя радост WRC-1000 също е споменат, но за съжаление с информацията, че се поддържа частично или още "Partial" (
http://wiki.openwrt.org/oldwiki/hardware/toshiba). Противоречиви мисли преминаха през главата ми, но бях се решил твърдо да го докарам докрай. Продължих да търся информация в Интернет и открих интересна страничка (дефакто wiki) на комшиите от южната ни страна -
OpenWRT-OZOnet HowTo. Гръцкият език не ми е силна черта, затова се възползвах от помощта на Google Translate. Това бе първото ми flash-ване на рутера, смея да кажа учудващо за мене - успешно. Така след сравнително малко четене имах OpenWrt на рутера. За съжаление гореспомената страничка е доста старичка, съответно firmware-а е стар, има доста неточности и ненужна информация. Версията на OpenWrt е WHITE RUSSIAN (RC5), която използва основно настройките в nvram памета за разлика от последната текуща разновидност на OpenWrt - KAMIKAZE. KAMIKAZE (в моя случай 8.09.1 brcm-2.4) използва основно конфигурационни файлове за запаметяване на настройките на рутера. Та с WR RC5, след първоначалните настройки, рутера заработи както се очаква с изключение на безжичната карта:
| Примерен код |
root@hostname:~# lspci | grep -i network 01:01.0 Network controller: Intersil Corporation Prism 2.5 Wavelan chipset (rev 01) root@hostname:~# |
Тествах всички налични kmod-hostap-pci* модули описани в гръцкото wiki, но модулите така и не пожелаха да се заредят и съответно безжичната карта бе неизползваема. Свързах се с автора на wiki-то и той ми предложи няколко по-нови firmware за тестване - след еднодневно блъскане работещ вариант не открих. В този момент реших да си помогна сам...
Още първия ми опит бе изненадващо успешен - просто свалих и инсталирах последната версия на OpenWrt Kamikaze brcm-2.4 от официалния сайт -
Kamikaze 8.09.1 brcm-2.4.
Има няколко начина за flash-ване на рутера, аз лично използвам tftp:
| Примерен код |
# Изключваме рутера от захранването (има бутонче за целта :)) и от компютър в същата подмрежа изпълняваме следното (192.168.10.1 е IP адреса на рутера): tftp 192.168.10.1 binary rexmt 1 timeout 60 trace put openwrt-brcm-2.4-squashfs.trx # Тук трябва да включим рутера към захранването и да изчакаме около 30 секунди - 1 минута, за да се прехвърли firmware-а. quit |
Повече информация за начина на flash-ване в линковете в края на статията.
Рутерът би трябвало да може да се ping-ва на 192.168.10.1 или 192.168.1.1. Първоначалното свързване става директно с
telnet клиент (порт 23). След това задължително трябва да сменим паролата на root потребителя с командата
passwd и да рестартираме рутера (команда
reboot). Последващото записване на рутера се осъществява само с
ssh клиент (порт 22). Основните пакети би трябвало вече да са налични и инсталирани. Може да проверите това с команда
ipkg list. Важни пакети, които са ви необходими са
dnsmasq и
bridge. Също така е хубаво да си настроите освен мрежовите настройки и времевата зона и да си свалите пакета
ntpclient, за да сте винаги точни :).
Както може да се досетите сами, безжичната карта отново не работеше, но този път решение бе намеренo:
| Примерен код |
root@hostname:~# ipkg install http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/kmod-hostap_2.4.35.4+0.4.9-brcm-2.4-1_mipsel.ipk ##### CUT - installation of the package ##### root@hostname:~# root@hostname:~# ipkg install http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/kmod-hostap-pci_2.4.35.4+0.4.9-brcm-2.4-1_mipsel.ipk ##### CUT - installation of the package ##### root@hostname:~# |
След рестартиране на рутера и извикване на dmesg би трябвало да видим нещо от сорта:
| Цитат |
##### CUT ##### hostap_crypt: registered algorithm 'NULL' hostap_crypt: registered algorithm 'WEP' hostap_crypt: registered algorithm 'TKIP' hostap_crypt: registered algorithm 'CCMP' hostap_pci: 0.4.9 - 2006-05-06 (Jouni Malinen <jkmaline@cc.hut.fi>) PCI: Enabling device 01:01.0 (0000 -> 0002) hostap_pci: Registered netdevice wifi0 wifi0: Original COR value: 0x0 prism2_hw_init: initialized in 230 ms wifi0: NIC: id=0x8013 v1.0.0 wifi0: PRI: id=0x15 v1.1.1 wifi0: STA: id=0x1f v1.4.9 wifi0: defaulting to bogus WDS frame as a workaround for firmware bug in Host AP mode WDS wifi0: Intersil Prism2.5 PCI: mem=0x40002000, irq=6 wifi0: registered netdevice wlan0 ##### CUT ##### |
Хуваво е в този момент да си инсталираме пакета
wireless-tools (ако такъв нямаме), за да виждаме повече детайли относно безжичната карта и използваме другите възможности предоставени от него.
С помощта на
lsmod и
iwconfig потвърждаваме, че всичко е така както трябва:
| Примерен код |
root@hostname:~# lsmod | grep -i hostap hostap_pci 45196 0 (unused) hostap_crypt_ccmp 14604 0 (unused) hostap_crypt_tkip 9804 0 (unused) hostap_crypt_wep 3580 0 (unused) hostap 105200 0 [hostap_pci hostap_crypt_ccmp hostap_crypt_tkip hostap_crypt_wep] root@hostname:~# root@hostname:~#
root@hostname:~# iwconfig lo no wireless extensions.
eth0 no wireless extensions.
eth1 no wireless extensions.
br-lan no wireless extensions.
wifi0 IEEE 802.11b ESSID:"test" Mode:Master Access Point: Not-Associated Bit Rate:11 Mb/s Tx-Power:-48 dBm Sensitivity=1/3 Retry min limit:8 RTS thr:off Fragment thr:off Encryption key:off Power Management:off
wlan0 IEEE 802.11b ESSID:"test" Mode:Master Access Point: Not-Associated Bit Rate:11 Mb/s Tx-Power:-48 dBm Sensitivity=1/3 Retry min limit:8 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
root@hostname:~# |
Следва конфигуриране на безжичната мрежа, добавяне на MAC филтри и т.н. Накрая добавяме
wlan0 безжичния мрежови интерфейс към вече съществуващия bridge -
br-lan:
| Примерен код |
root@hostname:~# brctl addif br-lan wlan0 root@hostname:~#
root@hostname:~# brctl show bridge name bridge id STP enabled interfaces br-lan 8000.0090963c5abc no eth0 wlan0 root@hostname:~#
root@hostname:~# cat /etc/init.d/local #!/bin/sh /etc/rc.common # Copyright (C) 2006-2008 OpenWrt.org
start() { /usr/sbin/brctl addif br-lan wlan0 } root@hostname:~#
root@hostname:~# cd /etc/rc.d/ root@hostname:/etc/rc.d# root@hostname:/etc/rc.d# ln -s ../init.d/local S41local root@hostname:/etc/rc.d# |
Така рутерът става почти напълно функционален. Остават други допълнителни настройки, които са по желание.
Примерно, ако искате да имате гъвкава защитна стена, трябва да си инсталирате
iptables и съответните
iptables модули към ядрото:
| Примерен код |
root@hostname:~# ipkg status iptables Package: iptables Version: 1.3.8-2 Status: install ok installed Architecture: mipsel Conffiles: /etc/firewall.config 4f8ae0dac82f7a269b6587d4c4d0b285 /etc/firewall.user f626143fa22ae40fe361eaceb69d2942
Done. root@hostname:~#
root@hostname:~# ipkg remove iptables Removing package iptables from root... Done. root@hostname:~#
root@hostname:~# ipkg install http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/kmod-ipt-core_2.4.35.4-brcm-2.4-1_mipsel.ipk Downloading http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/kmod-ipt-core_2.4.35.4-brcm-2.4-1_mipsel.ipk Installing kmod-ipt-core (2.4.35.4-brcm-2.4-1) to root... Configuring kmod-ipt-core Done. root@hostname:~# ipkg install http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/libiptc_1.4.3.2-1_mipsel.ipk Downloading http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/libiptc_1.4.3.2-1_mipsel.ipk Installing libiptc (1.4.3.2-1) to root... Configuring libiptc Done. root@hostname:~# ipkg install http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/libxtables_1.4.3.2-1_mipsel.ipk Downloading http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/libxtables_1.4.3.2-1_mipsel.ipk Installing libxtables (1.4.3.2-1) to root... Configuring libxtables Done. root@hostname:~# root@hostname:~# ipkg install http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/iptables_1.4.3.2-1_mipsel.ipk Downloading http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/iptables_1.4.3.2-1_mipsel.ipk Installing iptables (1.4.3.2-1) to root... Configuring iptables Done. root@hostname:~#
root@hostname:~# ipkg install http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/kmod-ipt-conntrack_2.4.35.4-brcm-2.4-1_mipsel.ipk Downloading http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/kmod-ipt-conntrack_2.4.35.4-brcm-2.4-1_mipsel.ipk Installing kmod-ipt-conntrack (2.4.35.4-brcm-2.4-1) to root... Configuring kmod-ipt-conntrack Done. root@hostname:~# root@hostname:~# ipkg install http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/kmod-ipt-nat_2.4.35.4-brcm-2.4-1_mipsel.ipk Downloading http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/kmod-ipt-nat_2.4.35.4-brcm-2.4-1_mipsel.ipk Installing kmod-ipt-nat (2.4.35.4-brcm-2.4-1) to root... Configuring kmod-ipt-nat Done. root@hostname:~#
root@hostname:~# lsmod Module Size Used by Not tainted ipt_MASQUERADE 1316 0 (unused) iptable_nat 21000 0 [ipt_MASQUERADE] ipt_state 408 0 (unused) ip_conntrack 22576 0 [ipt_MASQUERADE iptable_nat ipt_state] hostap_pci 45196 0 (unused) hostap_crypt_ccmp 14604 0 (unused) hostap_crypt_tkip 9804 0 (unused) hostap_crypt_wep 3580 0 (unused) hostap 105200 0 [hostap_pci hostap_crypt_ccmp hostap_crypt_tkip hostap_crypt_wep] ipt_REJECT 3932 0 (unused) ipt_TCPMSS 2316 0 (unused) ipt_LOG 3804 0 (unused) ipt_multiport 748 0 (unused) ipt_mac 556 0 (unused) ipt_limit 892 0 (unused) iptable_mangle 2156 0 (unused) iptable_filter 1676 0 (unused) ip_tables 16960 13 [ipt_MASQUERADE iptable_nat ipt_state ipt_REJECT ipt_TCPMSS ipt_LOG ipt_multiport ipt_mac ipt_limit iptable_mangle iptable_filter] switch-core 4864 0 root@hostname:~#
root@hostname:~# ipkg install http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/iptables-mod-nat_1.4.3.2-1_mipsel.ipk Downloading http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/iptables-mod-nat_1.4.3.2-1_mipsel.ipk Installing iptables-mod-nat (1.4.3.2-1) to root... Configuring iptables-mod-nat Done. root@hostname:~#
root@hostname:~# ipkg install http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/iptables-mod-conntrack_1.4.3.2-1_mipsel.ipk Downloading http://downloads.openwrt.org/snapshots/trunk/brcm-2.4/packages/iptables-mod-conntrack_1.4.3.2-1_mipsel.ipk Installing iptables-mod-conntrack (1.4.3.2-1) to root... Configuring iptables-mod-conntrack Done. root@hostname:~# |
Резултатът е налице - OpenWrt Kamikaze на стария измъчен Toshiba WRC-1000HS. На всичкото отгоре РАБОТИ :)!!!
Полезни връзки по темата: