OpenVPN маршрутизация в локальную сеть

Настройка OpenVPN-сервера на Windows Server 2008/2012

OpenVPN маршрутизация в локальную сеть

Это пошаговое руководство о том, как настроить OpenVPN-сервер в операционных системах Windows Server 2008/2012 и подключить клиентов к созданной виртуальной частной сети.

OpenVPN — открытая реализация технологии VPN — Virtual Private Network, которая предназначена для создания виртуальных частных сетей между группой территориально удаленных узлов поверх открытого канала передачи данных (интернет). OpenVPN подходит для таких задач, как безопасное удаленное сетевое подключение к серверу без открытия интернет-доступа к нему, как будто вы подключаетесь к хосту в своей локальной сети. Безопасность соединения достигается шифрованием OpenSSL.

Как это работает?

По окончанию настройки OpenVPN сервер сможет принимать внешние защищенные SSL сетевые подключения к созданному при запуске VPN-сервиса виртуальному сетевому адаптеру (tun/tap), не затрагивая правила обработки трафика других интерфейсов (внешний интернет-адаптер и др.

) Имеется возможность настроить общий доступ клиентов OpenVPN к конкретному сетевому адаптеру из присутствующих на сервере. Во второй части инструкции рассмотрено такое туннелирование интернет-трафика пользователей.

При этом способе переадресации обрабатывающий VPN-подключения хост будет выполнять и функцию прокси-сервера (Proxy) — унифицировать правила сетевой активности пользователей и осуществлять маршрутизацию клиентского интернет-трафика от своего имени.

Установка OpenVPN на сервер

Скачайте и установите актуальную версию OpenVPN, соответствующую вашей операционной системе. Запустите установщик, убедитесь что на третьем шаге мастера установки выбраны все компоненты для установки.

Обратите внимание, что в этой инструкции дальнейшие команды приведены из расчета, что OpenVPN установлен в директорию по-умолчанию «C:\Program Files\OpenVPN».

Разрешаем добавление виртуального сетевого адаптера TAP в ответ на соответствующий запрос и дожидаемся завершения установки (может занять несколько минут).

Генерация ключей (PKI) центра сертификации, сервера, клиента; алгоритм Диффи-Хеллмана

Для управления парами «ключ/сертификат» всех узлов создаваемой частной сети используется утилита easy-rsa, работающая через командную строку по аналогии с консолью Linux. Для работы с ней откройте запустите командую строку (Сочетание клавиш Win+R, затем наберите cmd и нажмите Enter)

Файлы конфигурации

Скачайте наши файлы конфигурации и скрипты и замените их в каталоге C:\Program Files\OpenVPN\easy-rsa.

Если пути по умолчанию не совпадают, откорректируйте их во всех файлах.

В файле конфигурации openssl-1.0.0.conf обязательно задайте значения переменным, соответствующие вашим данным: countryName_default stateOrProvinceName_default localityName_default 0.organizationName_default

emailAddress_default

Примечание: если значение переменной содержит пробел, то заключите ее в кавычки.

Генерация ключей Центра Сертификации и Сервера

  1. Переименуйте файл index.txt.start в index.txt, serial.start в serial с помощью следующих команд: cd \ cd «C:\Program Files\OpenVPN\easy-rsa» ren index.txt.start index.txt

    ren serial.start serial

    Перейдем к созданию ключа/сертификата центра сертификации. Запустите скрипт: .\build-ca.bat

    В ответ на появляющиеся запросы вы можете просто нажимать Enter. Единственное исключение — поле KEY_CN (Common Name) — обязательно укажите уникальное имя и такое же имя вставьте в поле name.

  2. Аналогичным образом генерируем сертификат сервера. Здесь значение полей Common Name и Name — SERVER: .\build-key-server.bat server

    Примечание: аргумент server — имя будущего файла.

    Для всех генерируемых ключей теперь будет задаваться вопрос о том, подписать ли создаваемый сертификат (Sign the certificate) от имени центра сертификации. Отвечаем y (yes).

Генерация клиентских ключей и сертификатов

Для каждого клиента VPN необходимо сгенерировать отдельный SSL-сертификат.

В конфигурации OpenVPN присутствует опция, включив которую вы можете использовать один сертификат для нескольких клиентов (см. файл server.ovpn -> опция «dublicate-cn»), но это не рекомендуется с точки зрения безопасности. Сертификаты можно генерировать и в дальнейшем, по мере подключения новых клиентов. Поэтому сейчас создадим только один для клиента client1:

Выполните следующие команды для генерации клиентских ключей: cd \ cd «C:\Program Files\OpenVPN\easy-rsa»

.\build-key.bat client1

Примечание: аргумент client1 — имя будущего файла.

В поле Common Name указываем имя клиента (в нашем случае client1).

Параметры Diffie Hellman

Для завершения настройки шифрования, необходимо запустить скрипт генерации параметров Диффи-Хеллмана: .\build-dh.bat

Отображение информации о создании параметров выглядит так:

Перенос созданных ключей/сертификатов

Сгенерированные сертификаты находятся в директории C:\Program Files\OpenVPN\easy-rsa\keys. Скопируйте перечисленные ниже файлы в каталог C:\Program Files\OpenVPN\config:

  • ca.crt
  • dh2048.pem/dh1048.pem
  • server.crt
  • server.key

Конфигурация сервера OpenVPN

В дереве найдите каталог HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters. В правой части окна найдите переменную IPEnableRouter, двойным щелчком мыши перейдите в окно редактирования значения и измените его на 1, тем самым разрешив адресацию на VPS.

  1. Перейдем к настройке непосредственно VPN-сервера, используйте наш файл конфигурации с именем server.ovpn и поместите его в директорию C:\Program Files\OpenVPN\config.

    Откройте файл, находим пути до ключей (см. ниже). Проверяем в нем пути до скопированных ранее сертификатов ca.crt, dh1024.pem/dh2048.pem, server.key, server.crt и при необходимости меняем: port 1194 proto udp dev tun server 10.8.0.0 255.255.255.

    0 ca «C:\\Program Files\\OpenVPN\\config\\ca.crt» cert «C:\\Program Files\\OpenVPN\\config\\server.crt» key «C:\\Program Files\\OpenVPN\\config\\server.key» dh «C:\\Program Files\\OpenVPN\\config\\dh2048.pem» push «redirect-gateway def1» push «dhcp-option DNS 8.8.8.

    8″ keepalive 10 120 comp-lzo persist-key persist-tun

    verb 3

    Сохраняем файл.

  2. Теперь необходимо разрешить пересылку трафика между адаптерами. Выполните следующие шаги: Панель управления -> Сеть и интернет -> Центр управления сетями и общим доступом -> Изменение параметров адаптера. Выберете адаптер который смотрит во внешнюю сеть Интернет (TAP-адаптер отвечает за VPN соединение). В нашем примере это Ethernet 2.

    С помощью двойного щелчка мыши откройте Свойства адаптера и перейдите во вкладку Доступ, отметьте галочкой все пункты. Сохраните изменения.

  3. Далее нужно включить IP-адресацию.

    С помощью поиска Windows найдите приложение REGEDIT.exe.

Автозапуск OpenVPN

Сразу настроим службу OpenVPN на автозапуск при старте системы. Открываем «Службы»(Services) Windows. Находим в списке OpenVPN -> ПКМ -> Свойства (Properties) -> Запуск: Автоматически

На этом базовая настройка сервера виртуальной частной сети завершена. Найдите файл C:\Program Files\OpenVPN\config\server.ovpn -> кликните правой кнопкой мыши -> «Start OpenVPN on this config» для запуска сервера виртуальной частной сети и подготовленного нами файла настроек.

Читайте также  Файловый сервер на linux для Windows сетей

Конфигурация клиента OpenVPN

Клиентские приложения OpenVPN доступны для всех популярных ОС: Windows / Linux / iOS / Android. Для MacOS используется клиент Tunnelblick. Все эти приложения работают с одними и теми же файлами конфигурации. Возможны лишь некоторые различия нескольких опций.

Узнать о них вы можете, изучив документацию к своему клиенту OpenVPN. В этом руководстве мы рассмотрим подключение Windows-клиента с использованием того же дистрибутива программы, который мы устанавливали на сервер.

