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

пятница, 22 сентября 2017 г.

Мой RVi-R04LA White хакнули.

У меня вместо глазка установлен видеорегистратор. Очень удобно. Не нужно прижиматься к глазку двери. На мониторе видно кто пришел и все такое.

В качестве видеорегистратора я использую RVi-R04LA White. Это клон китайского регистратора, выпущенный под торговой маркой нашей российской компании RVi. Специалисты, судя по всему, сделали перевод интерфейса на русский язык, продали ее и подобные китайские клоны и написали про себя мегапафосные строки про то, как они формируют уверенность и глубоко понимают потребности.
У этих господ из RVi есть форум.

DVR я установил в 2014 году и с тех пор она исправно трудилась.

Напрягало, что компания не давала пароль root.
Да и черт с ним, думал я. Не такое уж важное устройство, чтоб по этому поводу сильно переживать.

Ну и вот, накануне случилось то, что должно было случиться: эту штуку хакнули. Я просыпаюсь, а у меня черные экраны и подписи к ним: HACKED.
 

Прикольно так, ты ни сном ни духом, а твои камеры смотрит китайский брат. Хорошо, что мои то на лестничную клетку выведены, а те у кого камеры установлены в приватной зоне? Это как? Господа из RVi, расскажите мне про вашу миссию.

Ну да ладно, смотрим что случилось. Заходим в информацию о сети. Замечательно. Мой DVR смотрит не на мой рацтер а на какой то левй адрес в сети. По второму экрану видим, что адрес не мертвый, а он забирает трафк от моего DVI.



Захожу в настройки сети. Да. Все в порядке. Меня перенастроили.



Идем в форум RVi. Там многочисленные стенания и мольбы о помощи и сообщения от администраторов, что компания работает над этой проблемой.
Ага. Они оставили бэкдор для себя. И через этот бэкдор (или через еще один) китайцы их меня наказали.

Смотрим лог устройства. Видно, что к моему устройству подключился некто с адреса 195.209.58.2. Судя по всему удаленно перепрошил и перезагрузил DVR.
Затем, в 10 часов зашли с адресов 46.249.21.95, 109.197.230.38. Добавили своего пользователя и уже потом изменили конфигурацию сети.
Из сообщений на форуме видно, что смена пароля спасает примерно часа на три.





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

Upd. Спецы из Rvi выпустили обновление, которое устраняет взлом регистраторов

среда, 11 января 2017 г.

Гайд по обеспечению безопасности Linux-системы


Коллега на работе показал мне статью из журнала Хакер по защите систем на базе Linux.
Статья просто великолепна, и, учитывая, что интернет сейчас активно перлюстрируется размещаю ее у себя в блоге. На всякий случай




Введение
Пароль
Шифруемся
Заметаем следы
Предотвращение BruteForce-атак
Угроза извне
Выявляем вторжения
Кто-то наследил…
За пределами
Луковая маршрутизация
Борьба с флудом
Выводы


Никто из нас не хочет, чтобы личная информация попала в чужие руки. Но как защитить систему от атак и хищений данных? Неужели придется читать километровые мануалы по настройке и алгоритмам шифрования? Совсем не обязательно. В этой статье я расскажу, как сделать Linux-систему безопасной буквально за 30 минут.


Введение

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

Когда я потерял смартфон, мне сильно повезло, что установленный на него антивор оказался работоспособным и позволил удаленно стереть все данные из памяти девайса. Когда я по невнимательности открыл SSH-порт на домашней машине с юзером без пароля (!) во внешний мир (!!), мне сильно повезло, что на машину пробрались скрипт-кидди, которые кроме смешной истории шелла не оставили никаких серьезных следов своего пребывания в системе. Когда я случайно опубликовал в интернете листинг со своим паролем от Gmail, мне сильно повезло, что нашелся добрый человек, который предупредил меня об этом.

Может быть, я и раздолбай, но я твердо уверен, что подобные казусы случались со многими, кто читает эти строки. И хорошо, если эти люди, в отличие от меня, серьезно позаботились о защите своей машины. Ведь антивор мог бы и не сработать, и вместо скрипт-кидди в машину могли пробраться серьезные люди, и потерять я мог не смартфон, а ноутбук, на котором кроме пароля пользователя не было никакой другой защиты. Нет, полагаться на одну двухфакторную аутентификацию Google и дурацкие пароли в наш век определенно не стоит, нужно что-то более серьезное.

Эта статья — гайд параноидального юниксоида, посвященный тотальной защите Linux-машины от всего и вся. Я не решусь сказать, что все описанное здесь обязательно к применению. Совсем наоборот, это сборник рецептов, информацию из которого можно использовать для защиты себя и данных на тех рубежах, где это нужно именно в твоей конкретной ситуации.


Пароль!

Все начинается с паролей. Они везде: в окне логина в Linux-дистрибутиве, в формах регистрации на интернет-сайтах, на FTP- и SSH-серверах и на экране блокировки смартфона. Стандарт для паролей сегодня — это 8–12 символов в разном регистре с включением цифр. Генерировать такие пароли своим собственным умом довольно утомительно, но есть простой способ сделать это автоматически:

$ openssl rand -base64 6

Никаких внешних приложений, никаких расширений для веб-браузеров, OpenSSL есть на любой машине. Хотя, если кому-то будет удобней, он может установить и использовать для этих целей pwgen (поговаривают, пароль получится более стойким):

$ pwgen -Bs 8 1

Где хранить пароли? Сегодня у каждого юзера их так много, что хранить все в голове просто невозможно. Довериться системе автосохранения браузера? Можно, но кто знает, как Google или Mozilla будет к ним относиться. Сноуден рассказывал, что не очень хорошо. Поэтому пароли надо хранить на самой машине в зашифрованном контейнере. Отцы-основатели рекомендуют использовать для этого KeePassX. Штука графическая, что не сильно нравится самим отцам-основателям, но зато работает везде, включая известный гугль-зонд Android (KeePassDroid). Останется лишь перекинуть базу с паролями куда надо.


Шифруемся

Шифрование — как много в этом слове… Сегодня шифрование везде и нигде одновременно. Нас заставляют пользоваться HTTPS-версиями сайтов, а нам все равно. Нам говорят: «Шифруй домашний каталог», а мы говорим: «Потом настрою». Нам говорят: «Любимое занятие сотрудников Dropbox — это ржать над личными фотками юзеров», а мы: «Пусть ржут». Между тем шифрование — это единственное абсолютное средство защиты на сегодняшний день. А еще оно очень доступно и сглаживает морщины.

В Linux можно найти тонны средств шифрования всего и вся, от разделов на жестком диске до одиночных файлов. Три наиболее известных и проверенных временем инструмента — это dm-crypt/LUKS, ecryptfs и encfs. Первый шифрует целые диски и разделы, второй и третий — каталоги с важной информацией, каждый файл в отдельности, что очень удобно, если потребуется делать инкрементальные бэкапы или использовать в связке с Dropbox. Также есть несколько менее известных инструментов, включая TrueCrypt например.

Сразу оговорюсь, что шифровать весь диск целиком — задача сложная и, что самое важное, бесполезная. Ничего особо конфиденциального в корневом каталоге нет и быть не может, а вот домашний каталог и своп просто кладезь инфы. Причем второй даже больше, чем первый, так как туда могут попасть данные и пароли уже в расшифрованном виде (нормальные программеры запрещают системе скидывать такие данные в своп, но таких меньшинство). Настроить шифрование и того и другого очень просто, достаточно установить инструменты ecrypts:

$ sudo apt-get install ecryptfs-utils

И, собственно, включить шифрование:

$ sudo ecryptfs-setup-swap
$ ecryptfs-setup-private

