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

от автора

Обо мне

Добрый день, коллеги. Меня зовут Сарафанов Павел. С 2003 года я работаю в качестве BackEnd разработчика в крупнейших банках Росси таких как: Сбербанк, Дойче банк, ВТБ, Газпромбанк.

Постановка задачи

Организовать свое рабочее место с возможностью удаленной работы из любой точки страны; доступ к локальным ресурсам домашней сети; доступ, хранение и резервное копирование персональных фотографий и файлов.

Описание инфраструктуры

Есть три локации: Дом, «личный» офис, ноутбук в командировках.

  1. Дом

    1. Роутер

    2. Домашний сервер на базе ПК

    3. Персональные компьютеры, ноутбуки и телефоны домочадцев

  2. Офис

    1. Роутер

    2. Рабочий компьютер

  3. В командировке или дома

    1. Мини роутер

    2. Рабочий ноутбук

Уточнение задачи

  1. Хранение и доступ с любой локации к персональным документам и фотографиям, резервное копирование и хранение.

  2. Возможность подключиться удаленным рабочим столом или помощником к компьютерам в офисе и дома.

  3. Доступ с рабочего ноутбука к специфическим ресурсам провайдеров и удаленная работа в любом городе через «белые» IP офиса или дома.

Решение 1-ой задачи

Изначально все документы и фото хранились на одном Hdd на рабочем компьютере в офисе и периодически вручную копировались на другие компьютеры с помощью флешки, что очень не удобно, долго и постоянно приводило к потере данных, в том числе и из-за физических сбоев на HDD.

