30 окт. 2010 г.

Настройка DIR-300 для ByFly и поднятие 2-х ppoe соединений

ВНИМАНИЕ!! ДАННАЯ СТАТЬЯ ПРЕДНАЗНАЧАЕТСЯ ТОЛЬКО ДЛЯ ОЗНАКОМЛЕНИЯ И АВТОР НЕ НЕСЕТ НИКАКОЙ ОТВЕТСВЕННОСТИ В СЛУЧАЕ ИСПОЛЬЗОВАНИЯ МАТЕРИАЛОВ ДАННОЙ СТАТЬИ 

Приобрел на днях вай-фай роутер D-Link D-300 и решил его настроить для собственных нужд(поднятие 2-х соединений для интернета и гостевого доступа, управление всей подсетью). По умолчанию DIR-300 разрешает поднимать только одно pppoe соединение, но на помощь пришла прошивка DD-WRT. Прошивка роутера под ОС Windows  производиться по инструкции, под ОС Linux необходимо настроить и запустить tftp сервер. В моем случае это был atftp. Устанавливаем оный при помощи #zypper in atftp.
После лезем в файл настройки /etc/sysconfig/atftpd и в  ATFTPD_DIRECTORY указываем путь к папке, в которой у нас будут лежать необходимые файлы необходимые для прошивки(ap61.ram, ap61.rom,linux.bin, которые берем здесь для DIR-300), в моем случает - /srv/tftp. Запукаем сервер atftp
#/etc/atftpd start и прошиваем следуя инструкциям.
Данная прошивка позволяет также соединять две и более точки в беспроводную сеть по технологии WDS. Т.к. у меня модем "Промсвязь 200 А", который построен на базе ZTE zte w300, который тоже теоретически может участвовать в построении беспроводной сети по технологии WDS, были попытки соединить их посредством Wi-Fi, хотя оные не увенчались успехом(после знающие люди сказали что к сожалению "Промсвязь 200 А" не держит WDS). Но все таки можно расширить зону покрытия при помощи соединения модема и роутера посредством кабеля.
Для правильной работы необходимо перевести модем в режим моста.
И настроить dhcp(если оный будет использоваться) на дублирование с нашего роутера

Далее настраивается сам роутер. Для поднятия двух соединений необходимо в administration -> commands
ввести следующий текст
#!/bin/sh

## VLAN - сетевой интерфейс, его можно посмотреть через ifconfig на роутере ##

VLAN="br0"
GUEST_PPP="ppp0"
INET_PPP="ppp1"

if [ ${VLAN} ]; then
ifconfig ${VLAN} up
sleep 1
else
exit
fi


## файл для настройки интернет соединения
echo "plugin /usr/lib/rp-pppoe.so
nic-${VLAN}
noccp
nomppc
noipdefault
noauth
defaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
user '№Договора@beltel.by'
password 'пароль'
default-asyncmap
mtu 1492
mru 1492
persist
maxfail 0
holdoff 30
unit 1
lcp-echo-interval 10
lcp-echo-failure 5" > /tmp/int.pppoe

# файл настройки для гостевого соединения
echo "plugin /usr/lib/rp-pppoe.so
nic-${VLAN}
noccp
nomppc
noipdefault
noauth
nodefaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
user '№Договора@guest'
password 'пароль'
default-asyncmap
mtu 1492
mru 1492
persist
maxfail 0
holdoff 30
unit 0
lcp-echo-interval 10
lcp-echo-failure 5" > /tmp/guest.pppoe

## поднятие соединений

pppd file /tmp/guest.pppoe
sleep 5
pppd file /tmp/int.pppoe
sleep 5

## настройка для работы интернета в целом
## 192.168.100.48/28 - моя подсеть, 192.168.100.53 - мой IP

GUEST_IP="`ifconfig |grep ${GUEST_PPP} -A1 |grep -e addr:| awk '{print($2)}'| awk -F : '{print($2)}'`"

iptables -A FORWARD -t filter -i ${VLAN} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -t filter -i ${GUEST_PPP} -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o ${GUEST_PPP} -s 192.168.100.48/28 -d 0/0 -j MASQUERADE
iptables -A FORWARD -t filter -i ${INET_PPP} -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o ${INET_PPP} -s 192.168.100.48/28 -d 0/0 -j MASQUERADE


### настройка для возможности качать с торрентов ( в даннмо случае udp:60881 и 60884, tcp: 60885)
iptables -t nat -A PREROUTING -p tcp -i ${GUEST_PPP} -d ${GUEST_IP} --dport 60885 -j DNAT --to-destination 192.168.100.53:60885
iptables -t nat -A PREROUTING -p udp -i ${GUEST_PPP} -d ${GUEST_IP} --dport 60881 -j DNAT --to-destination 192.168.100.53:60881
iptables -t nat -A PREROUTING -p udp -i ${GUEST_PPP} -d ${GUEST_IP} --dport 60884 -j DNAT --to-destination 192.168.100.53:60884

### Несмотря на наличие в настройках соединений default route - он все равно не сбрасывается
route del default
sleep 3
route add default ${INET_PPP}
sleep 3