Далее достаточно ввести свой пароль, используемый для логина, и перезайти в систему. Да, все действительно так просто. Первая команда зашифрует и перемонтирует своп, изменив нужные строки в /etc/fstab. Вторая — создаст каталоги ~/.Private и ~/Private, в которых будут храниться зашифрованные и расшифрованные файлы соответственно. При входе в систему будет срабатывать PAM-модуль pam_ecryptfs.so, который смонтирует первый каталог на второй с прозрачным шифрованием данных. После размонтирования ~/Private окажется пуст, а ~/.Private будет содержать все файлы в зашифрованном виде.

Не возбраняется шифровать и весь домашний каталог целиком. Производительность при этом упадет не сильно, зато под защитой окажутся вообще все файлы, включая тот же сетевой каталог ~/Dropbox. Делается это так:

# ecryptfs-migrate-home -u vasya

Кстати, места на диске должно быть в 2,5 раза больше, чем данных у vasya, так что рекомендую заранее почиститься. После завершения операции следует сразу войти под юзером vasya и проверить работоспособность:

$ mount | grep Private
/home/vasya/.Private on /home/vasya type ecryptfs ...

Если все ок, незашифрованную копию данных можно затереть:

$ sudo rm -r /home/vasya.*

Ecryptfs предупреждает нас


Заметаем следы

ОK, пароли в надежном месте, личные файлы тоже, что теперь? А теперь мы должны позаботиться о том, чтобы какие-то куски наших личных данных не попали в чужие руки. Ни для кого не секрет, что при удалении файла его актуальное содержимое остается на носителе даже в том случае, если после этого произвести форматирование. Наши зашифрованные данные будут в сохранности даже после стирания, но как быть с флешками и прочими картами памяти? Здесь нам пригодится утилита srm, которая не просто удаляет файл, но и заполняет оставшиеся после него блоки данных мусором:

$ sudo apt-get install secure-delete
$ srm секретный-файл.txt home-video.mpg

Как всегда, все просто до безобразия. Далее, если речь идет о всем носителе, то можно воспользоваться старым добрым dd:

# dd if=/dev/zero of=/dev/sdb

Эта команда сотрет все данные на флешке sdb. Далее останется создать таблицу разделов (с одним разделом) и отформатировать в нужную ФС. Использовать для этого рекомендуется fdisk и mkfs.vfat, но можно обойтись и графическим gparted.


Предотвращение BruteForce-атак

Fail2ban — демон, который просматривает логи на предмет попыток подобрать пароли к сетевым сервисам. Если такие попытки найдены, то подозрительный IP-адрес блокируется средствами iptables или TCP Wrappers. Сервис способен оповещать владельца хоста об инциденте по email и сбрасывать блокировку через заданное время. Изначально Fail2ban разрабатывался для защиты SSH, сегодня предлагаются готовые примеры для Apache, lighttpd, Postfix, exim, Cyrus IMAP, named и так далее. Причем один процесс Fail2ban может защищать сразу несколько сервисов.

В Ubuntu/Debian для установки набираем:

# apt-get install fail2ban

Конфиги находятся в каталоге /etc/fail2ban. После изменения конфигурации следует перезапускать fail2ban командой:

# /etc/init.d/fail2ban restart

Угроза извне

Теперь позаботимся об угрозах, исходящих из недр всемирной паутины. Здесь я должен был бы начать рассказ об iptables и pf, запущенном на выделенной машине под управлением OpenBSD, но все это излишне, когда есть ipkungfu. Что это такое? Это скрипт, который произведет за нас всю грязную работу по конфигурированию брандмауэра, без необходимости составлять километровые списки правил. Устанавливаем:

$ sudo apt-get install ipkungfu

Правим конфиг:

$ sudo vi /etc/ipkungfu/ipkungfu.conf
# Локальная сеть, если есть — пишем адрес сети вместе с маской, нет — пишем loopback-адрес
LOCAL_NET="127.0.0.1"

# Наша машина не является шлюзом
GATEWAY=0

# Закрываем нужные порты
FORBIDDEN_PORTS="135 137 139"

# Блокируем пинги, 90% киддисов отвалится на этом этапе
BLOCK_PINGS=1

# Дропаем подозрительные пакеты (разного рода флуд)
SUSPECT="DROP"

# Дропаем «неправильные» пакеты (некоторые типы DoS)
KNOWN_BAD="DROP"

# Сканирование портов? В трэш!
PORT_SCAN="DROP"

Для включения ipkungfu открываем файл /etc/default/ipkungfu и меняем строку IPKFSTART = 0 на IPKFSTART = 1. Запускаем:

$ sudo ipkungfu

Дополнительно внесем правки в /etc/sysctl.conf:

$ sudo vi /etc/systcl.conf
# Дропаем ICMP-редиректы (против атак типа MITM)
net.ipv4.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
# Включаем механизм TCP syncookies
net.ipv4.tcp_syncookies=1
# Различные твики (защита от спуфинга, увеличение очереди «полуоткрытых» TCP-соединений и так далее)
net.ipv4.tcp_timestamps=0
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_max_syn_backlog=1280
kernel.core_uses_pid=1

Активируем изменения:

$ sudo sysctl -p

Выявляем вторжения

Snort — один из любимейших инструментов админов и главный фигурант всех руководств по безопасности. Штука с долгой историей и колоссальными возможностями, которой посвящены целые книги. Что он делает в нашем гайде по быстрой настройке безопасной системы? А здесь ему самое место, Snort можно и не конфигурировать:

$ sudo apt-get install snort
$ snort -D

Все! Я не шучу, стандартных настроек Snort более чем достаточно для защиты типовых сетевых сервисов, если, конечно, они у тебя есть. Нужно только время от времени просматривать лог. А в нем можно обнаружить строки типа этих:

[**] [1:2329:6] MS-SQL probe response overflow attempt [**]
[Classification: Attempted User Privilege Gain] [Priority: 1]
[Xref => [url]http://www.securityfocus.com/bid/9407][/url]

Упс. Кто-то пытался вызвать переполнение буфера в MySQL. Тут сразу есть и ссылочка на страницу с детальным описанием проблемы. Красота.


Кто-то наследил…

Кто-то особенно умный смог обойти наш брандмауэр, пройти мимо Snort, получить права root в системе и теперь ходит в систему регулярно, используя установленный бэкдор. Нехорошо, бэкдор надо найти, удалить, а систему обновить. Для поиска руткитов и бэкдоров используем rkhunter:

$ sudo apt-get install rkhunter

Запускаем:

$ sudo rkhunter -c --sk

Софтина проверит всю систему на наличие руткитов и выведет на экран результаты. Если зловред все-таки найдется, rkhunter укажет на место и его можно будет затереть. Более детальный лог располагается здесь: /var/log/rkhunter.log. Запускать rkhunter лучше в качестве cron-задания ежедневно:

$ sudo vi /etc/cron.daily/rkhunter.sh
#!/bin/bash
/usr/bin/rkhunter -c --cronjob 2>&1 | mail -s "RKhunter Scan Results" vasya@email.com

Заменяем email-адрес Васи на свой и делаем скрипт исполняемым:

$ sudo chmod +x /etc/cron.daily/rkhunter.sh

Базу rkhunter рекомендуется время от времени обновлять с помощью такой команды:

$ sudo rkhunter --update

Ее, кстати, можно добавить перед командой проверки в cron-сценарий. Еще два инструмента поиска руткитов:

$ sudo apt-get install tiger
$ sudo tiger
$ sudo apt-get install lynis
$ sudo lynis -c

По сути, те же яйца Фаберже с высоты птичьего полета, но базы у них различные. Возможно, с их помощью удастся выявить то, что пропустил rkhunter. Ну и на закуску debsums — инструмент для сверки контрольных сумм файлов, установленных пакетов с эталоном. Ставим:

$ sudo apt-get install debsums

Запускаем проверку:

$ sudo debsums -ac

Как всегда? запуск можно добавить в задания cron.

rkhunter за работой

В моей системе руткитов нет


За пределами

Теперь поговорим о том, как сохранить свою анонимность в Сети и получить доступ к сайтам и страницам, заблокированным по требованию различных организаций-правообладателей и прочих Мизулиных. Самый простой способ сделать это — воспользоваться одним из тысяч прокси-серверов по всему миру. Многие из них бесплатны, но зачастую обрезают канал до скорости древнего аналогового модема.

Чтобы спокойно ходить по сайтам и только в случае необходимости включать прокси, можно воспользоваться одним из множества расширений для Chrome и Firefox, которые легко находятся в каталоге по запросу proxy switcher. Устанавливаем, вбиваем список нужных прокси и переключаемся на нужный, увидев вместо страницы табличку «Доступ к странице ограничен по требованию господина Скумбриевича».

В тех ситуациях, когда под фильтр попал весь сайт и его адрес внесли в черный список на стороне DNS-серверов провайдеров, можно воспользоваться свободными DNS-серверами, адреса которых опубликованы здесь. Просто берем два любых понравившихся адреса и добавляем в /etc/resolv.conf:

nameserver 156.154.70.22
nameserver 156.154.71.22

Чтобы разного рода DHCP-клиенты и NetworkManager’ы не перезаписали файл адресами, полученными от провайдера или роутера, делаем файл неперезаписываемым с помощью расширенных атрибутов:

$ sudo chattr +i /etc/resolv.conf

После этого файл станет защищен от записи для всех, включая root.

Чтобы еще более анонимизировать свое пребывание в Сети, можно воспользоваться также демоном dnscrypt, который будет шифровать все запросы к DNS-серверу в дополнение к прокси-серверу, используемому для соединения с самим сайтом. Устанавливаем:

$ wget http://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.3.2.tar.bz2
$ bunzip2 -cd dnscrypt-proxy-*.tar.bz2 | tar xvf -
$ cd dnscrypt-proxy-*
$ sudo apt-get install build-essential
$ ./configure && make -j2
$ sudo make install

Указываем в /etc/resolv.conf loopback-адрес:

$ vi /etc/resolv.conf
nameserver 127.0.0.1

Запускаем демон:

$ sudo dnscrypt-proxy --daemonize

Кстати, версии dnscrypt есть для Windows, iOS и Android.


Луковая маршрутизация

Что такое луковая маршрутизация? Это Tor. А Tor, в свою очередь, — это система, которая позволяет создать полностью анонимную сеть с выходом в интернет. Термин «луковый» здесь применен относительно модели работы, при которой любой сетевой пакет будет «обернут» в три слоя шифрования и пройдет на пути к адресату через три ноды, каждая из которых будет снимать свой слой и передавать результат дальше. Все, конечно, сложнее, но для нас важно только то, что это один из немногих типов организации сети, который позволяет сохранить полную анонимность.

Тем не менее, где есть анонимность, там есть и проблемы соединения. И у Tor их как минимум три: он чудовищно медленный (спасибо шифрованию и передаче через цепочку нод), он будет создавать нагрузку на твою сеть (потому что ты сам будешь одной из нод), и он уязвим для перехвата трафика. Последнее — естественное следствие возможности выхода в интернет из Tor-сети: последняя нода (выходная) будет снимать последний слой шифрования и может получить доступ к данным.

Тем не менее Tor очень легко установить и использовать:

$ sudo apt-get install tor

Все, теперь на локальной машине будет прокси-сервер, ведущий в сеть Tor. Адрес: 127.0.0.1:9050, вбить в браузер можно с помощью все того же расширения, ну или добавить через настройки. Имей в виду, что это SOCKS, а не HTTP-прокси.


Борьба с флудом

Приведу несколько команд, которые могут помочь при флуде твоего хоста.

Подсчет количества коннектов на определенный порт:

$ netstat -na | grep ":порт\ " | wc -l

Подсчет числа «полуоткрытых» TCP-соединений:

$ netstat -na | grep ":порт\ " | grep SYN_RCVD | wc -l

Просмотр списка IP-адресов, с которых идут запросы на подключение:

$ netstat -na | grep ":порт\ " | sort | uniq -c | sort -nr | less

Анализ подозрительных пакетов с помощью tcpdump:

# tcpdump -n -i eth0 -s 0 -w output.txt dst port порт and host IP-сервера

Дропаем подключения атакующего:

# iptables -A INPUT -s IP-атакующего -p tcp --destination-port порт -j DROP

Ограничиваем максимальное число «полуоткрытых» соединений с одного IP к конкретному порту:

# iptables -I INPUT -p tcp --syn --dport порт -m iplimit --iplimit-above 10 -j DROP

Отключаем ответы на запросы ICMP ECHO:

# iptables -A INPUT -p icmp -j DROP --icmp-type 8

Выводы

Вот и все. Не вдаваясь в детали и без необходимости изучения мануалов мы создали Linux-box, который защищен от вторжения извне, от руткитов и прочей заразы, от непосредственно вмешательства человека, от перехвата трафика и слежки. Остается лишь регулярно обновлять систему, запретить парольный вход по SSH, убрать лишние сервисы и не допускать ошибок конфигурирования.

четверг, 17 декабря 2015 г.

Система видеонаблюдения для входной двери. 2. Купольная камера на лестничной площадке.

Для получения качественной картинки было решено установить купольную камеру на лестничной площадке. Для этой цели очень давно, больше года назад, я купил камеру ITP-020RT45N. Кто ее производит мне неизвестно. Производит ее мне неизвестная компания с название IIT. Продают эти камеры в основном в Беларусии.

Сенсор: 1/2.8" SONY 2.4 CMOS
Firmware ver.: DM368+IMX222_3.0.9.0
Software ver.: 4.1.0.20
Разрешение: 1080P (1920×1080), 720P (1280x720)
Линза: 2.8 - 12 мм
Чувствительность: 0,01 Люкс
Отношение сигнал/шум: >50дБ
Рабочее расстояние ИК подсветки: 20M
Интерфейс: RJ45 Ethernet
Питание: DC 12V/1000MA
Диапазон температур: -20 ~ 50°C
Защищенность: IP65
Размеры: 149 x 99(В)мм

Интерфейс управления камерой привязан к Windows IE c active X.
Разрешение камеры действительно высокое. Но шум тоже великоват (возможно это мои придирки). Скриншот с камеры при нормальном уровне освещенности. Тестовый лист находится на расстоянии около 3,5 метров от камеры.


Видео при хорошей освещенности. К сожалению, пришлось уменьшить размер и соответственно уменьшилось разрешение.
Если с RVi-R04La White я снимал поток rtsp с помощью totem, то с камерой он работать отказался и для трансляции я использовал vlc:

vlc "rtsp://user:password@192.168.1.14/0"

среда, 16 декабря 2015 г.

Система видеонаблюдения для входной двери. 1. Глазок.

Год назад я озадачился поставить вместо дверного глазка видеокамеру.

Собственно видеокамера продающаяся на Ali меня толкнула на такую поделку. Прикупил я безымянный глазок CMOS PC1089 800TVL PEEPHOLE DOORVIEW и систему записи RVi-H04La.

Сначала про камеру.

Внешне выглядит довольно качественно. Черненный алюминиевый корпус. Система линз, дающая широкий угол обзора, как у обычного дверного глазка.
Камера является аналоговой и имеет два разъёма подключения: питание 12 В и выход видео.
Продавец утверждал, что камера имеет разрешение 800 TVL.
Регистратор выдает поток 960x576

Stream #0.0: Video: libx264, yuv420p, 960x576, q=-1--1, 25 tbn, 25 tbc

Для тестирования я разместил перед камерой на расстоянии одного метра тестовую таблицу, напечатанную на листе А4, аналогичную той, что используется для проверки зрения.

Видео записывал, подключившись к регистратору RVi-H04La следующей командой:

avconv -f rtsp -i "rtsp://user:password@192.168.1.12:554/cam/realmonitor?channel=1&subtype=0" -y "PC1089_800TVL_low_light.mp4"

Дальше вы все можете видеть сами. Видеозаписи вписаны в окно размером 960х615
В работе камера оказалась достаточно отвратной. при низком уровне освещения качество изображения неудовлетворительное. Огромный шум, который сводит на нет разрешение камеры:



При свете показывает лучше.



Буду признателен, если кто подскажет, где можно взять более качественную камеру для дверного глазка.

воскресенье, 13 декабря 2015 г.

Настройка Ubuntu и dd-wrt для подключения к домашней сети по vpn.

Зачастую бывает полезно подключиться к домашней локальной сети с работы. Например, чтобы скачать какой нибудь файл. Или сохранить какой нибудь файл. Или дать команду торрент серверу загрузить кино, чтобы вечером его посмотреть.
Для этой цели очень удобно настроить на роутере vpn сервер. Делается это не просто, а очень просто.
Оригинальное полное описание полей находится в wiki  

Настройка сервера
Думаю, картинки достаточно для понимания.

Нужно просто:
  1. включить pptp сервер 
  2. указать диапазон адресов из пула внутренней сети (192.168.1.180-182). В моем случае я разрешаю 3 одновременных коннекта. 
  3. придумать логин и пароль для входа и записать их в поле CHAP-Secrets 
  4. запомнить внешний ip адрес (в скриншоте для примера я нарисовал WAN IP: 1.2.3.4, у вас, естественно, будет другой) 

Я отключил шифрование указав в поле MPPE Encryption Disable, потому как с шифрованием у меня подключение на заработало. (В интернетах пишут, что на некоторых прошивках dd-wrt так бывает.
Так же пишут, что это несовместимость реализации шифрования на стороне клиента Ubuntu [1] [2] [3]).
Поля DNS1, DNS2, WINS1, WINS2 в нашем случае не нужны.
В поле Server IP нужно указать адрес, который будет назначен виртуальному серверу. Я указал свободный в моей сети 192.168.1.2. Можно указать 0.0.0.0

Настройка клиента
На клиентской машине (Ubuntu 14.04) создаем vpn подключение (на скриншотах у меня уже присутствует настроенное соединение с именем Home VPN connection):

1.
2.
3.
4.


Указываем наш WAN IP: 1.2.3.4 (вместо 1.2.3.4 поставьте ваш реальный адрес) и логин-пароль
5.


На этом настройка закончена.

Если что то пошло не так и не создается соединение, то можно посмотреть процесс установления соединения в реальном времени.
Для этого открываем окно терминала и даем команду:
sudo tail -f /var/log/syslog
Небольшое но важное дополнение.
Если номера сеток где вы сейчас находитесь и домашней совпадают, то туннель работать не будет. Поэтому, чтобы снизить вероятность такого события выберите номер домашней сетки, который не используется в примерах и учебниках. Например 192.168.142.0.

Скоростные показатели.
Поскольку роутер имеет не очень мощный процессор скорость через туннель не превышает в моем случае 15 Mbps. Процессор при этом загружен полностью.


Напочитать для знаний:
PPTP Client. Routing HOWTO

воскресенье, 18 мая 2014 г.

FTP сервер на Thecus n4800eco


Сейчас электронные копии всяких бумажек очень актуальны.
При получении визы, например, нужно прилагать скан паспорта. Или помогает очень сканы оплаты всяких штрафов за авто. Для этих целей я храню сканы нужных мне документов на сервере.

Для сканирования я использую сетевой MFC Brother 7840wr, в котором настроил три профайла для отправки сканов на FTP сервер.


На n4800eco я развернул FTP сервер pureFTPd


Для работы pureFTPd необходимо установить MySQL и PHP.


Теперь очень удобно. Я просто кладу нужный документ в сканер Brother 7840wr и выбираю качество скана. Все остальное происходит автоматически.

суббота, 15 марта 2014 г.

Thecus N4800ecco - у меня новая свистоперделка.

Заменил свой старенький NAS NetGear на новый Thecus N4800eco. Сейчас заливаю на него сохраненные файлы. Работает в 20 раз быстрее, чем прежний

четверг, 17 февраля 2011 г.

Fucking BeeLine

У меня дома подключен интернет через бывшую Корбину, ныне BeeLine. У этих деятелей часто пропадает сеть. Особенно любят они баловаться этим по ночам. И товарищи не предоставляют никаких компенсаций за это.

Как то я проснулся ночью. Спать не хотелось и я решил пошариться по интернету. Да не тут то было. Во внутреннюю сеть Корбины вхожу - далее никуда.

Думаю деньги кончились - полез в личный кабинет, а зайти туда не могу. Соединение сбрасывается.
Потом по прошествии времени с ними очень трудно разбираться.
- Когда у Вас было отключение? Не помните? Ну вспомните - позвоните.

В общем я разозлился и написал вот такой скрипт.
#!/bin/bash
# Контроль работы домашнего проводного интернет BeeLine (Corbina)
# Скрипт последовательно проверяет доступность внутреннего роутера,
# внутренней сети Корбины (Билайн) и сайта google.
# В случае ошибки доступа в log файле делается соответствующая запись.
# 
# Для автоматической отправки писем требуется MTA. Я использую exim
# Настройка MTA exim http://wiki.debian.org/GmailAndExim4
#
# Copyleft AxaRu http://axa-ru.blogspot.com/2011/02/fucking-beeline.html

# Версия         Изменения
# ------------   ---------------------------------------------------------------
#VERSION=0.1      # Первая версия. Проверка работы интернета
#VERSION=0.11     # Добавлена возможность измерения скорости соединения
#VERSION=0.12     # Добавлены опции командной строки
#VERSION=0.13     # Добавил опцию спецификации log-файла
#VERSION=0.131    # Убрал ключ -v Verbose. Информация по доступности узлов 
                  # в log не пишется и выводится только в консоль при включении 
                  # ключа -d debug
#VERSION=0.14     # сделал отправку письма и sms о перебое в работе интернета
                  # и письма в службу Корбина (Билайн) с требованием компенсации
                  # за непредоставленную услугу
VERSION=0.141    # добавил спецификацию почтового ящика, куда будут 
                  # отправляться письма

LOG_FILE=/var/log/corbina.log         # журнал работы программы

RC_FAIL=0              # return code = FAIL
RC_OK=1                # return code = OK000

ERROR_BARIER=4         # Количество ошибок подряд, после которого высылается 
                       # письмо в службу поддержки о предоставлении компенсации

EMAILTO=ivanov@gmail.com     
                       # Адрес, куда направлять письма о компенсации за 
                       # отсутствие услуги интернета

#-------------------------------------------------------------------------------
# Текст письма в службу поддержки
CLAIM11="В службу поддержки пользователей
от пользователя услуги ""Домашний интернет""
Иванова И.И. 

Договор №1234 от 12 октября 2008 года



Сообщаю вам, что с"
Start_interrupt=0      # когда прекратилась услуга интернета

CLAIM12=" по "
Stop_interrupt=0       # когда интернета был восстановлен

CLAIM13=" были перебои в 
предоставлении услуги интернет.

Прошу предоставить мне компенсацию.

С уважением Иванов И.И.
"

#-------------------------------------------------------------------------------
# 
Usage()
{
  echo "chki -[dehlmsvV]"
  echo "check internet connection"
  echo "   d              - debug mode, shows the internal variables"
  echo "   e              - logs only error state"
  echo "   h              - this help"
  echo "   l [filename]   - specify log file, default /var/log/corbina.log"
  echo "   m [mailbox]    - mail to, specify mail recipient. If mailbox is"
  echo "                    wrong mail will not be delivered"
  echo "   s              - download speed measurement"
  echo "   V              - version"
  echo "example:"
  echo "chki.sh -del corbina.log -m myaddress -s"
}

#-------------------------------------------------------------------------------
# 

Version()
{
  echo "chki - check internet connection v$VERSION"
}

#-------------------------------------------------------------------------------
# запись текста в log-файл
Log() 
{
  echo $(date +'%F %T') ! "$*"  |  tee -a $LOG_FILE
}

#-------------------------------------------------------------------------------
# Проверяет доступность сайта и возвращает результат
Chk_ip() 
{
  if ping -c 3 -q $* | grep '100% packet loss'> /dev/null 
    then
      Val=$RC_FAIL
    else
      Val=$RC_OK
  fi
  $DEBUG && echo "Address=$*, Result=$Val"
  return $Val
}

#-------------------------------------------------------------------------------
# Проверяет это восстановление после сбоя?
# Если да, то пишем письмо с претензией.
Check_interrupt()
{
  local x=2

  line_rec=$(tail -$x "$LOG_FILE" | head -1 | grep FAILED)

  if [ -n "$line_rec" ]
    then
      Stop_interrupt=${line_rec:0:19}
      while [ -n "$line_rec" ]
      do
        let x++
        Start_interrupt=${line_rec:0:19}
        line_rec=$(tail -$x "$LOG_FILE" | head -1 | grep FAILED)
      done
      $DEBUG && echo "Start_interrupt = $Start_interrupt, Stop_interrupt = $Stop_interrupt"
  fi
  let "ERROR_BARIER += 2"
  $DEBUG && echo "Count=$x, Barrier=$ERROR_BARIER"
  if [ "$x" -gt "$ERROR_BARIER" ]
    then
      $DEBUG && echo "Длинный перерыв. Пишем претензию."
      $DEBUG && printf "%s %s %s %s %s" \
          "$CLAIM11" "$Start_interrupt" "$CLAIM12" "$Stop_interrupt" "$CLAIM13"
      printf "%s %s %s %s %s" \
          "$CLAIM11" "$Start_interrupt" "$CLAIM12" "$Stop_interrupt" "$CLAIM13" \
          | mail -s 'Компенсация по непредоставлению услуги Домашний интернет' $EMAILTO
  fi
}

#-------------------------------------------------------------------------------
# Скачивает тестовый файл длиной 10 MB 
TEST_FILE=http://speedtest.wdc01.softlayer.com/downloads/test10.zip  
# и расчитывает скорость закачки
SPEED=0
Speed_tst()
{
  Start=`eval date +%s`
  eval curl -o /dev/null $TEST_FILE
  Stop=`eval date +%s`
  Ttime=$(( $Stop - $Start ))
  Speed_Rate=$(( 10485760 / $Ttime / 1024 ))
  $DEBUG && echo "speed_tst: $Stop - $Start = $Ttime, Rate = $Speed_Rate k"
  SPEED=$Speed_Rate
  return 
}

#-------------------------------------------------------------------------------
# --- Configuration ---
IP1=192.168.1.1         # Роутер
IP2=home.corbina.net    # Сеть Корбины/Билайна
IP3=www.google.com      # Всегда onLine

#  IP1  IP2  IP3
#  ok   ok   ok   - Все работает
#  ok   ok   fail - Соединение с сетью есть но выхода в интернет нет
#  ok   fail fail - Отсутствует соединение с сетью
#  fail fail fail - Ошибка локальной сети
# 

#-------------------------------------------------------------------------------
# Считываем ключи командной строки и устанавливает 
# соответствующие значения переменным

DEBUG=false
CSPEED=false
LOG_OK=true

  while getopts 'dehl:svV' OPTION
  do
    $DEBUG && printf "%s " $OPTION

    case $OPTION in
      d)
        DEBUG=true
        ;;
      e)
        LOG_OK=false
        ;;
      h)
        Usage
        exit 2
        ;;
      l)
        LOG_FILE=$OPTARG
        ;;
      m)
        MAILTO=$OPTARG
        ;;
      s)
        CSPEED=true
        ;;
      V)
        Version
        exit 2
        ;;
      *)
        Usage
        exit 2
        ;;
    esac
  done


  $DEBUG && printf "d\n" && echo + Отладка +
  $DEBUG && echo "Log file = $LOG_FILE"
  Chk_ip "$IP1"
  NVal=$(( $? * 100 ))
  $DEBUG && echo "NVal=$NVal"
  Chk_ip "$IP2"
  NVal=$(( $NVal + $? * 10 ))
  $DEBUG && echo "NVal=$NVal"
  Chk_ip "$IP3"
  NVal=$(( $NVal + $? ))
  $DEBUG && echo "NVal=$NVal"

  case $NVal in
    0)
      Log "*********** BIG FAIL: You home network is destroyed!!!"
      ;;
    100)
      Log "************* FAILED: BeeLine is shitheads"
      ;;
    110)
      Log "************* FAILED: BeeLine is shitheads"
      ;;
    111)
      $DEBUG && echo "Internet OK"
      Check_interrupt
      SPEED='---'
      $CSPEED && Speed_tst
      $LOG_OK && Log "OK: Life is beautiful. Download speed = $SPEED"
      ;;
    *)
      Log "Fucking shit. You BAD programmer!!! NVal=$NVal"
      ;;
  esac

  exit