При использовании приложений для других операционных систем логика настройки аналогична.

  1. Устанавливаем актуальную версию OpenVPN на клиентский компьютер.
  2. Копируем в директорию C:\Program Files\OpenVPN\config созданные ранее на сервере файлы клиентских сертификатов (2 сертификата с расширением .crt и ключ с расширением .key) и используем наш файл конфигурации клиента client.ovpn. Последний файл после копирования на устройство пользователя удаляем с сервера или переносим из папки config во избежание путаницы в будущем.
  3. Откройте файл client.ovpn. Найдите строку remote my-server-1 1194 и укажите в ней ip-адрес или доменное имя vpn-сервера:
    remote 1194

    Например: remote 111.222.88.99 1194

  4. Находим пути до сертификатов. Указываем в нем пути до скопированных ранее сертификатов ca.crt, client1.key, client1.crt как в примере ниже:
    # See the server config file for more # description. It's best to use # a separate .crt/.key file pair # for each client. A single ca # file can be used for all clients. ca «C:\\Program Files\\OpenVPN\\config\\ca.crt» cert «C:\\Program Files\\OpenVPN\\config\\client1.crt» key «C:\\Program Files\\OpenVPN\\config\\client1.key»

    # This file should be kept secret

  5. Сохраните файл. Настройка клиентской части завершена.

Проверка правил Брандмауэра Windows

Внимание! Для корректной работы сервиса OpenVPN требуется, чтобы на севере были открыты соответствующие порты (по-умолчанию UDP 1194). Проверьте соответствующее правило в вашем Firewall'е: Брандмауэре Windows или стороннем антивирусном ПО.

Проверка OpenVPN-соединения

Запустите OpenVPN сервер, для этого перейдите в директорию C:\Program Files\OpenVPN\config и выберите файл конфигурации сервера (у нас server.ovpn -> ПКМ -> «Start OpenVPN on this config file»).

Запустите клиент, для этого перейдите в директорию C:\Program Files\OpenVPN\config и выберите файл конфигурации клиента (у нас client.ovpn -> ПКМ -> «Start OpenVPN on this config file»).

На экране отобразится окно статуса подключения. Через несколько секунд оно будет свернуто в трей. Зеленый индикатор ярлыка OpenVPN в области уведомлений говорит об успешном подключении.

Проверим доступность с клиентского устройства сервера OpenVPN по его внутреннему адресу частной сети:

  1. Нажимаем клавиши Win+R и появившемся окне вводим cmd для открытия командной строки.
  2. Выполняем команду ping до адреса нашего сервера в виртуальной частной сети (10.8.0.1): ping 10.8.0.1
  3. В случае корректной настройки VPN начнется обмен пакетами с сервером
  4. С помощью утилиты tracert проверим по какому маршруту идут пакеты от клиента. В консоли введите следующую команду: tracert ya.ru
    Из результата работы утилиты мы видим, что сначала пакеты отправляются на сервер VPN, а уже потом во внешнюю сеть.

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

 

Источник: https://1cloud.ru/help/windows/setup_openvpnserver_win

openvpn | Шпаргалки админа

OpenVPN маршрутизация в локальную сеть

Изначально эту статью я писал для Хабра, но чуть позже решил продублировать в Блог.

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

Первоначальная цель была в экономии денег на Интернет трафике в филиалах т.к. в удалённых районах цена безлимитного ADSL с шириной в 256кб/с стоила порядка 7-10т.р. в месяц, а интернет был жизненно необходим.

Вся радость была в том, что почти все филиалы имели подключения одного провайдера, в котором существовало понятие локального и пирингово трафика, а в Главном офисе был выделенный широкий Интернет (другой провайдер, но волей случая он был лоялен к провайдеру филиалов и у него был “пиринговый трафик” с ценой около 6 копеек за мегабайт).

1. proxy

Самое быстрое решение это было обычный каскад proxy серверов, так и было сделано т.к. раньше все филиалы раздавали интернет у себя прямо модемом, то нужно было всем выделить по 1 системнику, который бы выполнял роль шлюза, системники были не подарки, кто даст 800й пень, кто 233, в общем у кого что было.. Хотя сегодня за 4-7 т.р. можно собрать достойный шлюз, но хозяин-барин, хочу говорит без затрат!

На эти шлюзы была установлена ubuntu 8.04 LTS настроена в виде шлюза, чтоб воткнул в локальную сеть, в модем и в розетку, и сразу всё работало т.к. во многих филиалах, админы могли только нажать “Any key” на клавиатуре пользователя, но не беда, дело шло, постепенно 7 филиалов перенастроило свои модемы, и воткнули шлюзы

Источник: https://odmin4eg.ru/tag/openvpn/

Связываем локальные сети при помощи OpenVPN

