Pull to refresh

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

Reading time9 min
Views11K

Обо мне

Добрый день, коллеги. Меня зовут Сарафанов Павел. С 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

Tags:
Hubs:
Total votes 13: ↑8 and ↓5+5
Comments18

Articles