## маршруты к гостевым ресурсам для минска, согласно батнику на FTP байфлая
route add -net 86.57.151.0 netmask 255.255.255.224 ${GUEST_PPP}
route add -host 86.57.251.28 ${GUEST_PPP}
route add -host 86.57.253.1 ${GUEST_PPP}
route add -host 86.57.253.1 ${GUEST_PPP}
route add -host 193.232.248.79 ${GUEST_PPP}
route add -host 193.232.248.80 ${GUEST_PPP}
route add -host 82.209.245.151 ${GUEST_PPP}
route add -host 194.158.206.240 ${GUEST_PPP}
route add -host 194.158.206.241 ${GUEST_PPP}
route add -host 194.158.206.246 ${GUEST_PPP}
route add -host 194.158.202.59 ${GUEST_PPP}
route add -host 82.209.195.15 ${GUEST_PPP}
route add -net 86.57.250.0 netmask 255.255.254.0 ${GUEST_PPP}
route add -net 86.57.246.0 netmask 255.255.255.0 ${GUEST_PPP}
route add -net 93.84.112.0 netmask 255.255.248.0 ${GUEST_PPP}
route add -net 178.124.128.0 netmask 255.255.248.0 ${GUEST_PPP}
route add -net 91.149.189.0 netmask 255.255.255.128 ${GUEST_PPP}
route add -net 91.149.189.128 netmask 255.255.255.192 ${GUEST_PPP}
route add -net 93.125.53.0 netmask 255.255.255.0 ${GUEST_PPP}
route add -net 178.172.148.0 netmask 255.255.255.0 ${GUEST_PPP}
route add -net 91.149.157.0 netmask 255.255.255.128 ${GUEST_PPP}
route add -net 91.149.157.192 netmask 255.255.255.192 ${GUEST_PPP}
route add -net 93.125.30.0 netmask 255.255.254.0 ${GUEST_PPP}
route add -host 194.158.199.177 ${GUEST_PPP}
route add -host 82.209.240.241 ${GUEST_PPP}
route add -host 82.209.243.241 ${GUEST_PPP}

И нажать на кнопку save startup, после чего - перезагрузить роутер(мин 5 ему на это потребуется)
После данных манипуляций работает и гость и платник.

UPD: Для просмотра IPTV от Zala.by при подключении приставки к нашему dir-300 необходимо в загрузочный скрипт добавить
iptables -t nat -A PREROUTING -m mac --mac-source хх:хх:хх:хх:хх:хх -j DNAT --to-destination 192.168.100.50
 где хх:хх:хх:хх:хх:хх - мак адрес нашей приставки(указан в договоре), 192.168.100.50 - адрес нашего модема. Вроде все должно при этом работать, но при включении IPTV  - пропадает интернет и вешается маршрутизатор, а при длительном просмотре - отваливается интернет соединение и вовсе - так что все равно придется подключать приставку от IPTV напрямую к модему.
Upd: обновленная версия скрипта запуска лежит здесь

18 окт. 2010 г.

Установка и тестирование OCR tesseract

Прочитал довече статейку о выпуске новой версии tesseract - системы оптического распознования текста c открытым исходным кодом и решил установить и проверить в действии. На сайте в ридми написано что для корректной работы необходимы следующие библиотеки: libpng, libjpeg, libtiff, zlib. Установил все это при помощи комманды:
zypper in libpng12-devel libjpeg-devel libtiff-devel zlib-dev
Для корректной работы также необходим пакет leptonica  - ПО с открытым исходным кодом, необходимый для приложений, работающих и анализирующих изображения. Загружаем leptonica, разархивируем и устанавливаем стандартным способом:
./configure && make && make install && ldconfig
Разархивируем tesseract и устанавливаем
./configure && make && make install && ldconfig
Скачиваем языки для распознавания (tesseract-..tar.gz ) и разархивируем в  /usr/local/share/tessdata. И вуаля - можно использовать tesseract для распознования текстов.
Тестирование.
Распознование производится из коммандной строки по шаблону:
tesseract картинка выходной файл [-l язык]
 Для тестирования использовался первый попавшийся  под руку лист с текстом (фотографировался цифровым фотоаппаратом с разрешением 3000х4000)
При попытке распознования tesseract 1.jpg 1txt -l rus получил ошибку
name_to_image_type:Error:Unrecognized image type:1.jpg
IMAGE::read_header:Error:Can't read this image type:1.jpg
Read of file 1.jpg failed.
В результате пришлось конвертировать файл в формат tiff( размер файла увеличился с 2.6 Мб до 45.8 Мб). После данной манипуляции файл распознался, но сносно. При попытке кадрирования, для захвата  только листа с текстом - результат получился хуже.
Скорее всего при сканировании документов через сканер и распознования оных результ получится по лучше, но проверить сие утверждение не имею физической возможности.

12 окт. 2010 г.

Kwin падает на KDE > 4.5

После долгих мучений, связанных с постоянным падением Kwin, переустановок пакетов Qt, KDE, Mesa(т.к. являюсь обладателем встроенной видеокарты от Intel), alsa(т.к. и на данные дрова тоже грешил) на одном из форумов был случайным образом найден ответ на причины падения Kwin - для стабильной работы необходимо было включить в Параметрах системы -> эффекты рабочего стола -> дополнительно -> вертикальная синхронизация(сия манипуляция проводилась на Opensuse 11.3 x64 - в других дистрибах должно быть что то подобное). После ребута - уже сутки аптайм :)