Добрый день, коллеги. Меня зовут Сарафанов Павел. С 2003 года я работаю в качестве BackEnd разработчика в крупнейших банках Росси таких как: Сбербанк, Дойче банк, ВТБ, Газпромбанк. Организовать свое рабочее место с возможностью удаленной работы из любой точки страны; доступ к локальным ресурсам домашней сети;  доступ, хранение и резервное копирование персональных фотографий и файлов. Есть три локации: Дом, "личный" офис, ноутбук в командировках. Дом Роутер Домашний сервер на базе ПК Персональные компьютеры, ноутбуки и телефоны домочадцев Офис Роутер Рабочий компьютер В командировке или дома Мини роутер Рабочий ноутбук Хранение и доступ с любой локации к персональным документам и фотографиям, резервное копирование и хранение. Возможность подключиться удаленным рабочим столом или помощником к компьютерам в офисе и дома. Доступ с рабочего ноутбука к специфическим ресурсам провайдеров и удаленная работа в любом городе через "белые" IP офиса или дома. Изначально все документы и фото хранились на одном 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", которая синхронизирует любое изменение на любом хосте. Задача доступа удаленным рабочем столом к компьютерам, которые находятся за роутером с "белым" 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 Сделав аналогичную настройку в офисе, я получил возможность доступа удаленным рабочим столом с рабочего ноутбука в любой точке страны к компьютерам дома и офиса. Повсеместное использование аббревиатуры 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 клиентов на ноутбуке. Спасибо всем кто прочитал статью, надеюсь она была полезной.С уважением,Павел Сарафанов.Telegram: @pol1981