воскресенье, 12 ноября 2017 г.

proxmox 5.1 best practis windows 2016



Если долго мучиться, что-нибудь получится! В данной статье будут рекомендации по оптимизации работы виртуалок с Windows 2016. Этого нет в официальных источниках. А если оставить дефолтные настройки, можно схлопотать нехилые лаги при нагрузке. Основной упор делается на паравиртуализацию виртуалок. В случае lvm-thin можно еще включить Discard  в самом LVM.

- Gues OS: Type - Windows; Version - 10/2016
- Memory: Use fixed size memory (если выбрать динамическую, будут фризы)
- CPU: Enable NUMA - yes; Type - host (NUMA - чутка добавляет производительности, как и host)
- Bus/Device: VirtIO SCSI (sinngle)
- Cache: Write back
- Discard - YES
- Storage: local-lvm (or local-zfs, or RAW disk)
- IO Thread - YES
- Network model: VirtIO (paravirtualized)


Фанатам голого QEMU+KVM посвящается

[Unit] Description=Windows 7 Professional amd64 Wants=network.target After=network.target [Service] ExecStartPre=/sbin/setcap cap_net_admin+ep /usr/lib/qemu/qemu-bridge-helper ExecStart=/usr/bin/kvm -nodefaults \ -vga std \ -rtc base=localtime \ -cpu host -smp cores=2,threads=1 -m 2048 \ -vnc 127.0.0.1:3 \ -boot c \ -monitor unix:/var/lib/kvm/monitors/win7-amd64.sock,server,nowait \ -usbdevice tablet \ -balloon virtio \ -netdev bridge,id=hn0,br=br0 \ -device virtio-net-pci,netdev=hn0,id=nic0,mac=DE:AD:BE:EF:A9:6E \ -drive file=/var/lib/kvm/images/virtio-win.iso,media=cdrom \ -drive file=/var/lib/kvm/images/win7-amd64.qcow2,if=none,id=drive0 \ -object iothread,id=iothread0 \ -device virtio-scsi-pci,iothread=iothread0,id=scsi0 \ -device scsi-hd,bus=scsi0.0,drive=drive0 ExecStop=-/bin/sh -c "echo system_powerdown | socat - UNIX-CONNECT:/var/lib/kvm/monitors/win7-amd64.sock > /dev/null 2>&1" KillMode=none PermissionsStartOnly=true TimeoutStopSec=3600 Restart=on-failure User=kvm [Install] WantedBy=multi-user.target

пятница, 10 ноября 2017 г.

Переезд с Promxox 5.1 на vmware 6.5, и знакомство с ним!

Давеча на производстве потребовался гипервизор, чтобы развернуть на нем виртуальные машины для производственных нужд. Ввиду своей любви к OpenSource, я поставил на сервер Proxmox 5.1, и был страшно разочарован низкой производительностью дисковой системы виртуальных машин с ОС Windows. Постоянно были BSOD, фризы и не выдает всю мощь железо.

Довольно часто слышал позитивные отзывы о VMWare, поэтому в оперативном порядке пришлось перейти на него. Не все так просто, как бы этого хотелось, поэтому пишу эту заметку тем (и для себя), кто надумает переезжать на VMWare 6.5. Если решились на vmware, будьте готовы к трудностям, и разминайте булки.

В Proxmox необходимо сконвертировать диски виртуальных машин в .vmdk файлы, чтобы было потом проще их добавлять в vmware.

В VMWare имеется Compability list, чтобы узнать, есть ли поддержка имеющегося железа. К сожалению,  в списке не было Супернегра x9dr3-f, поэтому пришлось действовать на свой страх и риск. Могу сказать одно. Завелось. Причем, не просто завелось, а все работает как надо. Теперь по порядку.

1. Регистрируемся на сайте VMWare (заполняем анкету на запрос ключа)
2. Заходим сюда и скачиваем VMware vSphere Hypervisor (ESXi ISO) image (Includes VMware Tools)
3. Записываем на флешку
4. загружаем сервер с флешки
5. Устанавливаем (установка довольно примитивная, в стиле Далее-Далее-Готово)
6. Перезагружаем сервер

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

