Организация рабочего места в современных условиях
Обо мне
Добрый день, коллеги. Меня зовут Сарафанов Павел. С 2003 года я работаю в качестве BackEnd разработчика в крупнейших банках Росси таких как: Сбербанк, Дойче банк, ВТБ, Газпромбанк.
Постановка задачи
Организовать свое рабочее место с возможностью удаленной работы из любой точки страны; доступ к локальным ресурсам домашней сети; доступ, хранение и резервное копирование персональных фотографий и файлов.
Описание инфраструктуры
Есть три локации: Дом, «личный» офис, ноутбук в командировках.
Дом
Роутер
Домашний сервер на базе ПК
Персональные компьютеры, ноутбуки и телефоны домочадцев
Офис
Роутер
Рабочий компьютер
В командировке или дома
Мини роутер
Рабочий ноутбук
Уточнение задачи
Хранение и доступ с любой локации к персональным документам и фотографиям, резервное копирование и хранение.
Возможность подключиться удаленным рабочим столом или помощником к компьютерам в офисе и дома.
Доступ с рабочего ноутбука к специфическим ресурсам провайдеров и удаленная работа в любом городе через «белые» 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 ip 192.168.1.21 порт рабочего стола 3389. Настройка на роутере: внешний порт 3389 → внутренний ip 192.168.1.21, порт 3389. При подключение с офиса указываем белый ip роутера: 90.189.210.70
Домашний компьютер 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 и удаленный рабочий стол по айпи компьютера без открытия портов на роутерах. И все ресурсы провайдера тоже доступны с ноутбука.
Подробное описание шагов по настройке
И так начнем описывать сделанные настройки по шагам со скриншотами.
В офисе стоит:
Роутер 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.
Рабочий компьютер на базе Windows 11, внутренний IP — 192.168.2.21, маска подсети — 255.255.255.0
Приступим к настройке trueNas:
Включим HyperV в настройках windows: Пуск→Параметры→Приложения→Дополнительные компоненты→Другие компоненты windows. Ставим галочку на против пункта Hyper-V и перезагружаем компьютер.
Запускаем окно управления виртуальными машинами «Диспетчер Hyper-V» и проводим настройку виртуального коммутатора. Выбираем меню «Диспетчер виртуальных коммутаторов» и создаем с типом «Внешняя сеть», что бы наши виртуальные машины были в локальной сети, присваиваем имя и ставим галочку «предоставлять общий доступ…».
Скачиваем ISO образ установщика trueNas https://www.truenas.com/download-truenas-core/
Создаем виртуальную машину «поколения 1»
устанавливаем выделяемую память не менее 12Gb
выбираем наш созданный виртуальный коммутатор
виртуальный жесткий диск
выбираем пункт «Установить ОС с загрузочного DVD и подкладываем скаченный ранее iso файл
Перед запуском виртуальной машины и установкой ОС необходимо сделать некоторые настройки сети и запуска виртуальной машины. В параметрах виртуальной машины в меню «Сетевой адаптер»→«Дополнительные параметры» указываем постоянный MAC адрес для «виртуалки» = »00:00:00:00:00:01»
любой другой по вашему желанию и прописываем статический IP для него на роутере »192.168.2.3». Далее в меню «Контрольные точки» отключаем галочку «Включить…»
В меню «Автоматические действия при запуске» выбираем пункт «Всегда запускать…»
В меню «Автоматические действия при завершении» выбираем пункт «Завершать работу операционной системы…»
Запускаем виртуальную машину и устанавливаем ОС. Выбираем пункт меню Install/Upgrade
Далее пробелом выбираем диск «da0» для установки ОС
Выбираем «Proceed with installation»
Далее придумываем пароль для root
Выбираем «Boot via Bios»
Выбираем пункт «Create Swap»
и ждем установки. Перегружаем «виртуалку» и извлекаем ISO.
После загрузки trueNas
на Web GUI сервера: https://192.168.2.3/ui/dashboard, вводим пароль от root, указанный при установке и попадаем на DashBoard
Теперь нам нужно подключить наши HDD. Идем в Windows «Управление компьютером» и в меню управление дисками отключаем винчестеры (на названии диска правой кнопкой и пункт меню «Вне сети»), которые будут использоваться в trueNas сервере.
Выключаем виртуальный сервер trueNas и идем в настройки. Добавляем в SCSI физические HDD диски.
Запускаем сервер и в dashboard-е в меню «Storage»→«Disk» проверяем, что наши диски появились.
Создаем новый Pool. К сожалению проиллюстрировать процесс создания пула у меня нет возможности, но оставлю здесь ссылку на подробное видео: https://www.youtube.com/watch? v=CnRaWED9QN8 и пояснения по RAID https://www.youtube.com/watch? v=-AnkHc7N0zM
Создаем нужные DataSet — это что-то типа дисков в Windows, с возможностью установить лимиты и правила, а так же сделать «снепшот».
Включаем в разделе «Services» SMB для раздачи файлов по сети для Windows
и дополнительно можем указать название компьютера, его описание и рабочую группу.
Теперь нужно указать какие папки мы будем показывать через SMB. Идем в раздел «Sharing»→«Windows Shares (SMB)» и добавляем нужные папки.
Проверяем что папки появились и файлы доступны через сеть. Для доступа к серверу через SMB можно использовать пользователя root или создать своего. Более подробно о пользователях и правах в этом видео: https://www.youtube.com/watch? v=R-5jbDTCsOE&t=12s
Теперь приступим к настройке 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).
После установки плагина он автоматически запускается и UI доступен по ссылке http://192.168.2.4/syncthing/
Для доступа к данным в ранее созданных DataSet-ах из под syncThing необходимо сделать несколько шагов:
Проверяем 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».Здесь мы видим после 8-ки два одинаковых ID = 983. С этими ID нам нужно создать группу и пользователя. Для этого в разделе «Accounts»→«Groups» создаем группу с именем = «syncGroup» и ID = 983, ставим галочку «Samba Authentication».
В разделе «Accounts»→«Users» создаем пользователя с именем = «sync» и ID = 983, ставим галочку «Samba Authentication, выбираем «Primary Group» = «syncGroup».
Теперь нам нужно изменить права доступа на те DataSet, которые мы будем синхронизировать через syncThing, так как по умолчанию syncThing не имеет прав на чтение и запись в DataSet-ы. Для этого идем в раздел «Storage»→«Pools»→«Edit Permissions» и указываем «Owner» «user» = «sync», «group» = «syncGroup», ставим галочки «Apply User», «Apply Group», «Apply Permissions Recursively» и применяем изменения.
Здесь стоит отметить, что доступ через SMB к DataSet-у, у которого поменяли владельца, будет теперь под пользователем «sync».
Сейчас нам нужно пробросить DataSet в Jail плагина syncThing, что бы увидеть его в UI. Для этого останавливаем плагин в разделе «Plugins».
Нажимаем кнопку «Mount Points» и добавляем все нужные DataSet-ы.
Проверяем в GUI syncThing, что нужные папки стали доступны.
Можно настраивать syncThing на других компьютерах и создавать свою сеть синхронизации и «бэкапа». Дополнительное видео по теме: https://www.youtube.com/watch? v=xkER4b5JX8g
https://www.youtube.com/watch? v=3MKUPJek2GwПриступим к настройке openVpn:
Регистрируемся на портале https://openvpn.net/ в разделе Access Server
Изучаем Access Server Quick Start Guide (https://as-portal.openvpn.com/quick-start-guide) или выполняем следующие шаги.
Скачиваем Virtual Hard Disk https://as-portal.openvpn.com/get-access-server/hyperv
Создаем виртуальную машину «поколения 1», устанавливаем выделяемую память не менее 2Gb, выбираем наш созданный виртуальный коммутатор, в качестве виртуального жесткого диска выбираем ранее скаченный образ.
Перед запуском виртуальной машины и установкой ОС необходимо сделать некоторые настройки сети и запуска виртуальной машины. В параметрах виртуальной машины в меню «Сетевой адаптер»→«Дополнительные параметры» указываем постоянный MAC адрес для «виртуалки» = »00:00:00:00:00:02» или любой другой по вашему желанию и прописываем статический IP для него на роутере »192.168.2.2». Далее в меню «Контрольные точки» отключаем галочку «Включить…». В меню «Автоматические действия при запуске» выбираем пункт «Всегда запускать…». В меню «Автоматические действия при завершении» выбираем пункт «Завершать работу операционной системы…».
При первом включении «виртуалки» вводим login = root, pwd = openvpnas.
Далее будут спрашиваться некоторые настройки, которые можно оставить все по умолчанию. Только в первом вопросе надо будет набрать «yes».
После установки всех настроек, получим экран, где будет написан url для доступа к Web Gui для дальнейшей настройки. В нашем случае это https://192.168.2.2:943/admin/
Устанавливаем пароль для администратора Web Ui командой «passwd openvpn»
Заходим в Web Ui с логином openvpn и только что установленным паролем.
В меню «CONFIGURATION»→«Activation» вводим ключ активации, полученный при регистрации.
В меню «CONFIGURATION»→«Network Settings» в строке «Hostname or IP Address:» указываем «белый» IP роутера (в нашем случае 5.129.00.00).
В меню «Vpn settings» в поле «Specify the private subnets to which all clients should be given access (one per line):» прописываем нашу локальную сеть, что бы получить прямой доступ к ресурсам через VPN.
На роутере создаем проброску портов 443 и 1194 на наш openVpn access server (в нашем случае 192.168.2.2)
Создаем пользователя, под которым будем «логиниться» на клиенте openVpn. Для этого идем в меню «User management»→«User permissions» вводим в пустое поле логин, потом нажимаем рядом кнопку «More settings» и в меню «Allow Access To these Networks:» указываем нашу локальную сеть 192.168.2.0/24 и поставить галочку «all server-side private subnets».
Скачиваем конфигурацию для клиента. Для этого заходим на страницу https://192.168.2.2:943/? src=connect и выбираем нужный нам пункт.
Настройка закончена, осталось установить на ноутбук клиента и конфигурацию и проверить vpn из другой сети и доступ к локальным ресурсам.
Для упрощения удаленной работы с ноутбука в командировке был приобретен мини роутер GL.iNet GL-MT300N-V2, который поддерживает openVpn Client. Загрузив в него нашу конфигурацию мы можем ничего не делать на ноутбуке — все будет ощущаться так, как будто мы работаем из офиса или дома в любой точке страны. Попробуйте — это очень удобно и снижает вероятность конфликта различных Vpn клиентов на ноутбуке.
P.S.
Спасибо всем кто прочитал статью, надеюсь она была полезной.
С уважением,
Павел Сарафанов.
Telegram: @pol1981