Запускается с различными опциями.
$ chki.sh -h chki -[dehlsvV] check internet connection d - debug mode, shows the internal variables e - logs only error state h - this help l [filename] - specify log file, default /var/log/corbina.log s - download speed measurement V - version Вывод максимально полной информации о соединении с интернет: $ ./chki.sh -l corbina.log -s % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 11.0M 100 11.0M 0 0 322k 0 0:00:34 0:00:34 --:--:-- 344k 2011-02-23 00:07:17 ! OK: Life is beautiful. Download speed = 292 Вставил его в cron ReadyNas Duo. Он запускается каждый час и логирует состояние интернета.

Теперь достаточно посмотреть corbina.log я подкован фактическим материалом 8)

воскресенье, 13 сентября 2009 г.

Безопасность домашних сетей.

Мою домашнюю сеть пока еще никто не ломал, бог миловал.

Но я немного озадачился этой проблемой и поисследовал домашние сети, расположенные в моей подсети класса "C"

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

Благо linux дает много инструментов для поиска и анализа сетевых устройств. Да в общем много мне не понадибилось. Оказалось достаточно старой-доброй nmap.

Сам процесс и механизм описывать не буду. Те, кто достиг "просветления", наверняка уже наигрались. А кто еще не знает - тому пока рано.