Проблема сбоев железа была решена с помощью домашнего NAS (https://www.truenas.com/). Данный сервер бесплатен, сделан на основе Solaris, легко настраивается через Web GUI, а самое главное поддерживает файловую систему ZFX, «снепшоты» данных и «зеркалирование». Были куплены два одинаковых HDD, установлены в рабочий компьютер в офисе, Поднята Hyper-V виртуалка с TrueNas, где созданы dataSet с физическим «зеркалированием» для фото и документов. Доступ к данным был организован через протокол SMB.

Встал вопрос как организовать доступ к этим данным и выполнять резервное копирование. У trueNas есть плагины, которые выполняют эту функцию. Я рассматривал RSync и syncThing, это широко известные бесплатные программы для синхронизации папок через сеть с гибкими настройками. Мой выбор пал на syncThing (https://syncthing.net/) ввиду его простоты и удобства. Установил плагин на сервере trueNas. На компьютерах, где мне нужны были копии данных я установил нужное приложение syncThing и настроил папки. Никаких других действий не потребовалось, папки стали синхронизироваться и все изменения на одном из компьютеров очень быстро применялись к другим компьютерам, в не зависимости от их расположения и сети. Дальше можно было играться настройками папок, определять кто источник, а кто получатель изменений: Так например я остановился, на том, что источником данных (send only) будет рабочий компьютер в офисе, а на остальных компьютерах отражаются эти изменения (receive only), чтобы домочадцы, имеющие доступ к этим папкам не смогли внести изменения в данные. А также заведена «файловая помойка» для обмена между ПК с настройкой «send and receive», которая синхронизирует любое изменение на любом хосте.

Решение 2-ой задачи

Задача доступа удаленным рабочем столом к компьютерам, которые находятся за роутером с «белым» IP решается простой «проброской» портов. При отсутствии «белого» Ip, решение будет описано в 3-ей задаче. Если Вам нужно получить доступ к нескольким компьютерам за роутером, то этот порт можно изменить в настройках. Например:

  1. Домашний компьютер 1 ip 192.168.1.21 порт рабочего стола 3389. Настройка на роутере: внешний порт 3389 -> внутренний ip 192.168.1.21, порт 3389. При подключение с офиса указываем белый ip роутера: 90.189.210.70

  2. Домашний компьютер 2 ip 192.168.1.23 порт рабочего стола 3389. Настройка на роутере: внешний порт 3390 -> внутренний ip 192.168.1.23, порт 3389. При подключение с офиса указываем белый ip роутера: 90.189.210.70:3390

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

Решение 3-ей задачи

Повсеместное использование аббревиатуры VPN, натолкнуло меня на мысль, что с помощью этой технологии легко организовать виртуальную сеть и включить в нее все компьютеры. В итоге я остановился на следующем решении: Поднять в офисе и дома на HyperV «openVpn access server» (https://openvpn.net/access-server/). Данное решение бесплатно при использовании только двух коннектов, что вполне подходит к моим условиям. Проброска портов на роутере позволила подключать openVpn с рабочего ноута в любой точке, а некоторые настройки позволили видеть локальную сеть, использовать smb и удаленный рабочий стол по айпи компьютера без открытия портов на роутерах. И все ресурсы провайдера тоже доступны с ноутбука.

Подробное описание шагов по настройке

И так начнем описывать сделанные настройки по шагам со скриншотами.
В офисе стоит:

  1. Роутер D-Link DIR-2150, белый IP — 5.129.00.00 (в адресе затерты последние 4 цифры), внутренний IP — 192.168.2.1, локальная сеть — 192.168.2.0/24, маска подсети — 255.255.255.0. Выдача IP потребителям настроена через DHCP и по MAC адресу прописаны фиксированные IP.

  2. Рабочий компьютер на базе Windows 11, внутренний IP — 192.168.2.21, маска подсети — 255.255.255.0

Приступим к настройке trueNas:

  1. Включим HyperV в настройках windows: Пуск->Параметры->Приложения->Дополнительные компоненты->Другие компоненты windows. Ставим галочку на против пункта Hyper-V и перезагружаем компьютер.

  2. Запускаем окно управления виртуальными машинами «Диспетчер Hyper-V» и проводим настройку виртуального коммутатора. Выбираем меню «Диспетчер виртуальных коммутаторов» и создаем с типом «Внешняя сеть», что бы наши виртуальные машины были в локальной сети, присваиваем имя и ставим галочку «предоставлять общий доступ…».

  3. Скачиваем ISO образ установщика trueNas https://www.truenas.com/download-truenas-core/

  4. Создаем виртуальную машину «поколения 1»

    устанавливаем выделяемую память не менее 12Gb

    выбираем наш созданный виртуальный коммутатор

    виртуальный жесткий диск

    выбираем пункт «Установить ОС с загрузочного DVD и подкладываем скаченный ранее iso файл

  5. Перед запуском виртуальной машины и установкой ОС необходимо сделать некоторые настройки сети и запуска виртуальной машины. В параметрах виртуальной машины в меню «Сетевой адаптер»->»Дополнительные параметры» указываем постоянный MAC адрес для «виртуалки» = «00:00:00:00:00:01»

    любой другой по вашему желанию и прописываем статический IP для него на роутере «192.168.2.3». Далее в меню «Контрольные точки» отключаем галочку «Включить…»

    В меню «Автоматические действия при запуске» выбираем пункт «Всегда запускать..»

    В меню «Автоматические действия при завершении» выбираем пункт «Завершать работу операционной системы..»

  6. Запускаем виртуальную машину и устанавливаем ОС. Выбираем пункт меню Install/Upgrade

    Далее пробелом выбираем диск «da0» для установки ОС

    Выбираем «Proceed with installation»

    Далее придумываем пароль для root

    Выбираем «Boot via Bios»

    Выбираем пункт «Create Swap»

    и ждем установки. Перегружаем «виртуалку» и извлекаем ISO.

  7. После загрузки trueNas

    на Web GUI сервера: https://192.168.2.3/ui/dashboard , вводим пароль от root, указанный при установке и попадаем на DashBoard

  8. Теперь нам нужно подключить наши HDD. Идем в Windows «Управление компьютером» и в меню управление дисками отключаем винчестеры (на названии диска правой кнопкой и пункт меню «Вне сети»), которые будут использоваться в trueNas сервере.

  9. Выключаем виртуальный сервер trueNas и идем в настройки. Добавляем в SCSI физические HDD диски.

  10. Запускаем сервер и в dashboard-е в меню «Storage»->»Disk» проверяем, что наши диски появились.

  11. Создаем новый Pool. К сожалению проиллюстрировать процесс создания пула у меня нет возможности, но оставлю здесь ссылку на подробное видео: https://www.youtube.com/watch?v=CnRaWED9QN8 и пояснения по RAID https://www.youtube.com/watch?v=-AnkHc7N0zM

  12. Создаем нужные DataSet — это что-то типа дисков в Windows, с возможностью установить лимиты и правила, а так же сделать «снепшот».

  13. Включаем в разделе «Services» SMB для раздачи файлов по сети для Windows

    и дополнительно можем указать название компьютера, его описание и рабочую группу.

  14. Теперь нужно указать какие папки мы будем показывать через SMB. Идем в раздел «Sharing»->»Windows Shares (SMB)» и добавляем нужные папки.

  15. Проверяем что папки появились и файлы доступны через сеть. Для доступа к серверу через SMB можно использовать пользователя root или создать своего. Более подробно о пользователях и правах в этом видео: https://www.youtube.com/watch?v=R-5jbDTCsOE&t=12s

  16. Теперь приступим к настройке syncThing. Идем в раздел «Plugins» и выбираем syncThing, нажимаем кнопку «Install» и сразу переходим в «Advanced plugin installation». Здесь указываем имя конкретного плагина (их может быть несколько одного типа), убираем галочки «DHCP Autoconfigure IPv4», «NAT», «VNET», «Berkeley Packet Filter», указываем в поле «IPv4 address» 192.168.2.4 и «IPV4 mask» 24 (или другой IP, через который будет доступен UI syncThing).

  17. После установки плагина он автоматически запускается и UI доступен по ссылке http://192.168.2.4/syncthing/

  18. Для доступа к данным в ранее созданных DataSet-ах из под syncThing необходимо сделать несколько шагов:

    1. Проверяем id группы и пользователя при установке плагина, под которыми он работает с файловой системой. Для этого идем в раздел «Shell».

      Выполняем команду «cd /mnt/Data/iocage/jails/syncThingTrueNas/root», где «syncThingTrueNas» название нашего экземпляра плагина, а «Data» название Pool-а. После чего выполняем команду «ls -l» и смотрим на строку:
      «drwxr-xr-x 8 983 983 27 Jan 4 21:33 Sync».

    2. Здесь мы видим после 8-ки два одинаковых ID = 983. С этими ID нам нужно создать группу и пользователя. Для этого в разделе «Accounts»->»Groups» создаем группу с именем = «syncGroup» и ID = 983, ставим галочку «Samba Authentication».

      В разделе «Accounts»->»Users» создаем пользователя с именем = «sync» и ID = 983, ставим галочку «Samba Authentication, выбираем «Primary Group» = «syncGroup».

    3. Теперь нам нужно изменить права доступа на те DataSet, которые мы будем синхронизировать через syncThing, так как по умолчанию syncThing не имеет прав на чтение и запись в DataSet-ы. Для этого идем в раздел «Storage»->»Pools»->»Edit Permissions» и указываем «Owner» «user» = «sync», «group» = «syncGroup», ставим галочки «Apply User», «Apply Group», «Apply Permissions Recursively» и применяем изменения.

    4. Здесь стоит отметить, что доступ через SMB к DataSet-у, у которого поменяли владельца, будет теперь под пользователем «sync».

    5. Сейчас нам нужно пробросить DataSet в Jail плагина syncThing, что бы увидеть его в UI. Для этого останавливаем плагин в разделе «Plugins».

      Нажимаем кнопку «Mount Points» и добавляем все нужные DataSet-ы.

    6. Проверяем в GUI syncThing, что нужные папки стали доступны.

  19. Можно настраивать syncThing на других компьютерах и создавать свою сеть синхронизации и «бэкапа». Дополнительное видео по теме: https://www.youtube.com/watch?v=xkER4b5JX8g
    https://www.youtube.com/watch?v=3MKUPJek2Gw

    Приступим к настройке openVpn:

  1. Регистрируемся на портале https://openvpn.net/ в разделе Access Server

  2. Изучаем Access Server Quick Start Guide (https://as-portal.openvpn.com/quick-start-guide) или выполняем следующие шаги.

  3. Скачиваем Virtual Hard Disk https://as-portal.openvpn.com/get-access-server/hyperv

  4. Создаем виртуальную машину «поколения 1», устанавливаем выделяемую память не менее 2Gb, выбираем наш созданный виртуальный коммутатор, в качестве виртуального жесткого диска выбираем ранее скаченный образ.

  5. Перед запуском виртуальной машины и установкой ОС необходимо сделать некоторые настройки сети и запуска виртуальной машины. В параметрах виртуальной машины в меню «Сетевой адаптер»->»Дополнительные параметры» указываем постоянный MAC адрес для «виртуалки» = «00:00:00:00:00:02» или любой другой по вашему желанию и прописываем статический IP для него на роутере «192.168.2.2». Далее в меню «Контрольные точки» отключаем галочку «Включить…». В меню «Автоматические действия при запуске» выбираем пункт «Всегда запускать..». В меню «Автоматические действия при завершении» выбираем пункт «Завершать работу операционной системы..».

  6. При первом включении «виртуалки» вводим login = root, pwd = openvpnas.

    Далее будут спрашиваться некоторые настройки, которые можно оставить все по умолчанию. Только в первом вопросе надо будет набрать «yes».

  7. После установки всех настроек, получим экран, где будет написан url для доступа к Web Gui для дальнейшей настройки. В нашем случае это https://192.168.2.2:943/admin/

  8. Устанавливаем пароль для администратора Web Ui командой «passwd openvpn»

  9. Заходим в Web Ui с логином openvpn и только что установленным паролем.

  10. В меню «CONFIGURATION»->»Activation» вводим ключ активации, полученный при регистрации.

  11. В меню «CONFIGURATION»->»Network Settings» в строке «Hostname or IP Address:» указываем «белый» IP роутера (в нашем случае 5.129.00.00).

  12. В меню «Vpn settings» в поле «Specify the private subnets to which all clients should be given access (one per line):» прописываем нашу локальную сеть, что бы получить прямой доступ к ресурсам через VPN.

  13. На роутере создаем проброску портов 443 и 1194 на наш openVpn access server (в нашем случае 192.168.2.2)

  14. Создаем пользователя, под которым будем «логиниться» на клиенте openVpn. Для этого идем в меню «User management»->»User permissions» вводим в пустое поле логин, потом нажимаем рядом кнопку «More settings» и в меню «Allow Access To these Networks:» указываем нашу локальную сеть 192.168.2.0/24 и поставить галочку «all server-side private subnets».

  15. Скачиваем конфигурацию для клиента. Для этого заходим на страницу https://192.168.2.2:943/?src=connect и выбираем нужный нам пункт.

  16. Настройка закончена, осталось установить на ноутбук клиента и конфигурацию и проверить vpn из другой сети и доступ к локальным ресурсам.

  17. Для упрощения удаленной работы с ноутбука в командировке был приобретен мини роутер GL.iNet GL-MT300N-V2, который поддерживает openVpn Client. Загрузив в него нашу конфигурацию мы можем ничего не делать на ноутбуке — все будет ощущаться так, как будто мы работаем из офиса или дома в любой точке страны. Попробуйте — это очень удобно и снижает вероятность конфликта различных Vpn клиентов на ноутбуке.

P.S.

Спасибо всем кто прочитал статью, надеюсь она была полезной.
С уважением,
Павел Сарафанов.
Telegram: @pol1981


ссылка на оригинал статьи https://habr.com/ru/post/712898/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *