Пару лет назад купил для дома роутер ASUS WL-500gP, настроил и забыл про него. В том смысле, что работает, есть не просит, проблем не создает. В процессе настройки записывал все, что делал, чтобы в случае чего не вспоминать, а иметь возможность по-быстрому настроить с нуля. С учетом долгой и стабильной работы данной конфигурации, решил поделиться конспектом.

Установленный софт:

ssh
mc
cron
knockd
screen
3proxy (пробовал squid, но он оказался тяжеловат)
lighttpd + php + perl
rrdtool
lightsquid
transmission (torrent-client)

Что необходимо:
  1. Прошивка от Олега
  2. USB флэшка (у меня на 4 гига, вполне хватает)
Теперь по-порядку.

Прошивка.


Прошиваем устройство. Прошивка — файл с расширением trx. Стандарными средствами, через веб-интерфейс, не буду заострять на этом внимание. Саму прошивку можно взять здесь

Установка софта:

Монтируем флэшку


1. отключить ftp server (usb application -> ftp server -> enable ftp server = no).
2. перезагрузить роутер (finish, save&restart)
3. заходим на роутер телнетом,

umount /tmp/harddisk
mke2fs -j /dev/scsi/host0/bus0/target0/lun0/part1


4. включить ftp server обратно.
5. перезагрузить роутер (finish, save&restart)

mkdir /tmp/mnt/disc0_1/opt
mount -obind /tmp/mnt/disc0_1/opt /opt
mkdir -p /opt/tmp/ipkg
ipkg.sh update
ipkg.sh install ipkg-opt
ipkg update


Настройка ssh и создание скриптов загрузки


mkdir -p /usr/local/etc/dropbear
dropbearkey -t dss -f /usr/local/etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -f /usr/local/etc/dropbear/dropbear_rsa_host_key
mkdir -p /usr/local/sbin/
echo "#!/bin/sh" >> /usr/local/sbin/post-boot
cp /usr/local/sbin/post-boot /usr/local/sbin/post-firewall
cp /usr/local/sbin/post-boot /usr/local/sbin/post-mount
cp /usr/local/sbin/post-boot /usr/local/sbin/pre-shutdown
chmod +x /usr/local/sbin/p*
echo "dropbear > /dev/null 2>&1" >> /usr/local/sbin/post-boot
dropbear > /dev/null 2>&1

flashfs save && flashfs commit && flashfs enable


Установка Lighttpd — легкий и быстрый веб-сервер


1. Устанавливаем
ipkg install lighttpd
ipkg install php
ipkg install php-fcgi


можно еще сразу perl поставить:

ipkg install perl

2. Правим файл: /opt/etc/lighttpd/lighttpd.conf
убрать # в стоке:
# "mod_fastcgi",
Устанавливаем пути:
server.document-root = "/opt/share/www/"
accesslog.filename = "/opt/share/www/log/access.log"
Устанавливаем запрет доступа к файлам с окончанием:
url.access-deny = ( "~", ".inc",".sqlite" )

Определение запуска скриптов:
fastcgi.server = ( ".php" =>
((
"host" => "192.168.1.1",
"port" => 1026,
))
)


3. Создаем файл:
/opt/etc/init.d/S45php
и пишем в нем:
#!/bin/sh

export PHP_FCGI_CHILDREN=1
PORT=1026
BIN=/opt/bin/php-fcgi
#/opt/etc/php.d

case $1 in
start)
$BIN -b $PORT &
;;
stop)
kill Pidof phpM ;;
*)
echo "usage: $0 (start|stop)"
exit 1
esac


для перла:
расскоментить строчку
"mod_cgi"

в секции CGI module расскоментить:

cgi.assign = ( ".pl" => "/opt/bin/perl",
".cgi" => "/opt/bin/perl" )


в static-file.exclude-extensions добавить cgi, pl

по желанию в index-file.names добавить index.cgi

4. Задаем разрешение на исполнение:
chmod +x /opt/etc/init.d/S45php

5. Все. Можно запустить Lighttpd:
/opt/etc/init.d/S45php start

6. удалить все в /opt/etc/lighttpd/conf.d/
/opt/etc/init.d/S80lighttpd start

Установка 3proxy — прокси-сервер


Качаем скомпиленные бинарники с сайта 3proxy.ru. В архиве все разложено по папочкам — просто раскладываем файлы по нужным директориям.

в /opt/etc/init.d/ создаем скрипт запуска — S803proxy
touch /opt/etc/init.d/S803proxy

пишем туда:

#!/bin/sh
#
# Startup script for 3proxy
#
# Stop myself if running
PIDFILE=/opt/var/run/3proxy.pid
[ -f ${PIDFILE} ] && kill `cat ${PIDFILE}`
/opt/bin/3proxy /opt/etc/3proxy/3proxy.cfg


даем права на запуск
chmod +x /opt/etc/init.d/S803proxy

в /usr/local/sbin/post-mount добавляем строчку запуска скрипта:
/opt/etc/init.d/S803proxy start

создаем директорию для конфига
mkdir /opt/etc/3proxy

и кладем туда 3proxy.cfg:

timeouts 1 5 30 60 180 1800 15 60
log /opt/var/3proxy/logs/access.log
logformat "-""+_L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I"
external 0.0.0.0
internal 192.168.1.1
auth none
allow * * * 80,8080-8088
proxy -p3128 -n
etgid 65534
setuid 65534


создаем директорию для логов
mkdir /opt/var/3proxy/logs

в /usr/local/sbin/post-mount добавляем строчку запуска скрипта:
/opt/etc/init.d/S803proxy start

Установка lightsquid — для просмотра логов прокси-сервера


качаем отсюда http://lightsquid.sourceforge.net/
распаковываем в /opt/share/www/lilightsquid

В lightsquid.cfg исправляем пути на нужные — там все понятно по смыслу
и устанавливаем параметр типа лога — 1
$squidlogtype = 1;

запуск:
touch /opt/etc/cron.hourly/lightsquid
chmod +x /opt/etc/cron.hourly/lightsquid


в lightsquid пишем

#!/bin/sh
/opt/bin/perl /opt/share/www/lightsquid/lightparser.pl today


И не забываем сохранять настройки:

flashfs save && flashfs commit && flashfs enable

На этом минимальном наборе софта остановлюсь, если будет интересно, то продолжу рассказ.