OpenVPN маршрутизация в локальную сеть

Имеем центральный офис и три филиала. Все используют разных интернет-провайдеров, и разные технологии.

Локальные сети:

Центральный офис: 10.10.10.0 255.255.255.0

Филиал под условным названием npn: 192.168.0.0 255.255.255.0

Филиал под условным названием mg: 192.168.10.0 255.255.255.0

Филиал под условным названием westfood: 192.168.2.0 255.255.255.0

Необходимо связать эти сети, для обмена данными 1С между филиалами и центральным офисом, ну и для удобства администрирования. Для этих целей будем использовать кросс-платформенную программу OpenVPN. С помощью нее создадим защищенную виртуальную частную сеть, обьединяющую локальные сети предприятия.

Выглядеть это будет так: из любой локальной сети, например с сети westfood (192.168.2.0 255.255.255.0) можно будет попасть на компьютер в любой другой сети, например npn(192.168.0.0 255.255.255.0), введя локальный ip-адрес, например 192.168.0.10 . Причем не важно что у них разные провайдеры.

Программа использует только один порт, и не помеха если клиенты за NATом.

Ставим (и на сервере и на клиентах):

sudo su

apt-get install openvpn

Создание ключей (производится только на сервере. затем необходимые ключи копируются с сервера на клиенты)

Переходим в каталог со скриптами создания ключей шифрования:

cd /usr/share/doc/openvpn/examples/easy-rsa/2.0

Открываем файл, содержащий переменные для скриптов:

nano vars

изменяем следующие параметры под свою организацию:

export KEY_COUNTRY=»RU»

export KEY_PROVINCE=»PS»

export KEY_CITY=»Pskov»

export KEY_ORG=»MegaHolod»

export KEY_EMAIL=» Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript «

Читайте также  Что такое порт в сети?

export KEY_DIR=»/etc/openvpn/keys»

Последний — директория, куда будут сохраняться созданные ключи.

Заносим переменные из только что отредактированного файла в память

source ./vars

Перед созданием ключей запускаем скрипт:

./clean-all

Далее переходим непосредственно к генерированию ключей путем запуска соответствующих скриптов. Так как в файл с переменными мы уже занесли нужные значения, жмем просто Enter в ответ на вопросы скриптов, за исключением:

Sign the certificate? [y/n]:y

1 1 certificate requests certified, commit? [y/n]y

Итак создаем  CA ключ:

./build-ca

Создаем DH ключ (нужен только серверу):

./build-dh

Создаем private key для сервера (gate — имя сервера):

./build-key-server gate

Создаем ключи в PKCS #12 формате для машин-клиентов;

./build-key-pkcs12 mg

./build-key-pkcs12 npn

./build-key-pkcs12 westfood

Создаем TLS-ключ (Общий для сервера и клиента):

openvpn —genkey —secret /etc/openvpn/keys/ta.key

Из папки «/etc/openvpn/keys» нужно скопировать ta.key и *.p12 соответствующий клиенту на машины-клиенты.

Настраиваем сервер (создаем файл-конфиг и заполняем его):

touch /etc/openvpn/server.conf

nano /etc/openvpn/server.conf

port 17993 # порт, на котором будет слушать сервер

proto tcp # протокол (по умолчанию udp)

dev tun # тип устройства (tun или tap)

############################ KEYS #######################################

tls-server # явно указывает, что данный хост является tls-server

tls-auth keys/ta.key 0 # 0-сервер , 1- для конфига клиента

ca /etc/openvpn/keys/ca.crt # файл сертификата для CA

cert /etc/openvpn/keys/gate.crt # сертификат сервера

key /etc/openvpn/keys/gate.key # ключ сервера

dh /etc/openvpn/keys/dh1024.pem # файл с ключем Диффи-Хелмана

########################## END KEYS #####################################

# автоматически присваивает адреса всем клиентам (DHCP) в указанном

# диапазоне с маской сети. Данная опция заменяет ifconfig и может

# работаеть только с TLS-клиентами в режиме TUN, соответственно

# использование сертификатов обязательно.

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt # Тут будут храниться ip адреса клиентов

push «route 10.10.10.0 255.255.255.0» # передача клиенту маршрута к сетке,

# в которой сервер.

# каждые 10 секунд посылать ping на удаленный хост, и, если за 60 секунд

# не было получено ни одного пакета — то перезапускать туннель.

keepalive 10 60

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

# Может принимать значения yes, no, adaptive.

# Последнее используется по умолчанию.

comp-lzo

# Для улучшения безопасности рекомендовано запускать

# все сервисы с минимальными правами. Openvpn будет работать от имени nobody.

user nobody

group nogroup

persist-key # указывает не перечитавать файлы ключей при перезапуске туннеля

persist-tun # данная опция оставляет без изменения устройства tun/tap

#при перезапуске OpenVPN.

# сервер работает в режиме демона

daemon

############################ LOGS #######################################

status openvpn-status.log # указывает путь к статус-файлу,

# в котором содержится информация о текущих соединениях и

#  информация о интерфейсах TUN/TAP

log-append  openvpn.log # дописывать сообщения в лог-файл, а не перезаписывать.

verb 4 # уровень логирования

mute 20 # в лог будет записываться только по 20 сообщений из одной категории

########################### END LOGS ####################################

client-to-client # позволяет клиентам видеть друг друга (сети)

client-config-dir /etc/openvpn/ccd # папка содержащая маршруты к сетям

# клиентов и посылаемые клиентам ip адреса клиента и сервера

ccd-exclusive # каждому клиенту свои настройки

management localhost 7505

tun-mtu 1500 # устанавливает максимальный размер MTU

tun-mtu-extra 32

mssfix 1450

# маршруты к сетям клиентов

route 192.168.10.0 255.255.255.0 10.8.0.2

route 192.168.0.0 255.255.255.0 10.8.0.2

route 192.168.2.0 255.255.255.0 10.8.0.2

Настройки маршрутизации к клиентским сетям и выдача им ip.

Выбранные пары IP-адресов, во-первых, должны быть уникальными, во-вторых, должны входить в состав последовательных подсетей, ограниченных маской /30 (255.255.255.252), и, в-третьих, должны находиться в пределах пула IP-адресов, выделенного для виртуальной частной сети (определяется параметром server файла конфигурации сервера OpenVPN). С учетом перечисленных условий для клиентов и сервера подойдут пары IP-адресов со следующими парами последних октетов:

[  1,  2]   [  5,  6]   [  9, 10]   [ 13, 14]   [ 17, 18]   [ 21, 22]   [ 25, 26]   [ 29, 30]   [ 33, 34]   [ 37, 38]

[ 41, 42]   [ 45, 46]   [ 49, 50]   [ 53, 54]   [ 57, 58]   [ 61, 62]   [ 65, 66]   [ 69, 70]   [ 73, 74]   [ 77, 78]

[ 81, 82]   [ 85, 86]   [ 89, 90]   [ 93, 94]   [ 97, 98]   [101,102]   [105,106]   [109,110]   [113,114]   [117,118]

[121,122]   [125,126]   [129,130]   [133,134]   [137,138]   [141,142]   [145,146]   [149,150]   [153,154]   [157,158]

[161,162]   [165,166]   [169,170]   [173,174]   [177,178]   [181,182]   [185,186]   [189,190]   [193,194]   [197,198]

[201,202]   [205,206]   [209,210]   [213,214]   [217,218]   [221,222]   [225,226]   [229,230]   [233,234]   [237,238]

[241,242]   [245,246]   [249,250]   [253,254]

Создаем на сервере файлы для каждого клиента:

touch /etc/openvpn/ccd/npn

nano /etc/openvpn/ccd/npn

iroute 192.168.0.0 255.255.255.0

ifconfig-push 10.8.0.5 10.8.0.6 255.255.255.252

# iroute — маршрут к сети клиента под названием npn

# ifconfig-push

# посылает клиенту ай-пи адрес клиента и сервера

для других сетей аналогично:

touch /etc/openvpn/ccd/mg

nano /etc/openvpn/ccd/mg

iroute 192.168.10.0 255.255.255.0

ifconfig-push 10.8.0.9 10.8.0.10 255.255.255.252

touch /etc/openvpn/ccd/westfood

nano /etc/openvpn/ccd/westfood

iroute 192.168.2.0 255.255.255.0

Источник: http://linux-bash.ru/mseti/51-openvpn.html

Строим сеть Openvpn

OpenVPN маршрутизация в локальную сеть

Зачем нужен VPN-туннель? Ясное дело — связать две приватные подсети друг с другом через интернет. А если подсетей, допустим не две, а пять? Что делать в этом случае? Как можно, как лучше? Мои размышления на эту тему с конкретным примером реализации. Пример основан на программных средствах, с минимумом вложений.

Предисловие

Статья была написана почти 3 года назад. Спец по сетям из меня тогда был аховый, больше «сервачник» и «виндусятник». Сейчас, в 2019 сказал бы, давайте мне цисок, DMVPN вам замучу. Но тогда я просто этого не умел. Никах средств и никакого оборудования мне никто выделять не собирался.

Да и никто не воспринял мою затею всерьёз. Всё что мне было позволено — создать несколько виртуальных машин на имеющихся серверах, да ещё в моём распоряжении была неиспользуемая мини-рабочая станция HP.

Но я попробовал, результат получился на удивление изящный и дешёвый, сам удивляюсь:

  • Абонентка 500 рублей в месяц за VPS-сервер;
  • Потом уже, когда система заработала и была обкатана, купили 2 Raspberry Pi 3;
  • Стабильная работа и keep alive

Чуть теории

На данный момент соединение сетей с помощью VPN туннелей является самым популярным способом в первую очередь потому, что требует минимум начальных вложений в создание инфраструктуры и никаких ежемесячных платежей за аренду (500 рублей в месяц для организации это просто ничто, поэтому не считаем), за трафик или ещё что-то — носителем выступает условно-бесплатная среда интернета. Минус в этом же — маршрут движения пакетов непостоянен во времени и как следствие непостоянна задержка между шлюзами туннеля. Чем дальше территориально разнесены сети, тем более возрастает нестабильность фактора задержки в течение рабочего дня.

Читайте также  Как объединить компьютеры в сеть через Wifi?

Не буду скрывать, да это и очевидно — всё, что будет описано в данной записи — 100% материала — придумано всё это не мной, как сказал один мой знакомый — всё украдено до нас. Моя задача смотреть, анализировать, собирать информацию и доводить проект до конечной реализации сперва на бумаге, а потом в продакшене.

Выбор топологии

Итак, несколько подсетей. Для начала нужно проверить, что они не перекрываются. При всей очевидности проверить все-таки надо. Вот скажите сходу перекрываются ли сети?

192.168.0.0/20 192.168.17.0/24

А сети?

192.168.0.0/20 192.168.15.0/24

Далее, вариантов соединения сетей может быть несколько, но все они сводятся к двум основным — полносвязное соединение и звезда.

Полносвязное соединение

Все элементы равнозначны.

Плюсы:

  • Простота настройки. Все туннели настраиваются на роутерах, которые смотрят в интернет и поддерживают функцию создания туннеля. На момент даже относительно дешевые роутеры это умеют;
  • Нет единой точки отказа, если отваливается один туннель, то остальные продолжают работать;
  • Оптимальное решение при небольшом количестве сетей — две, три — максимум, без последующего расширения.

Минусы:

  • При большом количестве сетей избыточная, громоздкая структура;
  • Добавление новой сети требует настройки еще стольких новых туннелей, сколько подсетей уже имеется (либо DMVPN);
  • Если одна сеть (филиал организации) переезжает по новому адресу, то это требует полной перенастройки всех связанных с ней туннелей.

Звезда

Ядро системы настраивается как VPN сервер, остальные элементы как VPN клиенты.

Плюсы:

  • VPN клиент находится за NAT. IP адрес он может получать по DHCP. Это делает такого клиента непривязанным к конкретной сети провайдера. Включаем его на новом месте, он подсоединяется к серверу и работает. Всё что нужно сделать, это кинуть на него маршрут;
  • Простота добавления нового клиента — минимальная настройка на сервере, а сам клиент настраивается из типового шаблона;
  • Если клиент реализован на виртуальной машине, то это бесплатно. Вычислительная мощность такого клиента настраивается за минуту в любую сторону;
  • Неочевидный плюс безопасности: маршрут на клиент, выступающий в роли шлюза в туннель, можно прописать как для всей локальной сети, так и для отдельных узлов;
  • Второй неочевидный плюс безопасности: анонимность — остальные подсети видятся только по своим приватным адресам, а если вдобавок на vpn-сервере выключен лог, то даже получив доступ к нему невозможно собрать информацию кто и откуда подключался;
  • Третий неочевидный плюс безопасности: если локальная подсеть клиента маленькая, либо же малое число клиентов в сети использует туннель, то в этом случае клиент можно реализовать на микрокомпьютере Raspberry Pi. При необходимости такой микрокомпьютер можно здорово запрятать, а при настройке соединения через Wi-Fi и вовсе его не найдешь;
  • Четвертый неочевидный плюс безопасности: всю структуру можно выключить, выключив VPN сервер. Если при этом VPN сервер реализован как VPS в интернете, то сделать это можно, находясь где угодно, одним нажатием на смартфоне. Если хостер разумно-жадный, что в данном случае хорошо и не делает бесплатных бекапов, то и полностью удалить VPN сервер без всяких следов можно также легко.

Минусы:

  • Единая точка отказа, если VPN сервер недоступен по каким-либо причинам, то вся сеть лежит;
  • Для каждого клиента нужны либо виртуальная машина, либо машина физическая;
  • Размещенный в интернете VPN сервер требует ежемесячной оплаты;
  • VPN сервер должен обладать необходимой вычислительной мощностью чтобы покрывать обсчет трафика от клиентов. Теоретически при достаточно большом количестве клиентов и больших подсетях за клиентами этой мощности может не хватить. На практике такого никогда не случится.

Реализация

Сначала хотел сделать что-то, взяв готовые решения типа IpCop, но потом понял, что из этого ничего не получится. Заставить тестового Ubuntu-клиента приконнектиться к серверу не удалось. Несмотря на стандарт, реализация Openvpn видимо везде разная, например openvpn-сервер на роутере Mikrotik RB2011U почему-то использует TCP.. ( //voxlink.

ru/kb/voip-devices-configuration/Conf_openVPN_windows_after_openVPN_Mikrotik/ ). Это видно из строки proto tcp-client. Роутер Mikrotik в режиме клиента непонятно что использует, но к готовой реализации проекта он также не подключился.

Может что-то не разобрал, не спорю, тем не менее в конце-концов, ещё задолго до заказа VPS, пришел к выводу, что придется всё настраивать с нуля на одной ОС для всех машин туннеля.

По многим причинам выбрал вариант с выделенным VPS в интернете. Для начала нужно определиться где, в каком дата-центре разместить VPN сервер. Для этого нужно попросить в поддержке интересующего дата-центра тестовый IP, попинговать его и сделать трассировку из всех предполагаемых к соединению сетей, посмотреть число хопов. Полезная программа WinMTR:

Это занимает определенное время и вот наконец дата-центр выбран, VPS оплачен и готов к настройке.

Настройка VPN-сервера

Используем Ubuntu 16.04 LTS  как дружелюбную, хорошо отлаженную систему. Установить систему на VPS можно из предварительно настроенных образов хостера, либо же отписать в поддержку и попросить загрузить для установки свой дистрибутив — А у вас нет такого же, но с перламутровыми пуговицами?  Не стал заморачиваться и взял то, что дают. Установил, установка занимает пару минут: root включен, ssh доступ root включен, swap раздела нет. Последнее не очень хорошо, поэтому первое:

apt-get install swapspace vi /etc/swapspace.conf swappath=»/var/lib/swapspace» — директория, где создаются swap-файлы lower_freelimit=20 — нижний лимит незанятого пространства ОЗУ upper_freelimit=60 — верхний лимит незанятого пространства ОЗУ freetarget=30 — уровень до которого будет освобождено, должен находиться между двумя предыдущими min_swapsize=512m — минимальный размер swap-файла max_swapsize=1g — максимальный размер swap-файла cooldown=600 — какая-то задержка (сек.) max=10 min

Меняем hostname, когда сидишь через ssh сразу на нескольких машинах, то можно легко запутаться и набумбасить лишнего там, где не надо, потом будет обидно, а если отвалится связь с машиной, то очень обидно, поэтому:

vi /etc/hosts вместо «hostname» — имя вашего компьютера vi /etc/hostname

Своих клиентов обозвал по порядку V1, V2, V3 и так далее.

Убираем автообновление, вредная штука:

apt-get update apt-get dist-upgrade dpkg-reconfigure unattended-upgrades

Меняем root пароль:

passwd root

Также полезно пользоваться командой history для просмотра истории команд.

Настройка Openvpn и сертификатов

apt-get install openvpn easy-rsa

Копируем дефолтный конфиг Openvpn для правки:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

Правим:

vi /etc/openvpn/server.conf

Конфиг

Источник: https://arny.ru/network/stroim-set-openvpn/