Собственно настройка сабжа.
1. Прошиваемся на OpenWRT Kamikaze 7.0.9 (на http://openwrt.org берем файлик с именем openwrt-wrt54g-2.4-squashfs.bin и прошиваемся им через веб-морду роутера - http://192.168.1.1, login\passwd admin - ну это стандартно), идём в ребут.
2. telnet 192.168.1.1
Устанавливаем свой пассворд, как нас просят. После этого мы можем заходить по ssh рутом на порт 22.
Далее - нам нужно, чтоб по ssh мы могли зайти, во-первых, извне, а во-вторых, ssh-даемон dropbear будет висеть на другом порту, предположим, 2022.
В /etc/config/dropbear меняем соотв. порт.
Ниже - напишем свой конфиг фаерволла, менее фашистский.
Конфигурация интерфейсов:
В нашем случае, провайдер выдал нам фиксированные IP, gateway, netmask и 2 адреса DNS серверов.
IP 100.100.100.38
gateway 100.100.100.37
netmask 255.255.255.252
1 DNS 80.80.80.114
2 DNS 80.80.80.115
Также, соединяем в бридж lan-ethernet-порты и wireless-lan.
Правим /etc/config/network
#### VLAN configuration
config switch eth0
option vlan0 "0 1 2 3 5*"
option vlan1 "4 5"
#### Loopback configuration
config interface loopback
option ifname "lo"
option proto static
option ipaddr 127.0.0.1
option netmask 255.0.0.0
#### LAN configuration
config interface lan
option type bridge
option ifname "eth0.0"
option proto static
option ipaddr 192.168.1.1
option netmask 255.255.255.0
#### WAN configuration
config interface wan
option ifname "eth0.1"
option proto static
option ipaddr 100.100.100.38
option netmask 255.255.255.252
option gateway 100.100.100.37
option dns 80.80.80.114 80.80.80.115
Правим /etc/config/wireless
config wifi-device wl0
option type broadcom
option channel 5
option disabled 0
config wifi-iface
option device wl0
# опция ниже - как раз то самое бриджевание
option network lan
option mode ap
option ssid OpenWrt-ME
option encryption psk2
option key "ourpasswd"
Заменяем правила в /etc/init.d/firewall на свои:
#!/bin/sh
iptables -F
iptables -t nat -F
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -A INPUT -m state --state INVALID -j REJECT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0.1 -p tcp --dport 2022 -m state --state NEW -j ACCEPT
iptables -A INPUT -i eth0.1 -p icmp --icmp-type 8 -j REJECT --reject-with proto-unreach
iptables -A INPUT -i eth0.1 -j DROP
iptables -t nat -A POSTROUTING -o eth0.1 -j SNAT --to-source 100.100.100.38
Теперь разбираемся со временем и timezone.
http://wiki.openwrt.org/OpenWrtDocs/WhiteRussian/Configuration ищем там строку для своей TZ, выполняем
# nvram set time_zone="EET-2EEST,M3.5.0/3,M10.5.0/4"
# nvram commit
и
# rdate -s ntp.colocall.net
(любой ntp-сервер, который дружит с rdate)
Создаем скрипт
/etc/init.d/rdate
#!/bin/sh
/usr/sbin/rdate -s ntp.colocall.net
# chmod a+x /etc/init.d/rdate
и делаем симлинк
# ln -s /etc/init.d/rdate /etc/rc.d/S55rdate
UPD. Лучше сделать немного по-другому:
а)# vi /etc/TZ
EET-2EEST,M3.5.0/3,M10.5.0/4
б)# ipkg update; ipkg install ntpclient
В чем разница - rdate при старте не выполнится, если ещё нет доступа в инет (полминутные тормоза на свиче, куда воткнули нашу железку), ntpclient же выполнится, как только внешний интерфейс поднимется - см. /etc/hotplug.d/iface/20-ntpclient
3. Если вдруг наконфигурили такого, что роутер стал недоступен вообще (косяки с фаерволлом, забыли пароль на ssh...) - загрузим роутер в failsafe режим.
Для этого:
а) выключить;
б) включить; дождаться, когда засветится индикатор DMZ; подержать нажатым Reset 2 секунды; telnet 192.168.1.1;
в) монтируем файловую систему jffs:
# mtd unlock /dev/mtd/4
# mount -t jffs2 /dev/mtdblock/4 /jffs
и проводим работу над ошибками.
P.S. В случае забытого рутового пароля, в /jffs/etc/passwd вписываем во 2-е поле в зашифрованном виде тот пароль, который есть на другой машине и известен вам (и вы можете посмотреть, как он выглядит в зашифрованном виде на той другой машине) - см. http://web.archive.org/web/20080109111208/http://rotz.org/archives/2005/....