Подключаем NFS-шару (на которой диски виртуалок)

1. В случае если с веб-морды не получается подрубить NFS-шару, необходимо залогиниться по SSH, и сделать это посредством команды:

esxcfg-nas -a nas-share -o 10.1.1.20 -s /volume1/nfs-back

Перенос созданных виртуальные машины на новый гипервизор

1. Необходимо создать виртуальную машину (достаточно простой мастер, описывать нет смысла)

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

3. Импорт диска выполняется командой:

vmkfstools -i /vmfs/volumes/nas-share/vm1/vm1.vmdk /vmfs/volumes/datastore1/vm-1/vm.vmdk

После импорта, необходимо кликнуть ПКМ на новую виртуальнмую машину, выбрать Edit settings, нажать Add hard dis -> Add existing hard drive
Выбрать диск, и нажать Save.
Всё, на этом виртуалка готова, можно нажать Run, и она запустится. Хотя, нет, не все. Без VMWare Tools виртуалка будет иметь ряд ограничений. После загрузки виртуалки, в панели управления VMWare кликаем ПКМ по виртуалке, выбираем Guest -> Install VMWare tools
Если виртуалка вендовая, появится еще один виртуальный CD-ROM, и нужно будет запустить файл Setup.exe (тоже Далее-Далее-Готово). Перезагрузка, и наслаждаемся. Также рекомендуется устанавливать VMWare Tools, чтобы виртуальная машина могла принимать сигнал shutdown, а не жестко выключаться.


На этом настройка гипервизора не закачивается. Нужно же еще настроить автозапуск виртуалок при загрузке физического сервера.

Идём в Manage -> Autostart -> Edit settings (Enable - YES)
и по личному усмотрению выставить таймауты включения и выключения. Данные таймауты универсальны, но можно настроить персонально для каждой виртуалке.

После включения возможности автозапуска виртуалок, нужно включить эту опцию в конкретных виртуальных машинах. Для этого достаточно кликнуть ПКМ -> Autostart -> Enable

Теперь виртуалки включаются автоматически. Не стоит забывать о возможности отключения электроэнергии, поэтому необходимо настроить корректное завершение работы сервера при низком заряде батареи ИБП.

В случае с ИБП от компании APC  все гораздо проще, но в данном кейсе подключаем Ippon innova RT1000 к VMWare
Можно прочитать официальный мануал, а можно последовать краткой форме написанной ниже



Не много оффтопа. Для управления гипервизором понадобится VMware vSphere Management Assistant (vMA). В 6.5 планировали выпилить vMA, но все же оставили. Поэтому идем сюда и качаем zip-архив. Создаем виртуалку (SLES 11), импортируем .vmdk файл, подключаем его, и получаем рабочую vMA. Сосстно vMA и будет вырубать гипервизор, если вдруг чего.

Через веб-интерфейс подключаемся к vMA, включаем ssh, логинимся по ssh

ssh vi-admin@ip-address-of-vma

качаем Winpower

wget http://www.ups-software-download.com/winpower/data/Linux%20AMD64/Winpower_setup_LinuxAMD64.tar.gz

tar -xvf Winpower_setup_LinuxAMD64.tar.gz
cd Winpower_setup_LinuxAMD64/

настраиваем права на каталоги

sudo chmod -R 777 InstallerData
sudo chmod -R 777 LinuxAMD64

устанавливаем winpower (может запросить ключ, он гуглим)

sudo ./setup_console.bin

#перезагружаем vma

reboot

Снова логинимся по ssh, добавляем текущий хост (или несколько хостов, если один ИБП запитывает не один физический сервер)

cd /opt/MonitorSoftware/
sudo ./config.pl
вбиваем ip физ.сервера, логин и пароль.
Чекаем
cat hostlist
Должно быть что-то такое
172.10.13.9 root Sn9PvJ1d=

Ехал Linux через Windows

Теперь надо настроить с вендовой машины работу wipower в vma (Устанавока в венду Winpower проходит быстро, тоже Далее-Далее-Готово).  На этом мне дальше лень вдаваться в подробности. 

понедельник, 7 августа 2017 г.

Client OpenVPN MikroTik RB951Ui

Задача: базовая настройка и подключение MikroTik RB951Ui в качестве клиента.  Так же необходимо расшарить его внутреннюю сеть, для доступа из других подсетей.  Подключаться маршрутизатор будет к существующему серверу OpenVPN через файл client.ovpn 

Дано: предполагается, что у нас свежеустановленный OpenWRT. Теперь необходимо поставить OpenVPN (если прошивка была собрана вручную с поддержкой openvpn, то это не требуется)

1-й этап - предварительная настройка маршрутизатора:

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


 opkg update
 opkg install openvpn-openssl

Для удобства в некоторых настройках, лучше установить веб-морду

 opkg install luci-ssl

Настройка адреса локальной сети. Кастомные DNS


Изменить адрес самого машрутизатора, и адрес его локальной сети на 192.168.14.0/24

Через веб-интерфейс

Network -> Interfaces -> LAN (Edit) -> IPv4 address
И вместе привычного 192.168.1.1 вписываем 192.168.14.1 а диапазон dhcp и другие настройки изменятся автоматом. Надо подождать около минуты, пока все настройки применятся. А после можно уже подключаться по новому адресу к маршрутизатору.

Через консоль

vi /etc/config/network

........
config interface 'lan'
option type 'bridge'
option ifname 'eth1'
option proto 'static'
option netmask '255.255.255.0'
option ip6assign '60'
option ipaddr '192.168.14.1'
option dns '192.168.13.2 192.168.13.15'
........

Опционально можно изменить DNS-сервера для WAN-интерфейса. Получается, что для LAN и WAN можно устаналивать отличные друг от друга DNS-сервера.

Через веб-интерфейс

Network -> Interfaces -> WAN -> Edit -> Advance settings 

Use DNS servers advertised by peer - снять галку, и появится поле Custom DNS
Добавляем еще одно поле через "+", и в каждое поле по одному DNS вписываем
192.168.13.2
192.168.13.15

Через консоль

vi /etc/config/network
......
config interface 'wan'
option ifname 'eth0'
option proto 'dhcp'
option peerdns '0'
option dns '192.168.13.2 192.168.13.15'
.......

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


Чтобы  DHCP выдавал dns-сервера: 192.168.13.2 и 192.168.13.15  переходим в

Interfaces -> LAN -> Edit -> DHCP Server -> Advance settings

И в поле DHCP options вписываем
6,192.168.13.2,192.168.13.15

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

Через консоль

vi /etc/config/dhcp
........
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option dhcpv6 'server'
option ra 'server'
option ra_management '1'
list dhcp_option '6,192.168.13.2,192.168.13.15'
.........
Чтобы в качестве локального домена был какой-нибудь example.com вместо lan, редактируем

vi /etc/config/dhcp

В секции
confg dnsmasq
меняем значение
option domain 'lan'
на
option domain 'example.com'

Настройка WiFi 



Веб-версия
Здесь все понятно и без знаний английского. Стоит только отметить, что по умолчанию маршрутизатор работает в режиме клиента. 

Network -> Wireless ->  Enable

Консольная версия

vi /etc/config/wireless

config wifi-iface
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'Access-point-wifi'
option hidden '0'
option encryption 'psk-mixed'

option key 'Password-of-access-point'


Предварительная настройка FireWall


Чтобы работал интернет у клиентов сети 192.168.14.0/24 необходимо изменить правило для зоны lan в firewall.

Веб-версия

Network -> Firewall ->lan (edit: поставить напротив forward - accept), иначе пакеты будут дропаться, и интернет будет только у самого машрутизатора.

Консольная версия
.........
config zone
option name 'lan'
list network 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
..........

Настройка hostname, timezone и зажигаем светодиоды в ваших сердцах RB951Ui


Веб-вариант смены hostname и timezone
System -> System 
Hostname: OpenWRT
и OpenWRT меняем на свой
Timezone можно выбрать из выпадающего списка.

Консольный вариант смены hostname и timezone

