ITСooky

IT-рецепты съедобные и не очень!

Virtual Private Server ITCooky.com 1.2 — готовый виртуальный сервер на VirtualBox!

дата 12.04.2015

Готово, после пары месяцев(и еще пары, и перехода с 8.3 на 9.2, и обнаружения много нового нужного — итого более пол года) тестирования, всё работает как надо!

itcooky_vps_01

Надоело каждый раз переустанавливать с одного железа на новое, то в чем уже достигнут передел нужной работоспособности. Захотелось, особенно для дома и семьи, иметь виртуальный сервер который можно запускать на чем угодно, и который будет обеспечивать нужный домашний функционал… но потом как то по функциям все разрослось до маленького офиса!


Что внутри?

v1.2
FreeBSD 9.2-RELEASE-p15 i386 +IPFW
NetXMS 1.2.13
ntopng 1.1 (r6939)
Squid Cache: Version 2.7.STABLE9
Sams 2.0
Asterisk 1.8.25.0
Asterisk™ Configuration Panel
Asterisk CDR viewer
Samba 4.1.4
MySQL 5.1.72
Apache 2.2.25
PHP 5.3.27
phpMyAdmin 4.0.8
Midnight Commander 4.8.8
OpenJDK Runtime Environment (build 1.7.0_65-b17)
OpenJDK Client VM (build 24.65-b04, mixed mode)
Apache Tomcat 6.0.41
Openmeetings 3.0.1-RELEASE 1587248 14-April-2014
Snort 2.9.6.0
Oinkmaster 1.132
Barnyard2 2.1.13 (Build 327)
SnortSAM 2.70
Snorby 2.6.2
Tor 0.2.4.21
CUPS 1.7.3
OpenVPN 2.3.6

itcooke_virtual_server_01

Скачать ITCookyVPS 1.2 :ITCookyVPS 1.2 in zip archive = 2 GB

Что делает этот виртуальный сервер?
v1.0
— Создает локальную сеть 192.168.2.0 которая смотрит в 192.168.1.0

— Раздает всем IP, сервер DHCP

— Раздает всем Интернет в качестве шлюза Gateway + Routing

— Перекрывает порты как Firewall + Port Forwarding

— Записывает кто куда когда ходил по URL по протоколу HTTP SQUID+SAMS2
SAMS_2_(SQUID_Account_Management_System)._-_2014-04-09_19.15.02

— Считает сколько трафика использовано по IP по протоколу HTTP SQUID+SAMS2
SAMS_2_(SQUID_Account_Management_System)._-_2014-04-09_19.16.11

— Статистика по всем протоколам ntopng и показывает в реальном времени кто что качает
Welcome_to_ntopng_-_2014-04-09_19.17.21
Welcome_to_ntopng_-_2014-04-09_19.18.37
Описание установки и функций: Установка системы мониторинга трафика ntopng на FreeBSD 9.2

— Блокирует сайты по URL в протоколе HTTP и словам в них SQUID+SAMS
itcooky_vps_02
Описание функций: Очищаем от грязи сайт vesti.ru!

— Звонит по локальной телефонной сети SIP Asterisk и в мир по внешними SIP провайдерами
itcooky_asterisk_spa3000_006
Описание установки и функций: Подключаем Linksys SPA3000 к обычному телефону и звоним выгодно через SIP оператора!

— Собирает статистику кто куда позвонил
itcooky_asterisk_spa3000_015

— Ведет учет ПК в сети NetXMS, собирает с них статистику, позволяет перезагружать ПК с другого ПК или мобилки.
netxms_itcooky_013
Screenshot_2014-04-08-13-36-31
Описании установки и функций: Система мониторинга NetXMS установка на FreeBSD 9.2

— Оборудован сайтом на WordPress Apache+MySQL+PHP+PHPmyAdmin
Virtual_Private_Server_-_2014-12-06_19.30.06

— Раздает время NTP
— Вводит и управляет компьютерами в Домене AD/DC на Samba 4.1(ограниченная функциональность служб)
itcooky_samba4_AD_04
Описание установки и функций: Samba 4.1 как Контроллер Домена AD

— Резолвит имена на своем DNS(тоже на Samba 4.1) можно блокировать имена который не может заблокировать SQUID те что прячутся в другом протоколе HTTPS