Результаты:
  • Оказалось около 5 % роутеров в сети имеют пароль по "умолчанию" или вовсе его не имеют.
    Почему? Мое мнение такое. Часть народа не знает, что такое "роутер" и для этого народа сеть настраивают нечистоплотные инсталляторы, которые на будущее оставляют для себя вход.

  • Очень много роутеров, которые позволяют себя сканировать.
    Как будет действовать обычный "искатель сокровищ"? Он просто просканирует сетку и составит список откликнувшихся устройств. Не давайте такой возможности. Кого не нашли, того не побьют.

Выводы:
  • Если ставите роутер - настройте. Не будьте беспечны.

  • Для маньяков.
    Если Вам есть что скрывать, но Вы используете transmission (осел - более безопасный) и, к тому же Вы закрыты одним только роутером - Вас наверняка взломают. Задачи и способы их решения везде одинаковы, что в Банке, что дома. Разный только ущерб.
    Но, принимая во внимание маниакальную борьбу нашего государства со своим народом, не исключаю возможности, что по заданию управления "К" будет создана система по поиску пиратских копий.
    Возможно, стоит задуматься о создании ДМЗ.


суббота, 4 июля 2009 г.

Исправлена ошибка в Ubintu 9.04 и 3945abg

20 мая 2009 года я писал, что в Ubintu 9.04 имется ошибка во взаимодействии с сетевой картой 3945abg. Вчера я снова установил network manager. По сотоянию на 4 июля он работает нормально.

вторник, 30 июня 2009 г.

Cервер приложений. Установка linux на VIA Epia MII

В качестве сервера приложений используется noname slim PC cледующей конфигурации:
EPIA MII-Series Mini-ITX BoardDisk fujitsu MHV2080AHRAM 512 MB
Поскольку оборудование уже не производится, с поддержкой его в современных дистрибутивах есть определенные проблемы. Ниже указаны дистрибутивы которые я пробовал и результат:
  • Knoppix - отказался грузиться на этапе инсталляции
  • Alt Linux - Установился, но работал неустойчиво
  • Ubuntu 8.10 - После установки не запустился
  • Ubuntu 9.04 - Отказался устанавливаться
  • Debian 5.01 - Установился.
  1. В bios отключаем halt по отсутствии клавиатуры. Эта машинка будет работать без монитора, клавиатуры и мыши, и не должна реагировать на отсутствие указанного оборудования
  2. На роутере присваиваем ip адрес для нашего сервера приложений: Я для этой станции выбрал адрес 192.168.1.63
  3. Установка Debian 5.01 Установка debian прошла гладко и никаких особенностей и подводных камней не имеет. Я устанавливал дистрибутив с xfe - http://debian.nsu.ru/debian-cd/current/i386/iso-cd/debian-501-i386-xfce%2blxde-CD-1.iso
  4. Настройка репозиториев. Списки репозиториев хранятся в /etc/apt/sources.list:
    # /etc/apt/sources.list
    # ver. 070309
    
    # Cd-rom
    #deb cdrom:[Debian GNU/Linux 5.0.0 _Lenny_ - Official i386 kde-CD Binary-1 20090214-17:33]/ lenny main
    
    # Security updates
    deb http://security.debian.org/ lenny/updates main
    deb-src http://security.debian.org/ lenny/updates main
    
    # Ru debian mirror
    #deb http://ftp.ru.debian.org/debian/ lenny main contrib non-free
    #deb-src http://ftp.ru.debian.org/debian/ lenny main contrib non-free
    
    # Yandex mirror
    deb http://mirror.yandex.ru/debian/ lenny main contrib non-free
    deb-src http://mirror.yandex.ru/debian/ lenny main contrib non-free
    
    # Volatile
    deb http://volatile.debian.org/debian-volatile lenny/volatile main
    deb-src http://volatile.debian.org/debian-volatile lenny/volatile main
    Я закоментировал репозиторий на CD-ROM. После изменения списка репозиториев запускаем aptitude и обновляем систему. Для этого нажать клавишу U.
  5. Включение доступа по telnet с удаленной машины Необходимо добавить в файл /etc/inetd.conf строки выделенные красным
    # /etc/inetd.conf:  see inetd(8) for further informations.
    #
    # Internet superserver configuration database
    #
    #
    # Lines starting with "#:LABEL:" or "##" should not
    # be changed unless you know what you are doing!
    #
    # If you want to disable an entry so it isn't touched during
    # package updates just comment it out with a single '#' character.
    #
    # Packages should modify this file by using update-inetd(8)
    #
    #       
    #
    #:INTERNAL: Internal services
    #discard  stream tcp nowait root internal
    #discard  dgram udp wait root internal
    #daytime  stream tcp nowait root internal
    #time  stream tcp nowait root internal
    
    #:STANDARD: These are standard services.
    telnet  stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
    
    # ------------------------------------------------------
    # this pasted from http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1246385838562+28353475&threadId=44282
    
    service telnet
    {
    disable = no
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/in.telnetd
    log_on_failure += USERID
    only_from = 192.168.1.172 127.0.0.1 # перечисляются адреса хостов, с которых разрешен доступ
    }
    # ------------------------------------------------------
    
    
    #:BSD: Shell, login, exec and talk are BSD protocols.
    
    #:MAIL: Mail, news and uucp services.
    
    #:INFO: Info services
    
    #:BOOT: TFTP service is provided primarily for booting.  Most sites
    #       run this only on machines acting as "boot servers."
    
    #:RPC: RPC based services
    
    #:HAM-RADIO: amateur-radio services
    
    #:OTHER: Other services
Полезные ссылки:

среда, 20 мая 2009 г.

Ubuntu 9.04 и 3945ABG

По состоянию на 20 мая 2009 г. в Ubuntu 9.04 имеется ошибка в network manager. Он неправильно взаимодействует с драйвером карты intel/Pro 3945ABG, установленной в ThinkPad X60. Это проявляется в том, что связь по WiFi устанавливается нестабильно, с маленькой скоростью передачи и постоянно рвется. Баг устраняется установкой wicd (автоматически сносится nm). По умолчанию wicd устанавливает драйвер wext. Разработчики менять на другой его не рекомендуют Работает wicd, по крайней мере, не хуже, чем network manager. Его и оставлю.

четверг, 30 апреля 2009 г.

Установка tightVNC сервера

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

По исследованию Linux Format #84 tightVNC набрал большее количество очков.

Его-то и поставим на наш сервер приложений.

Установка достаточно хорошо и подробно описана здесь: Gentoo: Администрирование посредством VNC

Запускается сервер следующей командой:

[axa@Alt ~]$ vncserver -geometry 1024x768 -depth 16

New 'X' desktop is Alt:1

Starting applications specified in /home/axa/.vnc/xstartup
Log file is /home/axa/.vnc/Alt:1.log

[axa@Alt ~]$
Сообщение New 'X' desktop is Alt:1 говорит, что сервер запущен на станции Alt, экран 1 На cтанции запускаем клиента При этом указываем ip-адрес tightvnc сервера (192.168.1.63) и номер дисплея (1):
akhromov@akhromov-X60:~$ vncviewer 192.168.1.63:1
Connected to RFB server, using protocol version 3.8
Enabling TightVNC protocol extensions
Performing standard VNC authentication
Password: 
Authentication successful
Desktop name "axa's X desktop (Alt:1)"
VNC server default format:
  16 bits per pixel.
  Least significant byte first in each pixel.
  True colour: max red 31 green 63 blue 31, shift red 11 green 5 blue 0
Using default colormap which is TrueColor.  Pixel format:
  32 bits per pixel.
  Least significant byte first in each pixel.
  True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Using shared memory PutImage


Скриншот удаленного рабочего стола показан ниже.


Останавливается сервер следующей командой:

[axa@Alt ~]$ vncserver -kill :1
Killing Xvnc process ID 10411
[axa@Alt ~]$

где :1 - номер дисплея.
Ссылки:
  1. Gentoo: Администрирование посредством VNC
  2. TightVNC software
  3. Vnc Community Ubuntu Documentation
  4. Chicken of the VNC: fast, lightweight VNC client for Mac OS X

среда, 29 апреля 2009 г.

Устарело! Включаем доступ по telnet через сеть

УстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарелоУстарело Начинаю потихоньку устанавливать софт на сервер приложений. Операционку пока оставлю Alt Linux. А там видно будет.
  1. Поскольку эта машинка будет работать без монитора, клавиатуры и мыши, в bios отключаем halt по отсутствии клавиатуры
  2. На роутере присваиваем ip адрес для нашего сервера приложений: Я для этой станции выбрал адрес 192.168.1.63
  3. Включаем возможность удаленного доступа по telnet: входим под root и правим файл /etc/xinetd.d/telnetd.
    # default: off
    # description: A telnet server
    
    service telnet
    {
        socket_type    = stream
        protocol    = tcp
        user        = root
        wait        = no
        server        = /usr/sbin/telnetd
        server_args    = -h
        only_from    = localhost 192.168.1.0
        disable        = no
    }
    А именно:
    • в поле only_from добавляем адрес 192.168.1.0 (разрешаем заходить со всех машин сети 192.168.1.х)
    • в поле disable устанавливаем значение no
  4. Перезапускаем службу xinetd командой:
    /etc/rc.d/init.d/xinetd restart
    и с любой машины поключаемся к нашему серверу приложений:
Теперь можно отключить от нашего сервера приложений монитор и клавиатуру и установить его стационарно. Ссылки
  1. Managing xinetd Programs

Устарело! Устанавливаю отдельный компьютер с linux

Все. Задолбало меня ковыряться с ограничениями маленьких линуксов. То памяти нет, то пакета нужного. Ставлю в сеть отдельный компьютер для емких процессов. Взял с работы старенькую бездисковую рабочуюю станцию на EPIA MII. Установил в нее диск 2.5'. Поставил на нее Alt Linux. Настроил репозитории для обновления Конкретные задачи пока не определены. Что буду делать:
  1. устаканюсь с операционкой. Хотел поставить KNOPPIX но не вышло. Версия 6.0.1 отказалась запускаться. Поэтому пока стоит altlinux-4.0.2-lite-i586
  2. Установлю:
  • удаленный рабочий стол типа vnc;
  • антивирус;
  • torrent;
  • mule.

суббота, 14 марта 2009 г.

Настройка NFS на D-Link DSM-G600

Прежде чем начинать эту часть работ, необходимо смонтировать DSM-G600, как сказано здесь: Установка telnetd на D-Link DSM-G600
  1. Скачать nfs binaries g600-nfs.tar
  2. Разархивировать его в корневую директорию DSM-G600
  3. Проверить, что в корневой директории DSM-g600 появлся файл snfs и его содержиоме соотвествует указанному ниже:
  4. #!/bin/sh
    # nfs server NAS1
    
    NFSROOT=/mnt/HD_a2/.addon/nfs
    
    # Set up needed directories and files
    if [ ! -d $NFSROOT/var/lib/nfs ]
    
    then
    mkdir -p $NFSROOT/var/lib/nfs
    fi
    
    if [ ! -d $NFSROOT/etc ]
    
    then
    mkdir -p $NFSROOT/etc
    fi
    
    cat > $NFSROOT/etc/hosts.allow <<"EOF"
    
    lockd: 192.168.1.*
    rquotad: 192.168.1.*
    mountd: 192.168.1.*
    
    statd: 192.168.1.*
    EOF
    cat > $NFSROOT/etc/hosts.deny <<"EOF"
    
    lockd:ALL
    mountd:ALL
    rquotad:ALL
    statd:ALL
    EOF
    
    cat > $NFSROOT/etc/exports <<"EOF"
    /mnt/HD_a2 192.168.1.0/24(rw,no_root_squash,no_subtree_check,async)
    
    /mnt/HD_b1 192.168.1.0/24(rw,no_root_squash,no_subtree_check,async)
    EOF
    
    if [ ! -d /usr/sbin ]
    
    then
    mkdir -p /usr/sbin
    fi
    
    # Make symlinks
    ln -s $NFSROOT/etc/exports /etc/
    ln -s $NFSROOT/var/lib /var/
    
    ln -s $NFSROOT/etc/hosts.* /etc/
    ln -s $NFSROOT/sbin/* /usr/sbin/
    
    # start the server
    /sbin/insmod $NFSROOT/modules/nfsd.o
    
    /usr/sbin/portmap
    sleep 1
    /usr/sbin/rpc.mountd
    sleep 1
    /usr/sbin/rpc.nfsd
    sleep 1
    /usr/sbin/rpc.statd
    
    
    # re-export...
    $NFSROOT/sbin/exportfs -ra
  5. Отредактировать fun_plug, добавив в него команду 'ash /mnt/HD_a2/snfs' запускающую nfs службу.
  6. #!/bin/sh
    ###########################################
    # telnet deamon start
    if [ ! -e /mnt/HD_a2/ash ]
    then
    ln -s /mnt/HD_a2/busybox /mnt/HD_a2/ash
    fi
    
    if [ ! `grep root /etc/shadow` ]
    then
    echo kontroll.`grep admin /etc/shadow` >> /etc/shadow
    /mnt/HD_a2/sed -i -e 's/kontroll.admin/root/' /etc/shadow
    fi
    
    /mnt/HD_a2/sed -i -e 's/root:.*/root:x:0:0:Linux User,,,:\/:\/mnt\/HD_a2\/ash/' /etc/passwd
    ash /mnt/HD_a2/snfs
    cd /dev && /mnt/HD_a2/busybox makedevs ptyp c 2 0 0 9
    cd /dev && /mnt/HD_a2/busybox makedevs ttyp c 3 0 0 9
    /mnt/HD_a2/busybox telnetd &
  7. Размонтировать DSM-G600 следующей командой
  8. sudo umount -t cifs //192.168.1.61/HDD_a
  9. Перезагрузить DSM-G600 и проверить доступ
  10. sudo mount -t nfs 192.168.1.61:/mnt/HD_a2 /home/akhromov/nas
  11. Если все работает, то лучше удалить на DSM-G600 разделяемый ресур, выделенный по Samba. Мы зарегестрировали его, когда устанавливали telnet.
Ссылки: http://linuxlore.blogspot.com/ http://forum.dsmg600.info/viewtopic.php?id=116

Установка telnetd на D-Link DSM-G600

Исхоные условия: DSM-G600 включен в Вашу сеть. В моем случае DSM-G600 присвоен адрес 192.168.1.61. Я выполняю все действия с хоста под управлением Ubuntu 8.10.

Добавим в NAS шару на весь диск. Открываем в firefox по адресу 192.168.1.61 страницу управления. Выбираем вкладку Advanced -> Network Access. Отмечаем в соответсвии с скриншотом поля и нажимаем кнопку Apply.

В результате должен зарегестриоваться разделяемый ресурс:

Дальше смонтируем его в нашей Убунте:
$ pwd
/home/akhromov
$ mkdir nas
$ sudo mount -t cifs -o username=admin //192.168.1.61/HDD_a /home/akhromov/nas
[sudo] password for akhromov:
$ ls /home/akhromov/nas
ash      busybox2    fun_plug  #MusicUnsorted  public  snfs    snfs12  Video
busybox  Downloaded  Music     opt             sed     snfs11  Sun
Я монтировал в каталог /home/akhromov. У Вас будет свой. Для начала желательно понять как работает «fun_plug». Этот скрип вызывается после того, как все службы DSM-G600 загрузятся.

Описание «fun_plug» можно почитать здесь: Wiki Page Howto fun_plug

Редактируем fun_plug.

#!/bin/sh
###########################################
# telnet deamon start
if [ ! -e /mnt/HD_a2/ash ]
then
ln -s /mnt/HD_a2/busybox /mnt/HD_a2/ash
fi

if [ ! `grep root /etc/shadow` ]
then
echo kontroll.`grep admin /etc/shadow` >> /etc/shadow
/mnt/HD_a2/sed -i -e 's/kontroll.admin/root/' /etc/shadow
fi

/mnt/HD_a2/sed -i -e 's/root:.*/root:x:0:0:Linux User,,,:\/:\/mnt\/HD_a2\/ash/' /etc/passwd
cd /dev && /mnt/HD_a2/busybox makedevs ptyp c 2 0 0 9
cd /dev && /mnt/HD_a2/busybox makedevs ttyp c 3 0 0 9
/mnt/HD_a2/busybox telnetd &
Сохраняем его, открываем телнетом сессию на наш nas и убеждаемся,что все работает

Настройка NFS на Asus WL500gP

На роутере установлена прошивка "Олега". На вкладке USB aplication->NFS server установить галку Enable NFS Server? в Yes Здесь же можно указать экспортируемые по NFS каталоги. Я это сделал не из web интерфейса, а в скрипте /usr/local/sbin/post-firewall, разместив в конце его следующие команды.
#!/bin/sh

cat > /tmp/etc/exports <<"EOF"
/tmp/mnt/disc0_1 192.168.1.0/24(rw,no_root_squash,no_subtree_check,async)
EOF

/usr/sbin/portmap
/usr/sbin/mountd
/usr/sbin/nfsd
/usr/abin/statd
/usr/sbin/exportfs -ra
Для экономии ресурсов можно отключить сервер Samba

четверг, 12 марта 2009 г.

Принятые мной стандарты

Стандартизация имен.

Устройства в сети имеют имя следующего формата xxxNdM, где xxx - имя
  • nmt - HDX1000
  • nas - D-Link G600
  • nwl - WL500gP
N - номер устройства ( начинается с 1 ) M - номер диска устройства (начинается с 0) Таким образом внешний диск, поключенный к HDX1000 по USB будет обозначаться как nmt1d1.

План ip адресации

имя устройстваip addressназначение
nwl1d0192.168.1.1Asus WL500gP - роутер
nmt1d0192.168.1.60HDX1000
nmt1d1192.168.1.60Внешний диск, подключенный по USB к HDX1000
nas1d0192.168.1.61D-Link G-600
nas2d0192.168.1.62D-Link G-600
srv1d0192.168.1.63Сервер приложений. EPIA MII, HDD 80Gb
nas3d0192.168.1.65ReadyNas Duo с двумя дисками по 1 Tb

Сетевые протоколы

В целях прозрачного обмена данными в моей домашней сети я некоторое время потратил на изучение вопроса какую службу использовать NFS или Samba. Некоторое время они работали у меня совместно. В итоге Samba была убита и оставлен только NFS.
  1. Настройка NFS на Asus WL500gP.
  2. Установка telnetd на D-Link DSM-G600.
  3. Настройка NFS на D-Link DSM-G600.
  4. Настройка NFS на HDX 1000.

Скорость передачи по сети

В таблице показаны скорости передачи данных (MB/s) по сети замеренные с поиощью midnight commander при коприровании файлов большого объема (более 1 GB). При этом копирование выполняло устройство, указанное в столбце А. Ссылки: http://www.helloworld.ru/texts/comp/os/linux/linux8/NFS-HOWTO-4.html - настройка nfs клента

среда, 11 марта 2009 г.

Домашняя мультимедийная сеть на NMT HDX 1000

Предпосылки

В свое время увидев в интернете networkedmediatank я понял, что этот прибор создан, как "сердце" домашней мультимедийной системы.

Было решено создать такую систему в моей квартире.

Задачи

При создании домашней мультимедийной сети я поставил следующие задачи:
  1. обеспечить использование всех возможностей, предоставляемых этим устройством;
  2. упорядочить мой мультимедия контент. Надоело разыскивать диски с фотками и музыкой;
  3. обеспечить уровень технического шума (вентиляторв охлаждения, дисков и т.п), приемлимый для проживания в квартире;
  4. уменьшить (временные) затраты на обслуживание системы;
  5. обеспечить безопасность на приемлимом уровне;
  6. максимально отказаться от проприетарного ПО;
  7. интегрировать в сеть как можно большее количество устройств и создать беспрецендентную домашнюю автоматизацию.

Решение

Я выбрал в качестве центального элемента клон NMT HDX 1000.
Описание, внешний вид и характеристики можно посмотреть на сайте производителя и в разных ревью.

Эта махарайка сделана на Linux. Последний факт дал толчок моим мзмышлениям о месте linux для конечного пользователя. До покупки этого устройства я об этой операционной системе только знал...

Я давно работаю в автоматизации и имею неплохой кругозор.

В общем лиха беда начало.

В итоге была построена сеть, показанная на картинке.

Коротенько о назначении и характеристиках устройств:
  • в качестве роутера-маршрутизатора долое время использовался Asus WL-500gP c установленной прошивкой "Олег". Прошивки и обсуждения на http://wl500g.info/. На wl500gP установлен торрент клиент;
    Проработал он почти три года и вышел из строя. На замену был куплен Zyxel NBG-460N-EE

  • рабочая станция собранная на VIA EPIA MII (подробная спецификация), RAM - 512mB, HDD - 80 gB. Устновлен Debian 5. Используется, как сервер приложений для ресурсоемких задач. Так и будем его дальше называть;

  • накопитель DSM-G600. с диском на 400 Gb. Будет использоваться для backup. Адрес сайта по кастомизации: http://dsmg600.info/;

  • RAID ReadyNAS Duo. с двумя дисками Samsung HD103UJ по 1 Tb;

  • Сеть построена вокруг мультимедия плееров HDX BD1 и HDX 1000. Внутрь установлен 2,5" диск на 250 Gb; По HDMI подключен телевизор Philips42PFL5603D и домашний кинотеатр Philips MCD708/12. На HDX - 1000 установлен еще один торрент клиент transmittion, но используется он редко;

  • RSH-100 - Просто был. Не выкидывать же. Используется качестве накопителя на 300 Gb и подключенный к HDX 1000 по USB;

  • два ноута: Lenovo ThinkPad x200s и Asus eeePC 901. На ноутах стоит Ubuntu;

  • один десктопный компьютер c WinXP, подключенный по витой паре;

  • один десктопный компьютер (самый правый на схеме), который я планирую подключить по Wi-Fi.

  • чисто, чтоб похвастаться прикупил еще универсальный пульт Logitech 525. Я выбрал его потому, что он позволяет на кнопки записывать "масро". Эта функция дает возможность посылать несколько команд одним нажатием кнопки. Например, по команде Power On включаются сразу телевизор, музыкальный центр и мультимедийный центр.

Чего мне это стоило





Дорого это? Не знаю. Пока не осмыслил.

Что бы я, может быть, сделал по другому

Можно собрать RAID на самосборном компьютере. Однозначно он был бы дешевле и производительность его была бы выше, чем у покупного ReadyNas. К тому же это позволило бы отказаться от выделенного сервера приложений.

Замеры скорости

Естественно очень важны объективные показатели быстродействия построенной сети.
Я проводил замеры с помощью разных программ. Результаты сведеные в таблицу размещу здесь в ближайшее время.


Дополнительные "побочные" эффекты. Положительные и отрицательные.

Для меня linux вполне хватает. Я перестал думать о кряках и торентах для поиска программ. Единственная сложность - узнать какая программа подходит мне для выполнения конкретной работы.

Переход полностью на linux позволил мне забыть о вирусах. Мой сын и дочь постоянно переустанавливают компьютеры с Windows по причине того, что на них регулярно появляются программы, которые они не устанавливали.

В начале пути освоение linux занимает много времени и сил. В виндовсе многие (если не все) вещи скрыты за интерфейсом. Но что там понаделано вряд ли кто досконально знает.

Ubuntu идет по похожему пути - предлагает неплохой GUI. Но если тебе что-то не нравится и у тебя крепкие яйца, то можно залезть внутрь системы и поправить по своему вкусу. Это требует времени (на получение знаний).

По моему представлению интерфейс Windows на сегодняшний момент проработан лучше, чем в Linux.

В Linux мало меньше игр, чем в Windows. Но я в них и не играю почти.

Не буду агитировать. У каждого свой путь. Знающий человек утвердительно покачает головой, а человек знающий только Windows скажет: "А вот такая программа .....???!!!"



Приложение: схема сети в dia


Upd. 13/12/2010