vi /etc/config/system
.........
config system
option ttylogin '0'
option hostname 'office-k'
option zonename 'Europe/Moscow'
.........

Чтобы зажечь светодиоды, необходимо в конец /etc/config/system  вставить

config led 'act'
      option trigger 'netdev'
      option mode 'link tx rx'
      option sysfs 'rb:green:act'
      option name 'ACT'
      option dev 'eth1'
      option brightness '0'
config led 'p1'
      option trigger 'netdev'
      option name 'Port_1'
      option sysfs 'rb:green:port1'
      option dev 'eth0'
      option mode 'link tx rx'
config led 'p2'
      option trigger 'switch0'
      option name 'Port_2'
      option sysfs 'rb:green:port2'
      option port_mask '0x10'
      option mode 'link tx rx'
config led 'p3'
      option name 'Port_3'
      option sysfs 'rb:green:port3'
      option trigger 'switch0'
      option port_mask '0x8'
      option mode 'link tx rx'
config led 'p4'
      option name 'Port_4'
      option trigger 'switch0'
      option sysfs 'rb:green:port4'
      option port_mask '0x4'
      option mode 'link tx rx'
config led 'p5'
      option name 'Port_5'
      option sysfs 'rb:green:port5'
      option trigger 'switch0'
      option port_mask '0x2'
      option mode 'link tx rx'
config led 'wlan'
      option sysfs 'rb:green:wlan'
      option name 'WLAN'
      option trigger 'phy0tpt'

А чтобы 5-й порт не горел как глаз Терминатора, необходимо выполнить

echo "echo 0 > /sys/class/gpio/gpio2/value" > /lib/preinit/99_POE_Pot5

После ребута все линки будут гореть нормально, и без всякого красного.


Watchdog 

В случае отвала интернетов и успешного его восстановления, необходимо передернуть сеть. Вариант с watchcat мне не очень нравится, а с документацией по watchdog еще поразбираюсь. Поэтому  решением будет таким:

Открываем список заданий в cron (обычно, файл пуст)

crontab -e

Добавляем сточку

* * * * *   /root/watchdog.sh

Создаем файл 

vi /root/watchdog.sh

с таким вот текстом

#!/bin/ash

tries=0
while [[ $tries -lt 5 ]]
do
if /bin/ping -c 2 8.8.8.8 >/dev/null
then
exit 0
fi
tries=$((tries+1))
done

/etc/init.d/network restart ; /etc/init.d/openvpn restart
exit 0

Не забываем про правушки-муравушки

chmod +x /root/watchdog.sh

2-й этап - конфигурирование клиентской части OpenVPN

Правка конфигурационного файла демона OpenVPN (console only)


Сохраняем старый файл

 mv /etc/config/openvpn /etc/config/openvpn/orig.openvpn

Копируем файл на маршрутизатор:

scp client.ovpn root@192.168.14.1:/etc/openvpn

Создаем новый файл с таким содержанием

 vi /etc/config/openvpn

package openvpn

config openvpn cryptn_vpn
        # Set to 1 to enable this instance:
        option enable 1

        # Include OpenVPN configuration
        option config /etc/openvpn/client.ovpn

Сохраняем, закрываем.


Включаем автозагрузку (вариант здорового человека)

/etc/init.d/openvpn enable

Запускаем

 /etc/init.d/openvpn start

Теперь необходимо добавить интерфейс, чтобы к нему потом применить правила firewall

cat >> /etc/config/network << EOF
config interface 'work_ovpn'
       option proto 'none'
       option ifname 'tun0'
EOF
Добавление новой зоны и назначение правил в ней

cat >> /etc/config/firewall << EOF 
config zone 
       option name 'ovpn_fw' 
       option input 'ACCEPT' 
       option output 'ACCEPT' 
       option forward 'ACCEPT' 
       option masq '1'  
       option network 'work_ovpn' 

config forwarding 
        option dest 'ovpn_fw' 
        option src 'lan' 
EOF


среда, 19 июля 2017 г.

OpenWRT MikroTiK RB951Ui-2HnD

Имеем на руках (возможен вариант с окирпиченным) микротик, и хотим его прошить на OpenWRT.

