Hungry Mind , Blog about everything in IT - C#, Java, C++, .NET, Windows, WinAPI, ...

Показаны сообщения с ярлыком WL500gP. Показать все сообщения
Показаны сообщения с ярлыком WL500gP. Показать все сообщения

Hacking WL-500gP Part 2

Продолжаю мучить WL-500gP. В предыдущей части были разобраны такие пункты:

  1. SSH
  2. 4 Gb Flash
  3. Установка пакетов
  4. syslog-ng
  5. Создание пользователей

Эта часть коснется установки и настройки VSFTPD и Samba 3.

Поставить FTP сервер и Samba по отдельности - не проблема. Проблема в том, чтобы везде использовалась одинаковая кодировка и корректно отображалась кириллица. Единственное рабочее решение, которое было найдено - использовать UTF8 на файловой системе и FTP сервер, который позволяет выполнять перекодировку UTF8<->Windows-1251.

Установка и настройка Samba 3

Ставим:

ipkg install samba

Файл конфигурации по-умолчанию отсутствует, создаем:

vim /opt/etc/samba/smb.conf
[global]
workgroup = MYWORKGROUP
guest account = nobody

security = share

browseable = yes
guest ok = yes
guest only = no
log level = 0
log file = /opt/var/log/smbd.log
max log size = 100
encrypt passwords = yes
dns proxy = no
load printers = no
invalid users = root
netbios name = WL500gP
interfaces = br0
bind interfaces only = yes
server string = ASUS WL500g Premium
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_SNDBUF=8192
preserve case = yes
short preserve case = yes

dos charset = CP866
unix charset = UTF-8
display charset = UTF-8

wins support = no
#wins server = 192.168.1.1
time server = yes
os level = 255
local master = no

[PersonalShare]
path = /opt/home/SomeUser
writeable = yes
force user = SomeUser
force group = someuser
browseable = yes

[GroupShare]
path = /opt/home/GroupShare
writeable = yes
force user = SomeGroup
force group = somegroup
browseable = yes
create mode = 0664
directory mode = 0775

[FTP]
path = /opt/home/ftp
writeable = yes
force user = ftp
force group = ftp
browseable = yes
create mode = 0664
directory mode = 0775

Конфигурацию расшареных папок, конечно, поменять на свои. Обратите внимание на выделенные параметры. Безопасность настроена на уровне папок, а не пользователей. Выставлены кодировки.

Скрипт запуска - /opt/etc/init.d/S08samba. Его нужно отредактировать и, желательно, переименовать, чтобы Samba запускалась в самом конце:

sed 's/samba_active=0/samba_active=1/' /opt/etc/init.d/S08samba > /opt/etc/init.d/S95samba
rm -f /opt/etc/init.d/S08samba

Не забываем также про остановку системы, файл /usr/local/sbin/pre-shutdown:

if [ `pidof smbd` -ne "" ]; then
        $log 'Terminating smbd'
        /bin/kill `pidof smbd`
fi
if [ `pidof nmbd` -ne "" ]; then
        $log 'Terminating nmbd'
        /bin/kill `pidof nmbd`
fi

Установка и настройка VSFTPD

VSFTPD - единственный сервер, который удовлетворяет требованиям по кодировке. И то, прийдется поднатужиться для его сборки...

Сборка VSFTPD

С сайта http://vsftpd.devnet.ru/rus/ нужно скачать последний архив в исходниками и скомпилировать его.

Для этого нам понадобятся следующие "маленькие" пакеты:

ipkg install optware-devel
ipkg install buildroot
ipkg install openssl-dev

Можно смело пойти погулять полчасика.

Компилируем:

mkdir -p /opt/usr/src
cd /opt/usr/src
wget http://vsftpd.devnet.ru/files/2.0.5/ext.4/vsftpd-2.0.5.ext4.tar.gz
tar zxvf vsftpd-2.0.5.ext4.tar.gz vsftpd-2.0.5.ext4
cd vsftpd-2.0.5.ext4
cp defs.h defs.h.orig
sed 's/\/etc\/vsftpd\/vsftpd.conf/\/opt\/etc\/vsftpd.conf/' defs.h.orig > defs.h
mv builddefs.h builddefs.h.orig
echo "#ifndef VSF_BUILDDEFS_H"      >> builddefs.h
echo "#define VSF_BUILDDEFS_H"      >> builddefs.h
echo ""                             >> builddefs.h
echo "#undef VSF_BUILD_TCPWRAPPERS" >> builddefs.h
echo "#define VSF_BUILD_PAM"        >> builddefs.h
echo "#define VSF_BUILD_SSL"        >> builddefs.h
echo ""                             >> builddefs.h
echo "#endif /* VSF_BUILDDEFS_H */" >> builddefs.h

make

ipkg install vsftpd

cp vsftpd /opt/sbin/
cp vsftpd.8 /opt/share/man/man8/
cp vsftpd.conf.5  /opt/share/man/man5/

UPD: 05/04/2009

Последняя сборка 2.1.0 (ext.1). Чтобы ее собрать необходимо скачать и поставить свежую версию openssl.

cd /opt/usr/src/
wget http://www.openssl.org/source/openssl-0.9.8k.tar.gz
tar zxvf openssl-0.9.8k.tar.gz
cd openssl-0.9.8k
./config --prefix=/opt --openssldir=/opt shared
make install

Перед выполнением этой команды нужно убить все несистемные процессы - для сборки просто не хватает памяти. Также неплохо, чтобы образовалась следующая картинка:

[root@WL500gP lib]$ ls /opt/lib/*libssl* -al
-rw-r--r-- 1 root root 480756 Apr  5 17:52 /opt/lib/libssl.a
lrwxrwxrwx 1 root root     15 Apr  5 17:52 /opt/lib/libssl.so -> libssl.so.0.9.8
lrwxrwxrwx 1 root root     15 Apr  5 18:13 /opt/lib/libssl.so.0 -> libssl.so.0.9.8
-r-xr-xr-x 1 root root 351912 Apr  5 17:52 /opt/lib/libssl.so.0.9.8

Также нужно поправить файл vsf_findlibs.sh (-lcrypt вместо -lcrypto):

if find_func SSL_library_init ssl.o; then
  echo "-lssl -lcrypto";
fi

Настройка VSFTPD

Создаем пользователей и правильно выставляем права (важно):

echo "ftp:x:2:ftp" >> /etc/group
echo "ftp:x:1000:2:Anonymous FTP user:/opt/home/ftp:/sbin/nologin" >> /etc/passwd

mkdir -p /opt/home/nobody
mkdir -p /opt/home/ftp
mkdir -p /opt/home/ftp/incoming

chown nobody:nobody /opt/home/nobody
chown -R ftp:ftp /opt/home/ftp

chmod 555 /opt/home/nobody
chmod 555 /opt/home/ftp
chmod 775 /opt/home/ftp/incoming

Конфигурация /opt/etc/vsftpd.conf:

# Example config file /opt/etc/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
listen=YES
check_shell=NO
chroot_local_user=YES
secure_chroot_dir=/opt/home/nobody
anon_root=/opt/home/ftp
convert_charset_enable=1
local_charset=UTF-8
remote_charset=WIN1251
syslog_enable=YES
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
vsftpd_log_file=/opt/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format
#xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=nobody
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that turning on ascii_download_enable enables malicious remote parties
# to consume your I/O resources, by issuing the command "SIZE /big/file" in
# ASCII mode.
# These ASCII options are split into upload and download because you may wish
# to enable ASCII uploads (to prevent uploaded scripts etc. from breaking),
# without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be
# on the client anyway..
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
ftpd_banner=Welcome.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/opt/etc/vsftpd.banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/opt/etc/vsftpd.chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
ls_recurse_enable=YES

Запускаем:

/opt/sbin/vsftpd >/dev/null 2>&1 &

Пробуем логинится как anonymous. Если сервер отвечает 500 OOPS: child died, то, вероятно, что-то неправильно с правами доступа или путями.

Добавляем в автозапуск:

echo "/opt/sbin/vsftpd /opt/etc/vsftpd.conf >/dev/null 2>&1 &" > /opt/etc/init.d/S60vsftpd
chmod +x /opt/etc/init.d/S60vsftpd

Последний штрих - остановка системы, файл /usr/local/sbin/pre-shutdown:

if [ `pidof vsftpd` -ne "" ]; then
        $log 'Terminating vsftpd'
        /bin/kill `pidof vsftpd`
fi

Не забываю сделать

flashfs save && flashfs commit && flashfs enable

WL-500gP HP 2015 problems

Нудавно я писал про подключение HP LaserJet 2015 к WL-500gP. Ну, вот и нашлись проблемы:

  1. Печать PostScript не работает.

    При печати через драйвер PostScript рутер пишеть в лог такие строчки:

    [lpr.notice] p9100d[88]: Connection from 192.168.1.4 port 51240 accepted
    [kern.warning] kernel: printer.c: usblp0: nonzero read/write bulk status received: -71
    [kern.err] kernel: printer.c: usblp0: error -71 reading printer status
    
  2. Печать больших документов не работает. Даже через PCL 5/6.

    В логе анологичные строки и я подозреваю, что это, как и в первом случае, связанно с нехваткой оперативной памяти устройства.

Что тут еще говорить? Попытаюсь еще через CUPS и HPLIP, но последний не удалось скомпилировать. Да, все из-за той же нехватки оперативной памяти.

Я уже себе с трудом представляю, как рутер способен работать при 1-2 Mb свободной памяти. Это конкретно сужает область его задач.

Hacking WL-500gP Part 1

Ну, вот я и добрался до своего ненаглядного рутера WL500gP. За последние пару дней на плечи ему свалилось немало:

  1. SSH
  2. 4 Gb Flash
  3. Установка пакетов
  4. syslog-ng
  5. Создание пользователей
  6. VSFTPD
  7. Samba 3
  8. Cron
  9. Firewall

Все это поверх прошивки от Олега. Рекомендую глянуть на инструкцию по установке. Итак, по порядку.

Подготовка

Возможность управлять загрузкой рутера по-сути одна - файлы /usr/local/sbin/post-*, которые выполняются в таком порядке:

  1. post-firewall

    Выполняется сразу после инициализации сетевых устройств. Скрипту система передает параметры - WAN-интерфейс, WAN-адрес, Bridge-интерфейс, Bridge-адрес:

    /usr/local/sbin/post-firewall vlan1 wan.ip.ad.dr br0 lan.ip.ad.dr
    
  2. post-boot

    Параметрами не интересовался.

  3. pre-mount

    Параметрами не интересовался. Выполняется только, если есть что монтировать.

  4. post-mount

    Параметрами не интересовался. Выполняется только, если есть что монтировать.

  5. pre-shutdown (при перегрузке рутера)

    Параметрами не интересовался.

Я создал файл /usr/local/sbin/post-include с полезными переменными такого содержания:

#!/bin/sh

self=`basename $0`
log="/usr/bin/logger -t $self"

Изначально каждый файл /usr/local/sbin/post-* у меня выглядит так:

#!/bin/sh

. "`dirname $0`/post-include"

$log 'Begin'

# initialization here

$log 'End'

А /usr/local/sbin/pre-shutdown так:

#!/bin/sh

. "`dirname $0`/post-include"

[ -x /opt/bin/logger ] && log="/opt/bin/logger -p Syslog.Alert"

$log 'Shutting down system.'

# BEGIN services termination
if [ `pidof vsftpd` -ne "" ]; then
        $log 'Terminating vsftpd'
        /bin/kill `pidof vsftpd`
fi

if [ `pidof smbd` -ne "" ]; then
        $log 'Terminating smbd'
        /bin/kill `pidof smbd`
fi
if [ `pidof nmbd` -ne "" ]; then
        $log 'Terminating nmbd'
        /bin/kill `pidof nmbd`
fi

if [ -f /var/run/lighttpd.pid ]; then
        $log 'Terminating lighhttpd'
        /bin/kill `cat /var/run/lighttpd.pid`
fi

if [ -f /opt/var/run/cron.pid ]; then
        $log 'Terminating cron'
        /bin/kill `cat /opt/var/run/cron.pid`
fi

if [ -f /var/run/syslog-ng.pid ]; then
        $log 'Terminating syslog-ng'
        /bin/kill `cat /var/run/syslog-ng.pid`
fi

if [ -f /var/run/dropbear.pid ]; then
        $log 'Terminating dropbear'
        /bin/kill `cat /var/run/dropbear.pid`
fi

# END services termination

if [ -d /tmp/harddisk/opt ]; then
        $log 'Unmounting FlashFS'
        /bin/umount /tmp/harddisk
        /bin/umount /opt
fi

pre-shutdown аккуранто останавливает все службы и в конце размонтирует файловую систему.

Для сохранения файлов не с флешки в ПЗУ устройства необходимо выполнить следующую команду: flashfs save && flashfs commit && flashfs enable. Я постоянно забывал сохраняться и после перегрузки набивал изменения снова. Для сохранения файлов в других каталогах необходимо добавить пути в файл /usr/local/.files.

Исполняемым файлам не забывать делать chmod +x file.

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

Для автоматического запуска SSH сервера (dropbear) нужно добавить в файл /usr/local/sbin/post-boot следующие строчки:

$log 'Starting dropbear SSH server'
/usr/sbin/dropbear 1>/dev/null 2>&1

В конце:

flashfs save && flashfs commit && flashfs enable

Также необходимо добавить парочку правил в файрвол. Для этого правим /usr/local/sbin/post-firewall:

$log 'SSH rules'
iptables -I INPUT 5 -i $1 -p tcp -d $2 --dport 22 -m state --syn --state NEW -m limit --limit 2/minute --limit-burst 1 -j LOG --log-prefix "SSH Brute force attack: " --log-level 6
iptables -I INPUT 6 -i $1 -p tcp -d $2 --dport 22 -m state --syn --state NEW -m limit --limit 2/minute --limit-burst 1 -j ACCEPT
iptables -I INPUT 7 -i $1 -p tcp -d $2 --dport 22 -m state --syn --state NEW -j DROP

4 Gb Flash

Флешка нужна для установки дополнительного софта, ну, и для хранения файлов, конечно. Также устройство может загружаться с флешки! Но мне это пока не нужно.

Для пробы имелась 512 Mb флешка, на которую ядро сильно ругалось. Пришлось ставить 4 Gb Pretec. Поскольку из самого устройства разбить на разделы не получилось, я использовал Acronis Disk Director 10. Получилось два раздела - Linux swap на 100 с копейками мегабайт и Linux ext3 - остальное.

Через веб морду я отключил встроенный FTP и Samba. В результате не загружались необходимые модули ядра - scsi_mod, sd_mod, usb-storage (как последствие - не выполнялись скрипты pre-mount и post-mount). Их нужно загрузить самостоятельно в /usr/local/sbin/post-boot:

/sbin/insmod scsi_mod
/sbin/insmod sd_mod
/sbin/insmod usb-storage

Что в результате:

  • Ядро пишет: /dev/scsi/host0/bus0/target0/lun0: p2 < p5 p6 >

    p5 (/dev/discs/disc0/part5) - swap, p6 (/dev/discs/disc0/part6) - ext3

  • /dev/discs/disc0/part6 смонтирован как /tmp/harddisk
  • На ext3 создана простейшая структура Unix-каталогов

Установка пакетов

В системе имеется простенький менеджер пакетов - ipkg. По умолчанию весь софт ставится в /opt, поэтому нужно, чтобы в /opt был смонтирован корень ext3. Для этого изменяем /usr/local/sbin/post-mount (вставляем в самое начало после $log 'Begin') :

[ -d /tmp/harddisk/opt ] && $log 'Mounting /opt' && /bin/mount -o bind,sync,noatime,rw /tmp/harddisk /opt

Выполнить (все это описано здесь):

ipkg.sh update
ipkg.sh install ipkg-opt
ipkg update
echo "/etc/ipkg.conf" >> /usr/local/.files
flashfs save && flashfs commit && flashfs enable

Ставим необходимый софт:

ipkg install adduser
ipkg install bash
ipkg install coreutils
ipkg install findutils
ipkg install grep
ipkg install less
ipkg install mc
ipkg install screen
ipkg install util-linux
ipkg install vim
ipkg install which
ipkg install wget-ssl

syslog-ng

syslogd я сразу меняю на syslog-ng. Ставим:

ipkg install syslog-ng
cd /opt/etc
ln -s syslog-ng/syslog-ng.conf syslog-ng.conf

Добавляем в /usr/local/sbin/post-mount:

if [ -x /opt/sbin/syslog-ng ]; then
        $log 'Replacing syslogd'
        [ -x /opt/bin/unlink ] && /opt/bin/unlink /tmp/syslog.log && /opt/bin/ln -s /opt/var/log/all.log /tmp/syslog.log
        kill `/bin/pidof syslogd`
fi

Это, естественно, должно выполнятся до запуска syslog-ng.

\

Не забываем также про остановку системы, файл /usr/local/sbin/pre-shutdown (как можно позже, но перед размонтированием):

if [ -f /var/run/syslog-ng.pid ]; then
        $log 'Terminating syslog-ng'
        /bin/kill `cat /var/run/syslog-ng.pid`
fi

rc.unslung и init.d

Многие пакеты закидывают скрипт запуска службы в /opt/etc/init.d/ с названием SXYService. Нужен механизм, который будет выполнять их в правильном порядке. Создаем исполняемый файл /opt/etc/init.d/rc.unslung с таким содержимым:

#!/bin/sh

# Start all init scripts in /opt/etc/init.d
# executing them in numerical order.
#
for i in /opt/etc/init.d/S??* ;do

    [ ! -f "$i" ] && continue
    [ ! -x "$i" ] && continue

    case "$i" in
       *.sh)
           # Source shell script for speed.
           (
               trap - INT QUIT TSTP
               set start
               . $i
           )
           ;;
       *)
           # No sh extension, so fork subprocess.
           $i start
           ;;
   esac
done

Добавляем вызов /opt/etc/init.d/rc.unslung в конец /usr/local/sbin/post-mount:

[ -x /opt/etc/init.d/rc.unslung ] && $log 'Running rc.unslung' && /opt/etc/init.d/rc.unslung | $log

Запуск syslog-ng из init.d

Теперь происходит автоматически благодаря /opt/etc/init.d/S01syslog-ng.

Настройка syslog-ng

Мой syslog-ng помимо файлов логирует еще и на рабочую машину, где стоит Kiwi Syslog в качестве приемника. Просто привожу конфиг /opt/etc/syslog-ng.conf:

#
# Syslog-ng example configuration for for NSLU2 Unslung 3.x
#
# Copyright (c) 1999 anonymous
# Copyright (c) 1999 Balazs Scheidler
# $Id: syslog-ng.conf 5159 2007-01-12 20:37:44Z fcarolo $
#
# Syslog-ng configuration file, compatible with default Debian syslogd
# installation.
#

options {
        long_hostnames(off);
        sync(0);
        stats(0);
        create_dirs(yes);
        time_reopen(10);
        log_fifo_size(2000);
};

source src {
        pipe("/proc/kmsg" log_prefix("kernel: ") );
        unix-stream("/dev/log");
        internal();
};
#source net { udp(); };

destination authlog { file("/opt/var/log/auth.log"); };
destination syslog { file("/opt/var/log/syslog"); };
destination cron { file("/opt/var/log/cron.log"); };
destination daemon { file("/opt/var/log/daemon.log"); };
destination kern { file("/opt/var/log/kern.log"); };
destination lpr { file("/opt/var/log/lpr.log"); };
destination user { file("/opt/var/log/user.log"); };
destination uucp { file("/opt/var/log/uucp.log"); };
destination ppp { file("/opt/var/log/ppp.log"); };
destination mail { file("/opt/var/log/mail.log"); };

destination mailinfo { file("/opt/var/log/mail.info"); };
destination mailwarn { file("/opt/var/log/mail.warn"); };
destination mailerr { file("/opt/var/log/mail.err"); };

destination newscrit { file("/opt/var/log/news/news.crit"); };
destination newserr { file("/opt/var/log/news/news.err"); };
destination newsnotice { file("/opt/var/log/news/news.notice"); };

destination debug { file("/opt/var/log/debug"); };
destination messages { file("/opt/var/log/messages"); };

destination udp_machinename { udp( your.ip.add.rr port(514) template("$DATE $FULLHOST [$FACILITY.$LEVEL] $MESSAGE\n") template_escape(no) ); };
destination alllog { file("/opt/var/log/all_$R_YEAR-$R_MONTH-$R_DAY.log" template("$DATE $FULLHOST [$FACILITY.$LEVEL] $MESSAGE\n") template_escape(no) ); };

filter f_auth { facility(auth); };
filter f_authpriv { facility(auth, authpriv); };
filter f_syslog { not facility(authpriv, mail); };
filter f_cron { facility(cron); };
filter f_daemon { facility(daemon); };
filter f_kern { facility(kern); };
filter f_lpr { facility(lpr); };
filter f_mail { facility(mail); };
filter f_user { facility(user); };
filter f_uucp { facility(cron); };
filter f_ppp { facility(local2); };
filter f_news { facility(news); };
filter f_debug { not facility(auth, authpriv, news, mail); };
filter f_messages { level(info..warn) and not facility(auth, authpriv, mail, news); };
filter f_emergency { level(emerg); };

filter f_info { level(info); };
filter f_notice { level(notice); };
filter f_warn { level(warn); };
filter f_crit { level(crit); };
filter f_err { level(err); };

log { source(src); filter(f_authpriv); destination(authlog); };
log { source(src); filter(f_syslog); destination(syslog); };
log { source(src); filter(f_cron); destination(cron); };
log { source(src); filter(f_daemon); destination(daemon); };
log { source(src); filter(f_kern); destination(kern); };
log { source(src); filter(f_lpr); destination(lpr); };
log { source(src); filter(f_mail); destination(mail); };
log { source(src); filter(f_user); destination(user); };
log { source(src); filter(f_uucp); destination(uucp); };
log { source(src); filter(f_mail); filter(f_info); destination(mailinfo); };
log { source(src); filter(f_mail); filter(f_warn); destination(mailwarn); };
log { source(src); filter(f_mail); filter(f_err); destination(mailerr); };
log { source(src); filter(f_news); filter(f_crit); destination(newscrit); };
log { source(src); filter(f_news); filter(f_err); destination(newserr); };
log { source(src); filter(f_news); filter(f_notice); destination(newsnotice); };
log { source(src); filter(f_debug); destination(debug); };
log { source(src); filter(f_messages); destination(messages); };
log { source(src); filter(f_ppp); destination(ppp); };

log { source(src); destination(udp_machinename); };
log { source(src); destination(alllog); };

Создание пользователей

Добавляю командой adduser (можно и напрямую править /etc/passwd и /etc/group). Не забываю сделать

echo "/etc/passwd" >> /usr/local/.files
echo "/etc/group" >> /usr/local/.files
flashfs save && flashfs commit && flashfs enable

Домашние папки создаю в /opt/home.

HP LaserJet 2015 and WL-500gP

ASUS WL-500g Premium ASUS WL-500g Premium я купил уже давненько, но все еще не "занимался" ним, как я любил заниматься с Линупсами.

HP LaserJet 2015 Сейчас возникла необходимость расшарить этот замечательный принтер HP LaserJet 2015 на два компа.

Покопавшись в гугле и в книжечке рутера было объявлено, что оно поддерживает принтеры, но не все. Поиск списка конкретных моделей успехом не увенчался, поэтому я решил просто попробовать.

Подключение принтера HP LaserJet 2015 к WL500gP и настройка маршрутизатора

Первое, что необходимо сделать, - подключить принтер через USB к порту рутера. В админке System Setup --> Services разрешить Enable LPR printing и Enable RAW printing. Samba для печати мне нафиг не нужна.

Ядро с радостью сообщает, что увидело принтер:

Jan 16 14:58:38 kernel: hub.c: new USB device 01:03.2-2, assigned address 3
Jan 16 14:58:39 kernel: printer.c: usblp0: USB Bidirectional printer dev 3 if 0 alt 0 proto 2 vid 0x03F0 pid 0x3817
Jan 16 14:58:39 kernel: printer.c: usblp0 Device ID string [170]='MFG:Hewlett-Packard;CMD:PJL,PML,POSTSCRIPT,PCLXL,PCL;MDL:HP LaserJet P2015 Series;CLS:PRINTER;DES:Hewlett-Packard LaserJet P2015 Series;MEM:MEM=23MB;COMMENT:RES=1200x1;'

В админке, правда, Status & Log --> Status не отображает модель и статус принтера. По началу я расстроился, подумал, что ничего не получится, но, все-таки, не остановился на достигнутом. Смотрю netstat -l:

tcp        0      0 *:printer               *:*                     LISTEN
tcp        0      0 *:laserjet              *:*                     LISTEN

Обана! Протокол laserjet, порт 9100! Перехожу к настройке принтера в Windows Vista и XP.

Добавление принтера в Windows Vista и XP

Windows Vista

  1. Иду в 'Control Panel\Printers' и делаю 'Add printer'. Далее 'Add a network, wireless or Bluetooth printer'.

    Choose a local or network printer

  2. Автоматически оно, понятное дело, ничего не нашло, поэтому смело жмем 'The printer that I want isn't listed'.

    Searching for available printers...

  3. Здесь выбираем 'Add a printer using a TCP/IP address or hostname'.

    Find printer by name or TCP/IP address

  4. Вбиваем IP адрес WL500gP.

    Type a printer hostname or IP address

  5. После длительной мозговой деятелности Windows говорит 'Additional port information required' и просит помочь в выборе правильного типа устройства. Нам нужен 'Hewlett Packard Jet Direct'.

    Additional port information required

  6. Наконец просят показать драйвера устройства. Я скачал с офсайта и указал.

    Install the printer driver

  7. Последний шаг - ввод имени принтера.

Как всегда, печатаем тестовую страничку. У меня все окей, а у тебя?

Windows XP

Процедура практически аналогична. Я, правда, делал не с нуля, а в текущих настройках принтера добавил сетевой порт и удалил старый - он мне больше не нужен!

Usability этого решения

Пока что проблем не возникало. Буду замечать грабли - обновлю страничку. В первую очередь интересует работа со спулером, очередью печати и поддержка PostScript 2 или 3.

UPDATE: WL-500gP HP 2015 problems.

Home router with WAN, LAN, WiFi and Linux

Я долго собирался купить домой маленький маршрутизатор. Хотел WiFi, поддержку IDE диска и, самое главное, - Linux, который можно настроить из консоли. На форумах узнал, что лучшим решением является серия ASUS WL-500.

Уже несколько дней, как приобрел ASUS WL-500g Premium. ASUS WL-500g Premium

В наличии:
  • 1 100Mbit WAN
  • 4 100Mbit LAN
  • WiFi типа g (54Mbit)
  • 2 USB
  • Linux
С поддержкой IDE у него не сложилось, да и смысла нет - производительность такого решения крайне низкая.

Настраивается за несколько минут через веб интерфейс, позволяет принудительно установить MAC адрес сетевой карты WAN (я был очень доволен этой функцией т.к. мой провайдер привязывается к MAC сетевой карты). Есть проброс портов, простенький файрвол, поддержка USB-принтера, DHCP-сервер. Короче говоря, его функций хватит для рядового пользователя с головой. К примеру, если вы беспокоитесь о торрентах из-за внутреннего айпи, - не надо, рутер поддерживает UPnP, поэтому uTorrent заработает на отдачу без проблем.

Я, как бывший любитель UNIX, сразу же поставил на устройство альтернативную прошивку от Олега. Самым важным для меня оказалось наличие telnet сервера для доступа к консоли устройства. Дальше - интереснее, т.к. с архитектурой MIPS я не знаком и опыта работы с подобными железяками у меня не было. NVRAM, FlashFS и много нового. Благо, на форуме настройка девайса расписана очень прилично. Пока что я поднял лишь SSH сервер, в будущем планирую сделать из WL-500g полноценную качалку (*ttp, torrent). Но для этого нужно устройство хранения данных и много часов хардфакинга.

Напоследок, несколько неприятных моментов... Я расчитывал, что моя мама ASUS P5B Deluxe с встроенной карточкой WiFi сможет нормально работать без проводов. Но, не судьба, - при скорости больше 1М/с мышка начинает дергаться. Подозреваю, что плата генерирует слишком много прерываний.

Copyright 2007-2011 Chabster