Cover Image

Приличный Win-дедик за $30

October 12, 2020 - Reading time: 5 minutes

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

  • хост для зенки
  • личное удаленное рабочее место
  • организация удленных рабочих мест для сотрудников

Это лично мои кейсы, что в голову сейчас пришли. Поехали!

Когда впервые столкнулся с необходимостью завести такой дедик под зенку, я немного растерялся: коробочные решения мало того, что включали в себя ЕЖЕМЕСЯЧНУЮ плату за лицензию винды, так еще и сетап стоил дороже. И не на каждую железку ставили эту винду. к тому же, ставили только серверный дистрибутив (что накладывает некоторые ограничения на доступный софт). Ну и вишенка на торте - в случае отказа (синий экран и другие проблемы с ОС) помочь может только саппорт либо же самостоятельно заказывать консоль (за деньги) и ждать (хецнер в то время обещал срок предоставления что-то около недели). Ну и в случае смерти ОС - никаких бекапов нет (скорее всего). Не наш путь.

Но есть и другие, более приятные методы. Один из них виртуализация с Proxmox. Суть метода в том, что мы ставим на физическую железку не саму винду, а гипервизор (вроде VirtualBox или VMWare), и уже на него ставим винду. Звучит сложно? А на деле все сильно проще и удобнее, чем ставить ос непосредственно на железку. Ну а что потери производительности? Лично мои реальные замеры не показали хоть какой-то значительной разности: все на уровне погрешности.

Рассматривать все буду на примере хостинга от Hezner.

Шаг 1: заказываем желаемую железку.

Можно взять с аукциона - тут нет (ну точно не было) setup fee.

Шаг 2: накатываем дистрибутив Debian 10 Buster

Тут бы я рекомендовал сразу при установке задать hostname. Меньше возни будет после.

Шаг 3: подготовка системы к установке

Устанавливаем правильные hostname.

Это крайне важный шаг! Не сделав его, можно долго удивляться "а чего же оно не работает?" Проверено на себе.

Проверяем текущий хостнейм

hostname

Проверяем, что у нас в файле

cat /etc/hosts

тут ОБЯЗАТЕЛЬНО должны быть 2 строки

127.0.0.1 localhost.localdomain localhost 
<IP дедика> <текущий хостнейм>

Если не так - меняем

Устанавливаем пароль для root

passwd root

И вводим новый пароль. Он нам потребуется для авторизации в админке.

Шаг 4: ставим Proxmox по инструкции с оф сайта.

Просто вводим по одной эти команды в консоль

echo "deb http://download.proxmox.com/debian/pve buster pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
apt update && apt full-upgrade
apt install proxmox-ve postfix open-iscsi apt remove os-prober

Шаг 5: ставим дополнительный необходимый софт

apt install nano mc rinetd -y

Шаг 6: настраиваем внутреннюю сеть

В любимом браузере переходим на

https://<IPсервера>:8006

СТРОГО HTTPS!

И авторизуемся с кредами root и пароль из 3 шага

Шаг 7: загружаем дистрибутив для установки и создаём виртуальную машину для установки

Загружаем ISO образ Win 10 (НЕ СЕРВЕР - он нам не нужен) в

/var/lib/vz/template/iso

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

и приводим к такому виду

где 192.168.22.1/24 - наша внутренняя сеть. Эстеты могут использовать другие. Сохраняем и ждем загрузки образа. После этого нужно будет перезагрузить сервер! (но не сейчас)

А когда образ загрузился, перейдем к созданию виртуальной машины. В правом верхнем углу ищем синюю кнопку "Create VM".

General Водим name создаваемой машины.

OS Выбираем ISO Image (тот, что мы загрузили). "Guest OS" -> "Microsoft Windows" "10/2016". Далее.

System пропускаем.

Hard Disk Disk size (GiB): размер диска в гигабайтах. Cache: Write back (unsafe)

CPU Type: host. И ставим галку "Advanced" и там активируем "Enable NUMA". Advanced можно отключить.

Memory Сколько ОЗУ выделить этой виртуалке. В любом случае рекомендую оставить не менее 1,5 Гб для основной системы.

Network Bridge: ранее созданный нами бридж. Обычно vmbr0

Confirm Проверяем настройки и кликаем Finish

Вот теперь перезагружаем хост. Можно сделать это через консоль, а можно и кнопкой "Reboot" справа наверху.

Шаг 8: установка Windows

После перезагрузки логинимся в админку и ищем в левом меню нашу виртуалку. Кликаем по ней и запускаем кнопкой "Start" справа наверху. Можно сразу открыть VNC консоль (через нее и будем ставить): кнопка "Console" справа наверху. Ждем приглашения установщика и запускаем установку.

Шаг 9: настраиваем внутренний роутинг трафика (чтоб интернет был в виртуалках)

переходим в ssh консоль и редактируем файл

/etc/rinetd.conf

приводим его к виду

logfile /var/log/rinetd.log
<IPсервера> <портRDP> 192.168.22.100 3389

Немного комментариев. Этот демон только и делает, что перекидывает пакеты с одного интрефейса на другой. Можно использовать iptables, но мне больше по душе делать именно так. Порт можно оставить и дефолтным, но я его всегда меняю на какой-то рандомный - пускай в начале найдут, что ломать =) 192.168.22. - это внутренняя сеть на бридж-адаптере, который мы создали чуть ранее. 100 - это ИД новой виртуалки: они нумеруются со 100. Это просто для удобства: чтоб потом понять что и куда у нас прокидывается. Запускаем:

systemctl start rinetd && systemctl enable rinetd

и заодно активируем NAT.

ip a

и ищем адаптер, на котором висит наш основной ип. В моем случае - eno1

Далее пишем в консоль

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -D POSTROUTING -s '192.168.22.0/24' -o eno1 -j MASQUERADE

Шаг 10: настраиваем сеть и удаленный доступ в винде

Переходим в свойства системы и активируем удаленный доступ. Так же, настраиваем IP на сетевом адаптере. Пишем ип 192.168.22.100 шлюз (gateway) 192.168.22.1 и днс 1.1.1.1 и 8.8.8.8. Сохраняем.

На этом этапе уже можно пробовать логиниться по RDP: уже должно работать. Лично у меня на таких дедиках чаще сидят группы работников, потому ограничение на одну активную RDP сессию неприемлемо. Скачиваем RDPWarpper и подкидываем ему этот конфиг (выложу чуть позже). Собирал сам в сети по кусочкам, использую в продакшене - работает. Вроде должна быть поддержка последних билдов Win10 Pro, но это не точно.

На этом, собственно - все. Proxmox умеет делать разные бекапы. В случае отказа - просто загружаем ОС в безопасном режиме и восстанавливаем работу. Ну и никто посторонний не залезет. Все просто и надежно. Если что-то еще вспомню - допишу.

Удачи, камрады.

Об этом блоге

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