понедельник, 16 февраля 2015 г.

OpenVPN ошибка TLS на banana pi

После установки и настройки OpenVPN по инструкции на официальном сайте, всё заработало. Но через некоторое время начались проблемы. Соединение обрывалось и долго не могло повторно установиться. В логах OpenVPN были следующие записи
Authenticate/Decrypt packet error: packet HMAC authentication failed
TLS Error: incoming packet authentication failed from [AF_INET]
Fatal TLS error (check_tls_errors_co), restarting
Несколько дней я не мог понять почему TLS соединение проходит с ошибкой, причем иногда все работало без сбоев. TLS нужен для шифрования только начала соединения, когда передаётся не зашифрованная информация. Как только соединение установлено - вся информация шифруется при помощи SSL по алгоритму шифрования указанному в конфиге.
Так как в banana pi нет батарейки для сохранения времени, при перезагрузке или отключении питания часы всегда устанавливаются в 1 января 2010 года. Затем стартуют сервисы при загрузке и пока ntp демон пытается через интернет настроить правильное время, openvpn демон уже пытается установить начальное TLS соединение с неправильной датой. Это все и мешает поднять туннель.
Выхода я вижу два:
  1. Не шифровать начало соединения
  2. Отложить поднятие туннеля, до окончания настройки времени.
Я пошел простым путем и просто добавил в планировщик задержку в 2 минуты старта openvpn демона, предварительно отключив openvpn из автозапуска. 2 минуты, думаю, должно хватить ntp демону для настройки времени, ну а если проблемы какие с сетью помешают ему, то и vpn поднимать нет смысла без сети.
Итак, создаем файл с именем openvpn для крона в папке /etc/cron.d
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

@reboot root sleep 120 && /usr/sbin/service openvpn restart >> /var/log/cronopenvpn.log
И отключаем openvpn из автозагрузки:
sudo update-rc.d openvpn disable
Перезагружаемся и смотрим результат.

пятница, 13 февраля 2015 г.

Самодельный корпус для banana pi

Появилась задача реализовать что-то по типу NAS. Выбор пал на banana pi. Была куплена сама плата, корпус к ней и диск. Первые несколько месяцев все лежало в кучу, т.е. плата была в корпусе, а вот диск лежал рядом с ней. Опасения, что кот рано или поздно перевернет все это дело, привели к идее слепить корпус. Самое простое что пришло в голову это использовать корпус от старого CDROM.
Итак, берем старый CDROM, размечаем и сверлим дырки. При отсутствии сверла можно делать и шилом - метал тонкий.

Я покупал болты с мелкой резьбой, которая подходит и для диска.

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


Из недостатков такого корпуса можно отметить то, что нам остается только одна сторона с интерфейсами подключения периферии, но для задачи NAS как раз хватит ethernet + USB.
Также осложнен доступ к карте памяти, но я ни разу её не пытался достать.