Установим необходимые пакеты

apt-get install erlang  gnuplot-nox libtemplate-perl libhtml-template-perl libhtml-template-expr-perl make

Создадим папку перейдем в нее и загрузим дистрибутив программы утилитой wget.

mkdir ./src; cd ./src &&  wget http://tsung.erlang-projects.org/dist/tsung-1.5.1.tar.gz

 

Извлекаем файлы из архива

tar -xvzf tsung-1.5.1.tar.gz

переходим в распакованную папку

#cd ./tsung-1.5.1

и проводим конфигурирование и установку

#./configure && make && make install

 

Также необходимо создать каталог с именем .tsung

#mkdir  ~/.tsung/

Для того, чтобы сгенерировать тестовые планы, можно воспользоваться утилитой tsung-recorder. После того, как вы делаете tsung-recorder start, на порту 8090 подымается http-прокси. В настройках системы (или браузера) пропишите прокси localhost:8090 и дальше притворитесь пользователем и прощелкайте сайт. После того этого, выполните tsung-recorder stop, и у вас появится файл вида ~/.tsung/tsung_recorder20150603-11.xml.

Выглядит этот файл приблизительно вот так.

 

 

И самое интересное, желаемая нагрузка. Tsung симулирует посещения юзеров. Следующий пример иллюстрирует 4 фазы.

Первая длится 5 минут и каждую секунду сайт посещает 1 новых пользователей (Interarrival), итого 5 минут x 5 юзеров/сек = 1500 юзеров.

Вторая фаза еще более повышает нагрузку и длится 10 минут, каждые 100 миллисекунд будет создаваться новый пользователь(Interarrival), в секунду приходит 10 юзеров, в сумме 6 000 юзеров.

Третья фаза  длится 15 минут и каждую секунду сайт посещает 10 новых пользователей(Interarrival), итого 15 минут x 10 юзеров/сек = 9000 юзеров.

Четвертая фаза длится 20 минут и каждую секунду сайт посещает 100 новых пользователей(arrivalrate), итого 20 минут x 100 юзеров/сек = 120000 юзеров.

 

<load>
 <!-- several arrival phases can be set: for each phase, you can set the mean inter-arrival time between new clients and the phasedura
 <arrivalphase phase="1" duration="5" unit="minute">
 <users interarrival="5" unit="second"></users>
 </arrivalphase>
 <arrivalphase phase="2" duration="10" unit="minute">
 <users interarrival="0.100" unit="second"></users>
 </arrivalphase>
 <arrivalphase phase="3" duration="15" unit="minute">
 <users interarrival="10" unit="second"></users>
 </arrivalphase>
 <arrivalphase phase="4" duration="20" unit="minute">
 <users arrivalrate="100" unit="second"/>
 </arrivalphase>
 <user session="rec20150603-1101" start_time="0" unit="second"></user>
</load>

Количество конкурентных пользователей можно задавать двумя способами. Interarrival. Мы указываем, через какое время создавать нового пользователя. В данном примере каждые 100 миллисекунд будет создаваться новый пользователь. Или можно это сделать по-другому, используя «arrival rate»: мы указываем, сколько пользователей создавать за единицу времени (за секунду в данном случае). Также мы можем задавать какие-то специфические сессии. Можно их встраивать в середину нагрузки для имитации запуска каких-то тяжеловесных сервисов или проверок.       Также Tsung может имитировать разные User Agent. Мы можем имитировать, в частности, разные браузеры, задав вероятность (probability) этим параметрам: вероятность присвоения какого-либо User Agent каждому пользователю. В том числе можно имитировать поисковые боты. По умолчанию, если не задавать эти параметры, им присваивается значение tsung.       После этого мы запускаем tsung start. Он проведет нагрузочное тестирование, а дальше получим результаты с помощью tsung_stats.pl   посмотрим созданную папку в папке log

#ls -l  ~/.tsung/log/

 

итого 8
drwxr-xr-x 2 root root 4096 июня 3 19:30 20150603-1930

переходим в нее

#cd   ~/.tsung/log/20150603-1930

и запускаем tsung_stats.pl

#/usr/lib/tsung/bin/tsung_stats.pl

 

 

sudo apt-get install siege
Для проверки сделаем первый тест. Будем симулировать 10 пользователей, которые безостановочно загружают главную страницу в течении 5 минут.
siege -c 10 -b -t 5m http://mysites.com/

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

cat access.log | grep -o -P '(GET|POST) .* HTTP'| awk '{print "http:// mysites.com "$2}'| sort -u | grep -v -P -i '(admin)' >> /tmp/urls.txt

Разберем его поподробнее:

**cat access.log** - выводит лог, где на месте access.log должен быть путь к логу доступа apache
**grep -o -P '(GET|POST) .* HTTP'** - ищем с помощью регулярного выражения url
**awk '{print "http://mysites.com "$2}'** - удаляем шум, добавляем имя хоста (**http://mysites.com замените на свое**) **sort -u** - сортируем, удаляем дубликаты **grep -v -P -i '(admin)'** - фильтруем url, по которым ходить не надо с помощью регулярных выражений Для фильтрации статики, можно применить: **grep -v -P -i '\.(css|js|jpg|png|gif|txt)$' ** **>> /tmp/urls.txt** - отправляем результат в файл

В результате получаем файл, содержащий множество реальных url.  Приводим нашу команду к такому виду:

siege -c 10 -b -t 5m -f /tmp/urls.txt

Чтобы заставить утилиту брать URL из файла не последовательно, а случайно, добавьте опцию '-i':

При необходимости вы можете увеличить диапазон случайно временной задержки между отправкой запросов при помощи опции '-d'. Например, чтобы siege выдерживал случайную паузу между запросами в пределах между 0 и 5 секундами:

siege -c 10 -d 5 -b -t 5m -i -f /tmp/urls.txt
Некоторые опции:
-b - не будет делать паузу между запросами
-c - количество параллельных запросов, отправляемых за один раз
-r - количество повторов запроса
-v - показывает текущие запросы и ответы в консоли
-t - время теста, можно использовать h,m,s
-f - список URL-ов из файла
-i - брать ULR-ы из файла рандомно

Наступает момент, когда нужно скачать весь сайт. Причин может быть несколько я предлагаю рассмотреть решение с помощью утилиты wget

wget -r -k -l 7 -p -E -nc http://example.ru/

Будет создана папка, одноименная сайту. Начинать его просматривать можно начать с index.html

Теперь расшифровка атрибутов:
— r — указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы.
— k — используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме).
— p — указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.).
— l — определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l.
— E — добавлять к загруженным файлам расширение .html.
— nc — при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз.

--user=login - указываем логин
--password='pass' указываем пароль
--save-cookies=cooke
-U "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5" -указание User Agent

P.S. wget — очень мощная утилита, её функционал можно долго изучать.

1

Для того чтобы настроить  время и  часовой пояс в  Debian запускаем команду

# dpkg-reconfigure tzdata

В открывшемся меню выбираем географический район (Европа)

 

Далее выбираем город (Москва)

sity

 

После чего промеряем текущую дату и время

# date

 

 

Прежде всего мы создадим приватный ключ и файл запроса на сертификат для сервера OpenVPN, а также получим по созданному запросу в удостоверяющем центре CA подписанный сертификат. В результате у нас появятся файлы server.crt и server.key. Далее займемся остальными файлами, перечисленными в табл. 3.

Чтобы создать для сервера OpenVPN запрос на сертификат и приватный ключ, нам потребуется установить на сервер OpenVPN программу Easy-RSA, аналогично тому, как мы это делали для удостоверяющего центра CA. 

Установку Easy-RSA, генерацию приватного ключа сервера OpenVPN и запроса на сертификат мы будем делать от имени пользователя vpnoperator, не имеющего привилегий администратора. Добавьте этого пользователя перед началом работ:
# adduser vpnoperator
Прежде всего, устанавливаем на сервере OpenVPN утилиту Easy-RSA и запускаем инициализацию инфраструктуры публичных ключей PKI:
$ cd /home/vpnoperator
$ wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
$ unzip master.zip
$ cd /home/vpnoperator/easy-rsa-master/easyrsa3
$ ./easyrsa init-pki
После успешной инициализации PKI в консоли появится сообщение:
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /home/vpnoperator/easy-rsa-master/easyrsa3/pki
Так как наш сервер OpenVPN не будет играть роль удостоверяющего центра, то после инициализации PKI мы не будем создавать CA командой build-ca.

Инфраструктура PKI будет создана в каталоге /home/vpnoperator/easy-rsa-master/easyrsa3/pki.

На следующем этапе получим запрос на сертификат и приватный ключ сервера OpenVPN:
# ./easyrsa gen-req server
Generating a 2048 bit RSA private key
...............................................................+++
...................................................+++
writing new private key to '/home/vpnoperator/easy-rsa-master/easyrsa3/pki/private/server.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [server]:vps.adminunix.ru
Keypair and certificate request completed. Your files are:
req: /home/vpnoperator/easy-rsa-master/easyrsa3/pki/reqs/server.req
key: /home/vpnoperator/easy-rsa-master/easyrsa3/pki/private/server.key

 

 

 

 

 

./easyrsa sign-req server vps.adminunix.ru

Note: using Easy-RSA configuration from: ./vars

You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 3650 days:

subject=
commonName                = vps.adminunix.ru

Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /home/usersrssh/src/easy-rsa-master/EasyRSA-git-development/openssl-1.0.cnf
Enter pass phrase for /home/usersrssh/src/easy-rsa-master/EasyRSA-git-development/pki/private/ca.key:******
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :PRINTABLE:'vps.adminunix.ru'
Certificate is to be certified until Feb 23 09:10:33 2025 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /home/usersrssh/src/easy-rsa-master/EasyRSA-git-development/pki/issued/vps.adminunix.ru.crt

 

 

 

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

Debian/Ubuntu

Для Debian-based дистрибутивов (debian, ubuntu, mint...):

apt-get install -y openvpn
Создайте пользователя с именем, например, ca и перейдите в его домашний каталог:
# adduser ca
# su ca
$ cd

Настройка сервера OpenVPN

Для OpenVPN версии выше 2.3 набор скриптов easy-rsa не входит в инсталляцию по умолчанию, а скачивается отдельно:

mkdir ./src; cd ./src && wget  https://github.com/OpenVPN/easy-rsa/archive/master.zip
unzip master.zip
cd ./easy-rsa-master
./build/build-dist.sh

Распакуем полученный архив:

tar zxvf EasyRSA-git-development.tgz && cd EasyRSA-git-development

переходим в каталог easyrsa3

cd ./easyrsa3

Конфигурируем сертификат

Скопируем шаблон и отредактируем его
*OPTIONAL* (Comment out the following lines if you do not want your certificates to expire)

#cp ./vars.example ./vars

В файле vars можно изменить данные для подписи ключей под себя, редактируем последние 6 строчек:

# mcedit ./vars

# меняем строки
export KEY_SIZE=2048  # Длинна ключа
export KEY_EXPIRE=3650 # Срок действия ключа в днях
# описание сертификатов по-умолчанию

set_var EASYRSA_REQ_COUNTRY<--->"RU"
set_var EASYRSA_REQ_PROVINCE<-->"RUS"
set_var EASYRSA_REQ_CITY<------>"Perm"
set_var EASYRSA_REQ_ORG>"Copyleft Certificate Co"
set_var EASYRSA_REQ_EMAIL<----->"admin@adminunix.ru"
set_var EASYRSA_REQ_OU<><------>"adminunix"

 

На первом шаге создайте инфраструктуру публичных ключей (Public Key Infrastructure, PKI):
$ ./easyrsa init-pki

Если у нас есть удостоверяющий центр то пропускаем следующий шаг и переходим генериррованию  сертификата X.509 для сервера

Сгенерируем корневой Certificate Authority для сервера

: ./easyrsa build-ca

Попросит дважды ввести новый пароль для ca.crt. Получим:

./pki/ca.crt

Сгенерируем сертификат X.509 для сервера

(Чтобы ключи (сервера и клиентов) не были защищены паролем необходимо  добавлял параметр nopass (его можно установить позже в любое время).)

./easyrsa build-server-full server

Попросит дважды ввести новый пароль для PEM и один раз повторить пароль, сгенерированный ранее для ca.crt

Получим:

./pki/private/server.key

Сгенерируем ключи для клиента:

./easyrsa build-client-full client1

Попросит дважды ввести новый пароль для PEM и один раз повторить пароль, сгенерированный ранее для ca.crt

Получим:

./pki/private/client1.key
./pki/issued/client1.crt

exit

Для экспорта ключей в формат PKCS12

./easyrsa export-p12 client2

 

Сгенерируем файл с параметрами Диффи-Хеллмана (dh.pem):

./easyrsa gen-dh

Это может занять продолжительное время.

Получим:

./pki/dh.pem

Создадим статический ключ HMAC (ta.key):

Для создания ключа HMAC используйте команду openvpn с опциями --genkey и --secret:

# cd /etc/openvpn
# openvpn --genkey --secret ta.key

Перенесём полученные файлы в /etc/openvpn/ для удобства:

mv ./pki/dh.pem /etc/openvpn/dh1024.pem
mv ./pki/private/client1.key /etc/openvpn/
mv ./pki/private/server.key /etc/openvpn/
mv ./pki/ca.crt /etc/openvpn/
mv ./pki/issued/client1.crt /etc/openvpn/
mv ./pki/issued/server.crt /etc/openvpn/

Файлы client1.crt, client1.key, ca.crt нужно скопировать на компьютер клиента, который будет подключаться к OpenVPN-серверу:

cd /etc/openvpn
mkdir ovpn-client
cp -rp  client1.crt client1.key ca.crt ./ovpn-client/
zip ovpn-client.zip ./ovpn-client/*