Схематично (оживление) заливка OpenWRT на роутере микротик RB951Ui-2HnD,
выглядит так: при зажатом RESET, и включении роутера, он попытается получить файл загрузки по сети. Предварительно подготовив файлы и dhcp-сервер, микротик загрузится в режиме похожем на live-cd. После, мы монтируем разделы, через ssh перекидываем файлы, сохраняем их, и перезагрузка. В случае успеха, роутер загрузится с OpenWRT


Дано: рабочий роутер с выходом в Инет (роутер по сути нужен в качестве хаба, и для загрузки файлов прошивки), ноут с wifi, сетевой, и виртуалкой с linux например, в virtualbox. На ноуте wifi-интерфейс работает в режиме моста с виртуалкой (виртуалка в одной сети с ноутом)

1. В виртуалке устанавливаем и поднимаем dnsmasq через скрипт loader.sh  Тело самого скрипта loader.sh (все от рута, чтобы не сношаться с правушками)

#/bin/bash
dnsmasq -i enp3s0 --dhcp-range=192.168.11.100,192.168.11.200 \
--dhcp-boot=openwrt-ar71xx-mikrotik-vmlinux-initramfs.elf \
--enable-tftp --tftp-root=/root/mikrotik/ -d -u root -p0 -K --log-dhcp --bootp-dynamic

2. Создаем каталог, и в него переходим
mkdir /root/mikrotik
cd /root/mikrotik

2. Качаем
wget -c https://downloads.openwrt.org/snapshots/trunk/ar71xx/mikrotik/openwrt-ar71xx-mikrotik-vmlinux-initramfs.elf
wget -c https://downloads.openwrt.org/snapshots/trunk/ar71xx/mikrotik/openwrt-ar71xx-mikrotik-vmlinux-lzma.elf
wget -c https://downloads.openwrt.org/snapshots/trunk/ar71xx/mikrotik/openwrt-ar71xx-mikrotik-defaultnowifi-rootfs.tar.gz


2. Устанавливаем в виртуалке ip на интерфейсе

ip addr add 192.168.11.10/24 dev enp3s0


2. Даем права  скрипту chmod a+x loader.sh
3. Отключаем dhcp на текущем роутере
4. Запускаем скрипт loader.sh в виртуалке
5. Вставлем патч-корд в дохлый роутер в первый порт, и вторым концом в рабочий роутер (к которму ноут подключен через wifi)

6. Зажимаем RESET и включаем. Тем временем смотрим выхлоп в консоли, и там должно быть сказано, что клиент с ip 192.168.1.123 взял себе файлик для заргузки.
7. В случае успеха, ACT будет мигать, и роутер подаст звуковой сигнал (однократный пик)
8. Берем еще один патч-корд, и, например, во второй порт дохлого микротика вставляем одним концом, а вторым в ноут.
9. Назначаем ip на ноуте вручную ip addr add 192.168.11.111/24 dev enp2s0
10. пробуем по ssh подрубиться к нашему ожившему роутеру(192.168.1.1)

11. В случае успеха, делаем финт ушами:
mtd erase /dev/mtd1
mtd erase /dev/mtd2
mkdir /mnt/kernel
mkdir /mnt/rootfs
mount /dev/mtdblock1 /mnt/kernel
mount /dev/mtdblock2 /mnt/rootfs

12. Скачиваем на ноут, а потом заливаем файлики ядра и самой операционки

 mkdir noroute
 cd noroute

 wget -c https://downloads.openwrt.org/snapshots/trunk/ar71xx/mikrotik/openwrt-ar71xx-mikrotik-defaultnoWifi-rootfs.tar.gz
 wget -c https://downloads.openwrt.org/snapshots/trunk/ar71xx/mikrotik/openwrt-ar71xx-mikrotik-vmlinux-initramfs.elf
 wget -c https://downloads.openwrt.org/snapshots/trunk/ar71xx/mikrotik/openwrt-ar71xx-mikrotik-vmlinux-lzma.elf

 scp openwrt-ar71xx-mikrotik-vmlinux-lzma.elf root@192.168.1.1:/tmp
 scp openwrt-ar71xx-mikrotik-defaultnowifi-rootfs.tar.gz root@192.168.1.1:/tmp