v1.1 добавлено

— Openmeetings позволяет проводить аудио, видео конференции в локальной сети!
openmeetings_itcooky_001
Описание установки и функций: Установка на FreeBSD 9.2 видео-конференции Openmeetings 3.0.1

— Snort позволяет в релаьном времени изучать трафик и блокировать по понятиям.
Snorby_-_Dashboard_-_2014-06-22_18.11.40
Описание установки и функций: Установка на FreeBSD 9 системы анализа Snort и блокировки SnortSAM зловредного трафика!

— Tor защищает вашу анонимность, а значит и вас от вредителей.
FoxyProxy_006
Описание установки и функций: Зашищаем анонимность при помощи TOR

v1.1.1 добавлено

— Вебинтерфейс для NetXMS
netxms_webgui_002
Описании установки и функций: Система мониторинга NetXMS установка на FreeBSD 9.2

— Множественные улучшения

v1.1.2 добавлено

— Печать по сети в самоудаляющийся (по времени)PDF файл!
20150207_153707000_iOS
Описании установки и функций: Печать по сети, с любых устройств, iPad, в PDF!

— Множественные улучшения

v1.2 добавлено

— Заход в домашную сеть по VPN каналу, для управления и пользования оной!
itcooky_open_vpn_003
Описании установки и функций: Удаленный доступ к домашнему серверу FreeBSD через OpenVPN!

— Самомониторинг нашего сервера и отсылка нам писем с его состоянием!
Screenshot_2015-08-15-10-23-20
Описании установки и функций: Мониторим сервер просто, как два пальца, на коленке!

— Множественные улучшения

Почему виртуальный?
Переход домашнего хозяйства на виртуальные машины давно назрел потому что — стоимость отдельно взятого ПК слишком высока — а его мощность слишком избыточна, вывод на одной машине можно и нужно запускать несколько виртуальных — а для доступа к ним использовать тонкие клиенты(40$ в Китае), или те же планшеты, или даже Android TV приставки. Если вспомнить 1998 год, и стоимость одного 1mb памяти в 1 уе США(1x128mb = 130$), то сейчас на средне системную память 16Gb (4x4Gb = 166$) по ценам 1998 года можно купить «АВТОМОБИЛЬ!!!» при этом для работы виртуальной машину нужно от 512mb!
itcooke_virtual_server_00

Как это работает концептуально?
VirtualBox создает виртуальную машину, которая по всем параметрам сходна с физическим компьютером, в сети она присутвует как одельный физический компьютор со всеми присущему атрибутами. Вы втыкаете свое устройство в локальную сеть кабелем или по Wi-Fi. Устройство настроено на получение IP автомачисекий через сервер DHCP — такой сервер запушен на виртуальном сервере он выдает IP этому устройству, а так же говорит устройству что он же роутер и DNS сервер. Далее все запросы устройства идут через виртуальный сервер — что позволяет считать трафик и фильтровать интернет.
itcooky_virtual_server
Если вы поняли предыдущею картинку посмотрите на следующею, она по сути сообщает о том же!
scheme_vps_net
Эта схема изображает локальную сеть после реализации инструкции Запускаем VirtualBox на FreeBSD c phpVirtualBox!. Кстати эта схема сделана в потрясающей бесплатной программе Dia Diagram Editor!

Что необходимо для запуска?
— Установленный VirtualBox — есть для всех платформ Unix, Linux, MAC OS X, Windows
скачать www.virtualbox.org
— Putty клиент для доступа по SSH на вирутальный сервер, нужен только для Windows, на MAC, Linux это делается через коммандную строку
скачать www.chiark.greenend.org.uk
— Умение работать в рудементном двух оконном редакторе типа досовского норман волков коммандер. Или знание редактора vi, тут без знаний не обойтись потому что он явно разработавался не под людей! Все это нужно для редактирования настроек на виртуальном сервере!

Какие системные требования?
Виртуальный сервер эксплуатируется на виртуальной машине с выделенными 1024 мегабайтами памяти и два ядровым процессором на 65% — в реале все зависит конечно от процессора.
У меня хорошо работает на
Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz с 2 GB RAM
Screenshot_2014-04-11-15-40-05
Еще лучше работает на Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz с 16 GB RAM с теми же ресурсами но нет таких скачков загруженности.
Если отключить все ненужное достаточно 512 мегабайт памяти и один проц — при условии что вы будете открывать одновременно один-два сайт с массой мусорных линков. Если одноврменно откроете много сайтов (это легко сделать на ПК но не возможно на мобиле или планшете) Squid ругнется что ему не хватает url_rewriter процессов и половину не откроет!

Apr 11 12:24:27 ITCooky_VPS squid[5102]: Too many queued url_rewriter requests (
35 on 7)

Выход есть добавить больше памяти в виртуальной машине и увеличить количество url_rewriter процессов в:
vi /usr/local/etc/squid/squid.conf
в строке

url_rewrite_children  7

Тут же можно включить опцию чтобы Squid не пытался все засунуть в url_rewriter, а только то что успевает обработать, но тогда некоторые баннеру могут остаться не забаннеными!

redirector_bypass

Еще один попутный способ снизить нагрузку — добавить CDN URLы в SAMS2 в разрешенные (URL access allowed > Trafic Transport Servers), чтобы он их не проверял на бансписки. CDN — Content Delivery Network услуга по передаче данных, до недавного времени вообще на них никакого внимания не обращал, но вот Youtube перешел на свой CDN googlevideo.com в результате: 1 стало невозможным сохранять видео с Yotuba, 2 Следсвите первого оно никак не кешируется браузером и каждый новый просмотр снова качается, 3 Следствие второго видео собирается из кусков которые берутся с десятка googlevideo.com серверов с разными именами третьего уровня который каждый раз проверяет SAMS2 на бансписки. Это создает ненужную нагрузку!

Как установить?
Скачиваем файл .ova по ссылке выше. В VirtualBox идем в Файл>Импорт конфигураций. В списке виртуальных машин появляется новая под именем ITCooky Virtual Server, нажимаем на неё правой мышкой выбираем Настроить. 100% надо настроит раздел Сеть настраиваем Adapter 1 и Adapter 2 выбираем тип Сетевой Мост (Bridged Adapter) и Etehrnet карту вашей системы!
itcooke_virtual_server_02
Теперь можно запускать вирутальный сервер!

Пароли?
Да, первым делом меняем root пароль на виртуальном сервере.
Заходим по SSH на виртуальный сервер
В Mac и Linux это делается через терминал или консоль вот так для Ubuntu:
sudo ssh root@192.168.1.200

В Windows делаем это через PuTTy
putty
Вводим имя: root и пароль: itcooky
Если все удачно видим такую картинку
itcooky_ssh
Кстати прикольные надписи символами генерируются на сайте www.network-science.de/ascii/
Вводим следующие команды:

ITCooky# passwd [Enter]
Changing local password for root
New Password: НовыйПарольВашНикомуЕгоНеГоворитеНикогда [Enter] 

Остальные пароли в папки root на сервере в файле dp
vi dp

Какие настройки на виртуальном сервере?
В SAMS2 включены delay pools ограничение скорости на всех пользователей сервера:
375000 байт для трафика по HTTP
статистика пополняется раз в 10 минут
В IPFW тарфик на 192.168.1.100 пушен на прямую без ограничений файрвола. Но для внутренний сети работает файрвол обрезает «ненужные» порты
см. настр. /etc/rc.firewall
Роутер для сервера указан IP 192.168.1.1
Условно внешний IP 192.168.1.200
Условно внутренний IP 192.168.2.200
см. настр. /etc/rc.conf
DHCP раздает IP в диапазоне 192.168.2.201 — 192.168.2.225
в качестве роутер и DNS сервера выдает 192.168.2.200
см. настр. /usr/local/etc/dhcpd.conf
Вебинтерфес доступен по адресу http://192.168.1.200(основной всё открыто для работы с наружи) и http://192.168.2.200
Сервер времени NTP
192.168.2.200
см. настр. /etc/ntp.conf
Домен
SAMBA

Что надо поменять чтобы виртуальный сервер заработал у вас?
Надеюсь у вас в домашней сети все настроено по умолчанию то есть диапазон IP 192.168.1.0/24, а роутер 192.168.1.1
В качестве DNS севрера назначен гуглевский 8.8.4.4 если у вас он почему-то не работает ставьте DNS своего провайдера тут:
/usr/local/etc/smb4.conf
Так же надо поменять время если требуется, заходим по SSH и для сменя часового пояса выполняем:
tzsetup
Cейчас стоит MSK. Время синхронизируется с внешним NTP сервером, но чтобы он работал надо более менее точное время ставить вручную чтобы не было расхождения больше чем в несколько минут
date 201403030333 (год месяц день часы минуты)
После изменения надо перезагрузится.