13. Финишная пряма. 1. Переименовываем файл ядра. 2. Делаем файл ядра исполняемым. 3. отмонтируем раздел с ядром. 4. Переходим в каталог с примонтированным корневым разделом. 5. Распаковываем архив. 6. Переходим в корень. 7. отмонтируем корневой раздел. 8. синкаем. 9. ребут

mv /tmp/openwrt-ar71xx-mikrotik-vmlinux-lzma.elf /mnt/kernel/kernel
chmod +x /mnt/kernel/kernel
umount /mnt/kernel
cd /mnt/rootfs
tar -xvzf /tmp/openwrt-ar71xx-mikrotik-defaultnowifi-rootfs.tar.gz
cd /
umount /mnt/rootfs
sync

14. Если все окей, роутер загрузится. И 5-й порт будет гореть красным

понедельник, 5 июня 2017 г.

Encrypt archlinux setup


//check efi
#ls /sys/firmware/efi

//check abalible disks
#fdisk -l

//create table of disk
# gdisk /dev/sda

comand (? for help): o

Proceed (Y/N): y

comand (? for help): n
First sector .... : (press Enter)
Last sector ..... : +512MiB
Hex code or GUID (...):  ef00

Comand (? for help): n
First sector .... : (press Enter)
Last sector ..... : (press Enter)
Hex code or GUID (...): 8e00

Comand (? for help): w

Do you want to proceed? (Y/N): y

// now, create fat32 partition efi
# mkfs.fat -F32 /dev/sda1

//create encrypted disk
# cryptsetup -y -v luksFormat /dev/sda2

Are you sure (...): YES
Enter passphrase:
Verify passphrase:

//open crypted disk
# cryptsetup open --type luks /dev/sda2 lvm

Enter passphrase for /dev/sda2:

//check disk lvm
# ls /dev/mapper/lvm

//create phisycal volume group
# pvcreate /dev/mapper/lvm
Physical volume succsesfully created

//create logical volume group
# vgcreate volume /dev/mapper/lvm
 Volume group "volume" successfully created

//create logical volumes
# lvcreate -L21G volume -n root
# lvcreate -l 100%FREE -n home

//create FS from logical partitions
# mkfs.ext4 /dev/mapper/volume-root
# mkfs.ext4 /dev/mapper/volume-home

//mount partitions
# mount /dev/mapper/volume-root /mnt
# mkdir /mnt/home
# mkdir /mnt/boot
# mount /dev/mapper/volume-home /mnt/home
# mount /dev/sda1 /mnt/boot

//instal base
# pacstrap /mnt base base-devel vim

//generated uuid of partitions
# genfstab -p /mnt >> /mnt/etc/fstab

// join chroot
# arch-chroot /mnt

//set date
# ln -s /usr/share/zoneinfo/Asia/Sakhalin /etc/localtime

//sync hwclock
# hwclock --systohc --utc

//set root pass
# passwd
Enter:
Retry:

//edit local.gen
# vim /etc/local.gen
//uncommeting
en_US.UTF-8 UTF-8
en_US ISO-8859-1
ru_RU.UTF-8

//generate locale
# locale-gen

//
# locale > /etc/locale.conf

//edit hostname
# vim /etc/hostname

//edit HOOKS
# vim /etc/mkinitcpio.conf

// "base udev autodetect modconf block keyboard encrypt lvm2 filesystems fsck"

// regenerate linux
#mkinitcpio -p lunux

//install boot
# bootctl --path=/boot install

//edit loader.conf
#vim /boot/loader/loader.conf
//delete all
default arch
timeout 3
editor 0

//edit entry.conf
# vim /boot/loader/entries/arch.conf
//new file
title ArchLinux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options cryptdevice=UUID=asd12e3asd122312ada123:volume root=/dev/mapper/volume-root quiet rw
// help to insirt uuid
:read ! blkid /dev/sda2
//

thats all!

https://www.youtube.com/watch?v=a1AXHpog9iI