Как расширить размер второго диска премонтированного в /usr/hard2?
Очень просто, выключим виртуальную машину, добавим третий диск, включим вирутальную машину, времененно примонтируем его, стопарнем сервисы которым нужен диск два, скопируем все на диск три, отключим оба диска, примонтируем третий диск на место третьего через fstab, выключим виртуальную машину, удалим диск два, включим виртуальную машину.

После добавления жесткого диска смотрим появился ли он (ну он точно появился но надо уметь смотреть)!

Смотрим какие диски есть
sysctl -a | grep kern.geom.disk

kern.geom.disk.ada0.led: 
kern.geom.disk.ada1.led: 
kern.geom.disk.ada2.led: 

Наш третий диск это ada2, еще не вспахан, болтается сам по себе!
gpart create -s GPT /dev/ada2
gpart add -s 2048M -t freebsd-swap /dev/ada2
gpart add -t freebsd-ufs /dev/ada2
newfs /dev/ada2p2

Останвливаем службы которые используют второй диск на /usr/hard2
здесь я сталкиваюсь с совершенно непонятным их желанием отключаться… убивать их по ID тоже не хочется так что отключи их при загрузке!
В файле /usr/local/etc/rc.conf комменчу:

####mysql_enable="yes"
####asterisk_enable="YES"
####samba_server_enable="YES"
####squid_enable="YES"
####samba_server_enable="YES"
####squid_enable="YES"
####redis_enable="YES"
####ntopng_enable="YES"
####ntopng_flags="-G=/var/tmp/ntopng/ntopng.pid --local-networks "192.168.2.0/24" --interface 3"
####snort_enable="YES"
####netxmsd_enable="YES"
####netxmsd_flags="-d"
####nxagentd_enable="YES"
####nxagentd_flags="-d"
####tor_enable="YES"

Перезагружаемся!
Теперь примонтируем новый куда нибудь
mount -o acls /dev/ada2p2 /mnt/test

Копируем (следите чтобы место свободное было на хосту вирутальной машины)
cp -Rp /usr/hard2/ /mnt/test/
Тут вот какая загогулина, сейчас у нас 3 диска, если мы второй не удляем а оставляем, то надо поменять
vi /etc/fstab
строку

/dev/ada1p2     /usr/hard2      ufs     rw,acls 1       1

на

/dev/ada2p2     /usr/hard2      ufs     rw,acls 1       1

и

/dev/ada1p1     none            swap    sw      0       0

на

/dev/ada2p1     none            swap    sw      0       0

разкоментим в /etc/rc.conf то что закоментивали, перезагружаемся, должно работать!

Как перенести виртуальную машину на реальную?
Во тут описано подробненько Переносим Виртуальную Машину на реальный HDD!! Кстати этот спосбо можно ииспользоват и когда надо увелитчь размер всех лисков.

Как увеличить раздаваемый IP диапазон?
Очень просто но муторно.
На DHCP пишем новый диапазон раздачи
см. настр. /usr/local/etc/dhcpd.conf
В SAMS2 дописываем новые IP, они должны быть чтобы получать HTTP, реконфигурируем SQUID.

Как поменять все IP и диапазоны?
Не очень просто но муторно.(отвечаю не проверив на себе)
В первую очередь меняем IP сервера
см. настр. /etc/rc.conf
Тут тоже меняем IP
vi /etc/resolve.conf
Так как DNS у нас привязан к Домену на SAMBA…
попробуйте ничего не делать(опрометчиво) и внести новые записи зоны и хоста под новые IP
В файрволе прописываем новые данные
см. настр. /etc/rc.firewall
На DHCP пишем новые IP и диапазон раздачи
см. настр. /usr/local/etc/dhcpd.conf
SAMS2 через веб интерфейс меняем настройки и пользователей
В настройках сервера времени NTP надо так же сменить IP диапазон кому он отвечает
см. настр. /etc/ntp.conf
И в WordPress поменять IP сервера и все IP по постам и меню.