Как построить vpn туннель в windows

Безопасный удаленный доступ к сервисам в локальной сети.

Безопасный удаленный доступ к сервисам в локальной сети.

VPN (англ. Virtual Private Network, «виртуальная частная сеть») — обобщённое название технологий, позволяющих обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети (например Интернет).

Википедия

Наиболее популярные решения с открытым исходным кодом для построения виртуальных частных сетей — «OpenVPN» и «IPSec». В релиз ядра Linux 5.6, который состоялся 30 марта 2020 года, вошла еще одна реализация технологии VPN — «WireGuard». Это молодой набирающий популярность проект.

Основные преимущества «WireGuard»:

  • Высокая производительность (бенчмарки можно посмотреть тут)
  • Простая настройка
  • Современная криптография
  • Качественный код

В этой инструкции мы настроим VPN-туннель в локальную сеть с помощью «WireGuard» и обеспечим доступ из интернета к узлам LAN с различных устройств.

Адресация в LAN — 192.168.100.0/24, VPN-сети назначим диапазон 10.0.0.0/24.

Схема сети

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

Для размещения сервера потребуется VPS. При выборе необходимо обратить внимание на технологию виртуализации: предпочтительно KVM, можно XEN, а вот OpenVZ следует избегать. Дело в том, что в WireGuard реализован как модуль ядра, а в OpenVZ ядро очень старое. Я буду использовать самый дешевый виртуальный сервер c операционной системой Ubuntu 20.04 (KVM 512 МБ RAM 20 ГБ SSD 1 CPU — такая конфигурация вполне подойдет).

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

# устанавливаем Wireguard
apt update && apt upgrade
apt install wireguard
# разрешаем проброс пакетов
echo «net.ipv4.ip_forward=1» >> /etc/sysctl.conf
sysctl -p
# генерируем ключи для сервера:
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

Создадим конфигурационный файл /etc/wireguard/wg0.conf со следующим содержимым:

[Interface]
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>

Параметры PostUp/PostDown содержат правила iptables, которые будут применены при запуске/остановке сервиса. Обратите внимание на название сетевого интерфейса — оно должно соответствовать общедоступному сетевому адаптеру, в моем случае это eth0. Вывести список адаптеров можно командой:

ip a

Выберите из списка тот, которому соответствует внешний IP-адрес. <SERVER_PRIVATE_KEY> — заменяем содержимым файла /etc/wireguard/privatekey.

Запустим VPN-сервис и добавим его в автозагрузку:

Убедимся, что служба запустилась корректно:

[email protected]:/etc/wireguard# wg show wg0
interface: wg0
public key: <SERVER_PUBLIC_KEY>
private key: (hidden)
listening port: 51820

Настройка клиента в LAN

Если ваш роутер поддерживает WireGuard (Zyxel KeeneticOS >=3.3, Mikrotik RouterOS >=7.1beta2, OpenWRT) — можно настроить VPN-клиент прямо на нем. Я буду использовать для этой цели сервер Ubuntu 20.04 (локальный адрес 192.168.100.7).

Первый этап настройки аналогичен конфигурации серверной части. Выполняем с правами root-пользователя:

# устанавливаем WireGuard
apt update && apt upgrade
apt install wireguard
# разрешаем проброс пакетов
echo «net.ipv4.ip_forward=1» >> /etc/sysctl.conf
sysctl -p
# генерируем ключи для клиента
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

Редактируем /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = <PEER_LAN_PRIVATE_KEY>
Address = 10.0.0.2/32
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wlp2s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wlp2s0 -j MASQUERADE

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_IP>:51820
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 20

<PEER_LAN_PRIVATE_KEY> — заменяем содержимым /etc/wireguard/privatekey, <SERVER_PUBLIC_KEY> — /etc/wireguard/publickey с сервера, <SERVER_IP> — внешний IP-адрес сервера. Правила iptables в PostUp/PostDown необходимы для того, чтобы наш клиент выступал в роли шлюза в LAN. Указываем в правилах тот сетевой интерфейс, на который назначен локальный адрес (192.168.100.7, в моем случае это wlp2s0). Уточните его путем исполнения команды:

ip a

В параметре AllowedIPs задаются адреса, маршрутизация к которым будет осуществляться через VPN-интерфейс. В поле PersistentKeepalive — периодичность проверки доступности соединения в секундах. Запускаем службу и добавляем в автозагрузку:

На сервере добавляем в файл /etc/wireguard/wg0.conf блок:


[Peer]
# PEER_LAN
PublicKey = <PEER_LAN_PUBLIC_KEY>
AllowedIPs = 10.0.0.2/32, 192.168.100.0/24

Где <PEER_LAN_PUBLIC_KEY> — /etc/wireguard/publickey клиента. Перезапустим службу и убедимся, что все настроено корректно:

systemctl restart [email protected]
[email protected]:/etc/wireguard# wg show wg0
interface: wg0
public key: <SERVER_PUBLIC_KEY>
private key: (hidden)
listening port: 51820

peer: <CLIENT_PUBLIC_KEY>
endpoint: <CLIENT_IP>:42946
allowed ips: 10.0.0.2/32, 192.168.100.0/24
latest handshake: 2 minutes, 8 seconds ago
transfer: 3.24 KiB received, 828 B sent
[email protected]:/etc/wireguard# ping -c 3 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=31.1 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=120 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=40.9 ms

— 10.0.0.2 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 31.093/63.987/119.950/39.774 ms
[email protected]:/etc/wireguard# ping -c 3 192.168.100.5
PING 192.168.100.5 (192.168.100.5) 56(84) bytes of data.
64 bytes from 192.168.100.5: icmp_seq=1 ttl=63 time=31.8 ms
64 bytes from 192.168.100.5: icmp_seq=2 ttl=63 time=119 ms
64 bytes from 192.168.100.5: icmp_seq=3 ttl=63 time=40.0 ms

— 192.168.100.5 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 31.834/63.573/118.915/39.273 ms

Проверим теперь с клиента:

[email protected]:/etc/wireguard# wg show wg0
interface: wg0
public key: <CLIENT_PUBLIC_KEY>
private key: (hidden)
listening port: 42946

peer: <SERVER_PUBLIC_KEY>
endpoint: <SERVER_IP>:51820
allowed ips: 10.0.0.0/24
latest handshake: 8 seconds ago
transfer: 21.34 KiB received, 83.03 KiB sent
persistent keepalive: every 21 seconds
[email protected]:/etc/wireguard# ping -c 3 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=32.0 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=32.6 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=32.2 ms

— 10.0.0.1 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 32.013/32.265/32.586/0.316 ms

Настройка удаленных клиентов

Сборки WireGuard доступны для основных платформ: Linux, Windows, Mac, Android, FreeBSD, OpenWRT и др. Рассмотрим настройку VPN-клиента на десктопах под управлением Linux и Windows, а так же на Android-смартфоне.

Удаленный Linux клиент

На клиенте выполняем с правами root:

# устанавливаем Wireguard
apt update && apt upgrade
apt install wireguard

# генерируем ключи
wg genkey | tee /etc/wireguard/peer_1_privatekey | wg pubkey | tee /etc/wireguard/peer_1_publickey

Конфигурационный файл /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = <PEER_1_PRIVATE_KEY>
Address = 10.0.0.3/32
DNS = 8.8.8.8

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_IP>:51820
AllowedIPs = 0.0.0.0/0
# AllowedIPs = 10.0.0.0/24, 192.168.100.0/24
PersistentKeepalive = 20

<PEER_1_PRIVATE_KEY> — заменяем содержимым /etc/wireguard/peer_1_privatekey, <SERVER_PUBLIC_KEY> — /etc/wireguard/publickey с сервера.

Обратите внимание на строку «AllowedIPs = 0.0.0.0/0» — в данной конфигурации весь трафик будет маршрутизироваться через VPN-адаптер. Это может понадобиться для сокрытия реального IP при работе в интернет или для защиты трафика при подключении к недоверенным сетям (например публичные Wi-Fi точки доступа). В этом случае указываем «DNS = 8.8.8.8» (8.8.8.8 — DNS-сервер Google), чтобы DNS-запросы выполнялись через защищенное VPN-соединение.

Если VPN-туннель необходим только для доступа к LAN 192.168.100.0/24 — убираем строчку «DNS = 8.8.8.8» и в параметре AllowedIPs меняем «0.0.0.0/0» на «10.0.0.0/24, 192.168.100.0/24».

# запускаем службу
wg-quick up wg0
# добавляем в автозапуск
systemctl enable [email protected]

На сервере в конфигурационный файл /etc/wireguard/wg0.conf добавляем блок:


[Peer]
PublicKey = <PEER_1_PUBLIC_KEY>
AllowedIPs = 10.0.0.3/32

Где <PEER_1_PUBLIC_KEY> — содержимое файла /etc/wireguard/peer_1_publickey клиента и перезапускаем службу:

Возвращаемся на клиент и проверяем доступность узлов в LAN через VPN-туннель:

[email protected]:/etc/wireguard# wg show wg0
interface: wg0
public key: <PEER_1_PUBLIC_KEY>
private key: (hidden)
listening port: 34022

peer: <SERVER_PUBLIC_KEY>
endpoint: <SERVER_IP>:51820
allowed ips: 10.0.0.0/24, 192.168.100.0/24
latest handshake: 44 seconds ago
transfer: 6.91 KiB received, 8.96 KiB sent
persistent keepalive: every 20 seconds

[email protected]:/etc/wireguard# ping -c 3 192.168.100.5
PING 192.168.100.5 (192.168.100.5) 56(84) bytes of data.
64 bytes from 192.168.100.5: icmp_seq=1 ttl=62 time=66.3 ms
64 bytes from 192.168.100.5: icmp_seq=2 ttl=62 time=65.7 ms
64 bytes from 192.168.100.5: icmp_seq=3 ttl=62 time=67.2 ms

— 192.168.100.5 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 65.748/66.387/67.157/0.582 ms

Удаленный Windows клиент

На сервере сгенерируем ключи для Windows-клиента:

wg genkey | tee /etc/wireguard/peer_2_windows_privatekey | wg pubkey | tee /etc/wireguard/peer_2_windows_publickey

Добавим блок Peer в файл /etc/wireguard/wg0.conf:

…​
[Peer]
PublicKey = <PEER_2_PUBLIC_KEY>
AllowedIPs = 10.0.0.4/32

Перезапустим сервер:

Конфигурационный файл windows.conf:

[Interface]
PrivateKey = <PEER_2_PRIVATE_KEY>
Address = 10.0.0.4/32

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_IP>:51820
AllowedIPs = 10.0.0.0/24, 192.168.100.0/24
PersistentKeepalive = 20

В приложении WireGuard открываем конфигурационный файл и нажимаем кнопку «подключение».

Конфигурационные файлы можно генерировать и на клиентах, а после отправлять открытые части ключей на сервер.

Удаленный Android клиент

Приложение для Android доступно в Google Play.

Генерируем ключи для клиента и добавляем Peer в конфигурационный файл сервера.

wg genkey | tee /etc/wireguard/peer_3_android_privatekey | wg pubkey | tee /etc/wireguard/peer_3_android_publickey

/etc/wireguard/wg0.conf:


[Peer]
PublicKey = <PEER_3_PUBLIC_KEY>
AllowedIPs = 10.0.0.5/32

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

Создадим конфигурационный файл для Android клиента mobile.conf:

[Interface]
PrivateKey = <PEER_3_PRIVATE_KEY>
Address = 10.0.0.5/32

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_IP>:51820
AllowedIPs = 10.0.0.0/24, 192.168.100.0/24
PersistentKeepalive = 20

Устанавливаем пакет qrencode:

sudo apt install qrencode

И генерируем QR-код с конфигурацией для PEER_3:

В Android-приложении выбираем пункт меню «сканировать QR-код»:

И подключаемся к VPN-туннелю:

Распространенные проблемы

1. Соединение не устанавливается, «0 B received»

wg show wg0
interface: wg0
public key: <CLIENT_PRIVATE_KEY>
private key: (hidden)
listening port: 42658

peer: <SERVER_PUBLIC_KEY>
endpoint: 80.249.145.4:51821
allowed ips: 10.0.0.0/24
transfer: 0 B received, 1.16 KiB sent
persistent keepalive: every 20 second

Возможные причины и решения:

  • Сетевое соединение блокируется межсетевым экраном — проверьте настройки iptables на сервере и Linux клиентах, брандмауэра Windows, межсетевого экрана маршрутизатора;
  • UDP трафик блокируется интернет провайдером — WireGuard не поддерживает TCP, в этом случае стоит рассмотреть альтернативные решения, например openVPN в режиме TCP (либо туннелировать UDP, что не всегда целесообразно);
  • Ошибка в IP-адресе или PORT сервера — проверьте значение параметра «Endpoint» в конфигурационном файле;
  • Ошибка в ключах — проверьте ключи, в конфигурации сервера — открытые части ключей клиентов и приватная часть ключа сервера, в конфигурации клиентов — открытая часть ключа сервера, приватная часть ключа клиента.

2. При указании параметра DNS возникает ошибка «resolvconf: command not found»

[email protected]:/etc/wireguard# wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.2/32 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a wg0 -m 0 -x
/usr/bin/wg-quick: line 32: resolvconf: command not found
[#] ip link delete dev wg0

Установите пакет openresolv:

apt install openresolv

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

vpn-general-issues-000.pngVPN-технологии сегодня прочно вошли в повседневную жизнь и на слуху не только у IT-специалистов, поэтому мы решили обновить ряд старых статей, значительно дополнив и расширив имеющуюся в них информацию. Если десять лет назад VPN был в основном уделом достаточно крупных организаций, сегодня он широко используется повсеместно. В этой статье мы рассмотрим, что такое VPN в 2019 году, какие технологии доступны, в чем их достоинства и недостатки и как это все можно использовать.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

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

Для построения сетей VPN обычно используются туннели, туннелирование это процесс установления соединения между двумя точками с использованием инкапсуляции, когда данные одного протокола помещаются в «конверты» другого протокола с целью обеспечить их прохождение в неподходящей среде, обеспечения целостности и конфиденциальности, защиты с помощью шифрования и т.д. и т.п.

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

По схеме организации можно выделить две большие группы: клиент-серверные технологии и просто туннели. В названии первых обычно принято использовать аббревиатуру VPN, у вторых нет. Туннели требуют наличия с обоих концов выделенного IP-адреса, не используют вспомогательных протоколов для установления соединения и могут не иметь инструментов контроля канала. Клиент-серверные решения, наоборот, используют дополнительные протоколы и технологии, осуществляющие установку связи между клиентом и сервером, контроль и управление каналом, обеспечение целостности и безопасности передаваемых данных.

Ниже мы рассмотрим наиболее популярные типы туннельных соединений, которые применяются для построения VPN-сетей, начнем с классических решений.

PPTP

PPTP (Point-to-Point Tunneling Protocol, туннельный протокол точка-точка) — один из наиболее известных клиент-серверных протоколов, получил широкое распространение благодаря тому, что начиная с Windows 95 OSR2 PPTP-клиент был включен в состав ОС. В настоящее время поддерживается практически всем спектром систем и устройств, включая роутеры и смартфоны (клиент удален из последних версий macOS и iOS).

Технически PPTP использует два сетевых соединения: канал управления, работающий через TCP и использующий порт 1723 и GRE-туннель для передачи данных. Из-за этого могут возникать сложности с использованием в сетях мобильных операторов, проблема с одновременной работой нескольких клиентов из-за NAT и проблема проброса PPTP соединения через NAT.

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

L2TP

L2TP (Layer 2 Tunneling Protocol, протокол туннелирования второго уровня) — разработка компаний Сisco и Microsoft, использует для передачи данных и управляющих сообщений единственное UDP соединение на порту 1701, но не содержит никаких встроенных средств защиты информации. L2TP-клиент также встроен во все современные системы и сетевые устройства.

Без шифрования L2TP широко применялся и применяется провайдерами для обеспечения доступа в интернет, обеспечивая таким образом разделение бесплатного внутрисетевого и дорогого интернет трафика. Это было актуально в эпоху домовых сетей, но данная технология продолжает применяться многими провайдерами и по сей день.

Для построения VPN обычно используют L2TP over IPsec (L2TP/IPsec), где IPsec работает в транспортном режиме и шифрует данные L2TP-пакета. При этом L2TP-туннель создается внутри IPsec-канала и для его установления необходимо прежде обеспечить IPsec-соединение между узлами. Это может вызвать сложности при работе в сетях с фильтрацией трафика (гостиничные сети, публичный Wi-Fi и т.д.), вызывает проблемы с пробросом L2TP/IPSec через NAT и работой из-за NAT одновременно нескольких клиентов.

К плюсам L2TP можно отнести высокую распространенность и надежность, IPsec не имеет серьезных уязвимостей и считается очень безопасным. Минус — высокая нагрузка на оборудование и невысокая скорость работы.

SSTP

SSTP (Secure Socket Tunneling Protocol, протокол безопасного туннелирования сокетов) — разработанный компанией Microsoft безопасный VPN-протокол, относится к так называемым SSL VPN, распространен преимущественно в Windows-среде, хотя клиенты доступны в среде многих современных ОС. Также есть сторонние серверные решения, скажем в Mikrotik.

Технически SSTP представляет собой туннельное PPP-соединение внутри HTTPS-сессии на стандартный порт 443. Для стороннего наблюдателя доступны только HTTPS-заголовки, наличия туннеля в трафике остается скрытым. Это позволяет успешно работать в любых сетях, так как HTTPS широко используется для доступа к сайтам и обычно разрешен, снимает проблему с пробросом или работой из-за NAT. Безопасен.

К плюсам можно отнести интеграцию в Windows-среду, безопасность, возможность работы через NAT и брандмауэры. К недостаткам — слабую или недостаточную поддержку со стороны других ОС и сетевых устройств, а также уязвимость к некоторым классическим SSL-атакам, таким как «человек посередине».

OpenVPN

OpenVPN — свободная реализация VPN с открытым исходным кодом. Для защиты соединения также используется SSL, но в отличие от SSTP заголовки OpenVPN отличаются от стандартных HTTPS, что позволяет однозначно определить наличие туннеля. Для передачи данных внутри SSL-канала OpenVPN использует собственный протокол с транспортом UDP, также существует возможность использовать в качестве транспорта TCP, но данное решение является нежелательным из-за высоких накладных расходов.

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

Кроме туннелей, работающих на сетевом уровне (L3) — TUN, OpenVPN позволяет создавать соединения канального (L2) уровня — TAP, позволяя связывать сети на уровне Ethernet. Однако следует помнить, что в этом случае в туннель будет инкапсулироваться широковещательный трафик, а это может привести к повышенной нагрузке на оборудование и снижению скорости соединения.

Несмотря на то, что OpenVPN требует установки дополнительного ПО серверная часть доступна для Windows и UNIX-like систем, а клиентская в том числе и для мобильных устройств. Также поддержка OpenVPN имеется во многих моделях роутеров (часто в ограниченном виде).

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

Несмотря на это OpenVPN имеет высокую популярность и достаточно широко используется как в корпоративных сетях, так и для доступа в интернет.

GRE туннель

GRE (Generic Routing Encapsulation, общая инкапсуляция маршрутов) — протокол туннелирования разработанный компаний Cisco и предназначен для инкапсуляции любых протоколов сетевого уровня OSI (т.е. не только IP), GRE работает непосредственно поверх IP и не использует порты, не проходит через NAT, номер протокола 47.

GRE требует белых IP-адресов для обоих сторон туннеля и является протоколом без сохранения состояния, т.е. никак не контролирует доступность противоположного узла, хотя большинство современных реализаций содержат дополнительные механизмы, позволяющие определить состояние канала. Также отсутствуют какие-либо механизмы безопасности, но это не является недостатком, так как в отличие от клиент-серверных решений GRE-туннели применяются в корпоративной и телекоммуникационной среде, где для обеспечения безопасности могут использоваться иные технологии.

Для построения защищенных решений обычно используется GRE over IPsec, когда туннель GRE располагается поверх защищенного IPsec канала, хотя возможно и иное решение — IPsec over GRE, когда защищенное соединение устанавливается внутри незашифрованного GRE-туннеля.

GRE поддерживается в UNIX-like системах, сетевом оборудовании (исключая домашние модели), а также в Windows Server начиная с версии 2016. Данный протокол широко используется в телекоммуникационной сфере и корпоративной среде.

IP-IP туннель

IP-IP (IP over IP) — один из самых простых и имеющий минимальные накладные расходы протокол туннелирования, но в отличие от GRE инкапсулирует только IPv4 unicast трафик. Также является протоколом без сохранения состояния и встроенных механизмов безопасности, обычно используется в паре с IPsec (IP-IP over IPsec). Поддерживается UNIX-like системами и сетевым оборудованием. Как и GRE не использует порты и не проходит через NAT, номер протокола 4.

EoIP туннель

EoIP (Ethernet over IP) — разработанный Mikrotik протокол туннелирования канального уровня (L2), работает на базе протокола GRE инкапсулируя Ethernet кадры в GRE пакеты. Позволяет соединять на канальном уровне удаленные сети (что равносильно прямому соединению патч-кордом между ними) и обеспечивать связь без использования маршрутизации. При этом следует понимать, что такое соединение предполагает прохождение широковещательного трафика, что способно существенно снизить производительность туннеля, особенно на узких каналах или каналах с большими задержками.

В тоже время EoIP может быть полезен для подключения торгового и промышленного оборудования, которое не умеет работать на сетевом (L3) уровне с маршрутизацией. Например, для подключения удаленных видеокамер к видеорегистратору.

Первоначально EoIP поддерживался только оборудованием Mikrotik, сегодня его поддержка реализована в оборудовании Zyxel и существуют пакеты для его реализации в среде Linux.

IPsec

IPsec (IP Security) — набор протоколов для обеспечения безопасности передаваемых по сетям IP данных. Также может использоваться не только для защиты уже существующих каналов связи, а для организации самостоятельных туннелей. Но IPsec-туннели не нашли широкого распространения по ряду причин: сложность настройки, критичность к ошибкам конфигурирования (может сильно пострадать безопасность) и отсутствие возможности использовать маршрутизацию для управления трафиком в таких туннелях (решение об обработке IP-пакетов принимается на основании политик IPsec).

IKEv2

IKEv2 (Internet Key Exchange) входит в состав протоколов IPSec, однако может использоваться самостоятельно для создания туннельных подключений. Отличается высокой безопасностью и скоростью работы, поддерживает аутентификацию по сертификатам. Прост в настройке с клиентской стороны, может передавать клиентам маршрутную информацию. Поддерживается всеми современными ОС. Хорошо проходит через NAT и не имеет проблем характерных для L2TP/IPsec. Из недостатков следует выделить сложность в настройке серверной части и определенные сложности с маршрутизацией, которые указаны выше, при описании IPsec.

Заключение

Переписывая данную статью, мы не ставили задачу объять необъятное, рассмотреть все существующие VPN-решения в рамках одной статьи невозможно. Ее назначение — познакомить читателя с основными используемыми сегодня технологиями для построения виртуальных частных сетей. При этом мы намеренно оставили за кадром решения от Cisco или иных «взрослых» производителей, так как их внедрением занимаются профессионалы, которым подобные статьи явно без надобности.

Также мы не стали рассматривать решения без широкой поддержки со стороны производителей сетевого оборудования, хотя там есть достаточно интересные продукты. Например, мультипротокольный сервер SoftEther VPN, который поддерживает L2TP, SSTP, OpenVPN и собственный SSL VPN протокол, имеет широкие сетевые возможности, графический клиент для настройки и администрирования и многие иные «вкусности». Или перспективный WireGuard, который отличается простотой, высокой производительностью и использованием современной криптографии.

Тем не менее, какую именно технологию следует использовать? Все зависит от сферы применения. Если стоит задача связать два офиса с выделенными IP-адресами, то мы порекомендовали бы использовать GRE или IP-IP, если возможность настройки удаленных сетей ограничена, то следует посмотреть в сторону OpenVPN, он также подойдет, если удаленные сети находятся за NAT или не имеют выделенного IP.

А вот для организации удаленного доступа следует использовать один из протоколов с нативной поддержкой в используемых пользователями системах или устройствах. Если у вас основу инфраструктуры составляют Windows-системы и не стоит вопрос доступа с мобильных устройств, то следует обратить внимание на SSTP, в противном случае лучше остановить свой выбор на универсальном L2TP, либо современном IKEv2.

PPTP в современных условиях не может считаться надежным из-за слабой защиты, но может оставаться хорошим выбором, если данные в туннеле будут передаваться по одному из защищенных протоколов. Скажем для доступа по HTTPS к корпоративному порталу или веб-версии корпоративного приложения, также работающему через SSL. В данном случае VPN будет обеспечивать дополнительную аутентификацию и сужать периметр атаки на приложение, безопасность самого канала в данном случае не будет играть решающей роли.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

vpn туннель

Перед тем, как объяснить, что такое VPN-туннель, следует вспомнить, что такое виртуальная сеть. VPN или виртуальная частная сеть – это технология, позволяющая создать одно или несколько соединений поверх другой сети. При подключении к VPN, создается «виртуальная» сеть между устройством пользователя и сервером ВПН, с зашифрованным соединением. Запрос в зашифрованном виде направляется от пользователя, через защищенный канал связи, именуемый ВПН–туннелем, на сервер ВПН. Оттуда запрос перенаправляется по назначению – в интернет или к другому серверу.

Безопасность

Если используется обыкновенное подключение к сети, трафик передается от пользователя напрямую интернет провайдеру. Информация передается в открытом виде, и третьи лица могут получить к ней доступ. Туннелирование позволяет создать защищенный канал, по которому информация передается в зашифрованном виде на сервер, а ключи шифрования есть только у пользователя и сервера. Получить доступ к информации пользователя можно, лишь имея физический доступ к серверу в момент подключения. Большинство крупных провайдеров VPN услуг никогда не сохраняют логи, а физический доступ к их серверам практически исключен. Хотя трафик расшифровывается на сервере, определить конкретного пользователя, который делал этот запрос невозможно – к ВПН подключаются одновременно сотни хостов.

Методы шифрования в туннелях

ВПН туннель – это своеобразный защищенный мост между устройством пользователя и сервером, где данные шифруются при помощи надежных 256-битных алгоритмов. Некоторые сервисы используют 128 битные AES. Даже такие ключи взломать невозможно – используя метод грубого перебора (брутфорса) это заняло бы миллионы лет.

что такое vpn туннель

Типы протоколов в VPN туннелях

Самый распространенный среди ВПН сервисов протокол передачи данных в ВПН сетях — OpenVPN. Он использует стандартные TCP и UDP запросы, что позволяет скрыть использование VPN подключения. Пакеты данных шифруются 256-битным шифрованием, а для его работы нужно только соответствующее клиентское приложение. PPTP – самый простой программный протокол. Используется для установления связи типа точка-точка. Для авторизации использует пароль. Шифрование отсутствует, его область применения — настройка соединений программными средствами операционных систем L2TP, IPSec. L2tp это более совершенная версия PPTP, но шифрование у протокола по-прежнему отсутствует. L2TP используется в связке с IPSec – протоколом, шифрующим пакеты данных и обеспечивающим безопасность. Главный недостаток IPsec – сложная настройка клиентских приложений. PPTP или IPSec гораздо менее стабильные протоколы, чем OpenVPN. Хотя для настройки виртуальной сети через PPTP не требуется никаких дополнительных программ, PPTP требует поддержки GRE47, из-за чего может нестабильно работать под сетевым экраном (NAT) и требовать долгих настроек.

Как установить и настроить VPN туннель

Туннелирование VPN может использоваться для объединения двух локальных сетей, к примеру внутренних сетей двух филиалов одной организации для безопасного обмена информацией. Сделать VPN туннель можно как при помощи стороннего ПО, вроде программы OpenVPN, так и при помощи встроенных средств ОС.

Создание ВПН туннеля

Самой простой задачей, для которой может потребоваться VPN туннели – получение доступа к домашнему ПК из любой точки мира. Нередки ситуации, когда человек уезжает в командировку в страну, в которой доступ к соцсетям или любимым ресурсам заблокирован. Чтобы не платить деньги ВПН-провайдерам, достаточно настроить vpn туннель между мобильным устройством и домашним ПК. Собственный VPN туннель будет совершенно бесплатным. Доступ к сайтам восстановится, а скорость работы будет всегда большой, ведь к домашнему ПК подключается только один пользователь.

Порядок настройки

В первую очередь, необходимо обеспечить статический ip-адрес для ПК, к которому планируется подключаться.

  1. OpenVPN GUI можно бесплатно скачать по ссылке — https://openvpn.net/community-downloads/
  2. Необходимо выполнить генерацию ключей. Делается это с помощью easy-rsa, скачать программу можно тут: https://github.com/OpenVPN/easy-rsa
  3. Генерация ключей происходит при помощи командной строки. Для корректной работы должны быть созданы следующие ключи:
  • Ключ, сертификат ca.crt, ca.key
  • Ключ, сертификат сервера server.crt server.key.
  • Ключ, сертификат клиента cl1.crt cl1.key
  • Параметры DiffieHellman dh1024.pem.
  • Ключ TLS для аутентификации пакетов ta.key
  1. После этого создаются файлы конфигурации клиента (.ovpn), где указываются ip адрес с местоположением ключей.
  2. Последним шагом настраиваются брандмауэр и маршрутизация.

При помощи мобильного приложения OpenVPN Connect и файла конфигурации, можно подключиться по защищенному ВПН туннелю к домашнему ПК из любой точки мира.

Перед тем, как использовать это подключение, следует проверить его безопасность. Это можно сделать при помощи сервисов 2ip.ru или Яндекс Интернетометр.

Если у вас остались вопросы по тому какой сервис выбрать наша редакция подготовила топ 3 лучших VPN-сервиса

ExpressVPN

1 место. Лучшее предложение на рынке VPN Сервисов

  • Скидка 49%
  • 30 дней бесплатного периода
  • Поддержка всех устройств и платформ

NordVPN

2 место в рейтинге VPNside

  • Скидка 41%
  • 30 дней бесплатного периода
  • Поддержка всех устройств и платформ

PureVPN

3 место в рейтинге VPNside

  • Скидка 70%
  • 30 дней бесплатного периода
  • Поддержка всех устройств и платформ

Была ли эта статья вам полезна?

4 из 10 пометили это полезным для себя

Частная виртуальная сеть (VPN) хороша тем, что предоставляет пользователю защищенный или доверительный канал с другим ПК без необходимости предоставления выделенного канала связи. Её создают поверх другой сети — Интернет, например.

Windows имеет встроенные инструменты для налаживания VPN-подключения между компьютерами, размещенными на больших расстояниях. Наладим VPN-туннель между двумя ПК, которые управляются средой Windows.

Содержание статьи

  1. Настройка сервера
  2. Настройка клиентской части
  3. Подключение

Создадим серверную часть

Подсоединение удаленных клиентов к VPN-сети организовывается через специальный сервер доступа. От входящего подключения он может потребовать прохождения процедур идентификации и аутентификации. Он знает, какие пользователи обладают доступом к виртуальной сети. Также, он располагает данными о разрешенных IP-адресах.

Для налаживания VPN-сервера доступа в центре управления сетями надо открыть апплет изменений параметров адаптеров. Если главное меню апплета не отображается, нажмите кнопочку «Alt». В верхней части апплета должно появиться главное меню, в котором следует найти пункт «Файл», а затем выбрать «Новое входящее подключение». Рассмотрим более подробнее.

В панели управления пройдем «Сеть и Интернет».

В панели управления пройдем в Сеть и Интернет-1

На следующем шаге откроем сетевой центр.

На следующем шаге откроем сетевой центр-2

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

Перейдем в раздел Изменение параметров-3

Создадим новое входящее соединение.

Создадим новое входящее vpn соединение-4

Появившееся окошко предложит выбрать из существующих пользователей или определить нового, которым будет разрешено подсоединяться к данному ПК.

Выбор или создание нового пользователя-5

При добавлении нового «юзера» нужно указать имя и пароль, с которыми ему дозволено будет соединяться с VPN-сервером доступа.

Указываем данные нового пользователя-6

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

Добавленный новый юзер-7

Надо указать, что делать они это будут поверх Интернет, поэтому отметим флажком требуемую опцию.

соединение должно работать поверх Интернет-8

Следующий шаг связан с налаживанием сетевых приложений, которые должны принимать входящие подключения. Среди них есть компонент «Интернет-протокол версии 4(TCP/IPv4)». Понадобится открыть его свойства и вручную ввести диапазон IP-адресов, которым дозволен доступ к серверу.

программные компоненты для работы с подключением-9

Иначе, предоставьте это дело DHCP-серверу для автоматического определения «айпишников». В нашем случае понадобилось вручную их определять.

Мастер приступит к применению заданных параметров-10

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

Имя используется при установке vpn соединения-11

В итоге, мы получим такой результат. Подключенных клиентов еще нет.

Результат настройки сервера vpn-12

Настроим клиента

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

Серверную часть этой архитектуры мы уже настроили. Теперь осталось наладить работу клиентской части. В качестве клиента должен выступать другой компьютер.

В сетевом центре другого ПК (клиента) наладим новое подключение.

В сетевом центре ПК (клиента) наладим новое подключение-13

Нам надо подсоединяться напрямую к рабочему месту.

необходимо подсоединяться напрямую к рабочему месту-14

Опять же обратимся в сетевой центр Windows только теперь другого ПК. Выберем опцию настройки нового подсоединения. Появившийся апплет предложит несколько вариантов на выбор, однако нам понадобится опция подключения к рабочему месту. Мастер спросит, как выполнять подсоединение. Нам же надо остановить свой выбор на настройке подсоединения к Интернету (VPN).

Для выполнения соединения используем Интернет-15

Мастер попросит на следующем шаге указать IP-адрес VPN-сервера доступа и назначить имя местоназначения. IP-адрес сервера доступа можно узнать на первом нашем компьютере, введя в командной строке команду ipconfig. IP-адрес Ethernet-сети и будет искомым адресом.

На следующем шаге указываем IP-адрес компьютера-сервера-16

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

Укажем имя и актуальный пароль-17

Затем, система применит все введенные настройки.

Наше подключение готово к использованию-18

Выполним подключение

Временем X для нашего эксперимента является выполнение подсоединения клиента к серверной части нашей сети. В сетевом центре выберем опцию «Подключиться к сети». В появившемся окошке кликнем VPN-Test (мы указали местоназначение именно с данным именем) и кликнем кнопочку подключиться.

Выполним подсоединение-19

 Установка связи этап проверки имени и пароля-20

Так, мы откроем апплет соединения с VPN-Test. В текстовых полях укажем имя и пароль «юзера» для осуществления авторизации на сервере доступа. Если все пройдет успешно и наш пользователь не только зарегистрируется в сети, но и сможет полностью подсоединиться к серверу доступа, то на противоположной стороне появится обозначение подключившегося «юзера».

Но иногда, может случиться ошибка такого рода. VPN-сервер не отвечает.

Ошибка VPN-сервер не отвечает-21

Кликнем ярлычок входящих соединений.

Кликнем ярлычок входящих соединений-22

На отмеченной вкладке откроем свойства протокола IP.

откроем свойства протокола IP-23

Установим опцию указывать IP адреса явным образом и пропишем, какие «айпишники» надо обслуживать.

Установим опцию указывать IP адреса явным -24

Когда же повторно подключимся, то увидим такую картину. Система нам показывает, что подключен один клиент и этот клиент vpn(SimpleUser).

как создать vpn подключение

Краткий итог

Итак, для налаживания VPN-сети между двумя ПК понадобится определиться с тем, какой из них должен стать «главным» и играть роль сервера. Остальные ПК должны подсоединяться к нему через систему авторизации. В Windows есть средства, обеспечивающие создание серверной части для нашей сети. Она настраивается через создание нового входящего соединения, указания пользователя, а также приложений, которые должны принимать соединение. Клиента настраивают через установление соединения к рабочему месту, указывая пользователя и данные сервера, к которому этот пользователь должен подключаться.

Вы можете пропустить чтение записи и оставить комментарий. Размещение ссылок запрещено.

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

Задача: Настроить VPN канал между двумя филиалами вашей компании. Сеть в первом филиале называется N_B1) и сеть во втором филиале N_B2. Установка OpenVPN в обоих офисах будет на ОС Windows 7. Приступим к выполнению поставленной задачи.

Network N_B1 содержит:

Компьютер или сервер, где устанавливается сервер OpenVPN, имеет 2 сетевых интерфейса, один как вы можете понять для wan ip адреса, а второй для внутренней сети..
Также на ней установлен proxy сервер который раздает инет в локальную сеть, тем самым являясь для всех машин в локальной сети основным шлюзом (192.168.2.100)
192.168.2.100 смотрит в локальную сеть
192.168.2.3 данный интерфейс смотрит в интернет через маршрутизатор, который имеет статический IP скажем 123.123.123.123. На нем сделан форвардинг или как его еще называют проброс порта 1190 (для примера порт 1190 проброшен на сетевом интерфейсе с ip адресом 192.168.2.3)
Пользователь в сети имеет  192.168.2.100

Network N_B2 содержит:

Компьютер или сервер, где устанавливается клиент OpenVPN, так же имеет 2 сетевых интерфейса.
Также на ней установлен proxy сервер который раздает интернет в локальную сеть, тем самым являясь для всех машин в локальной сети основным шлюзом(172.17.10.10)
172.17.10.10 смотрит в локальную сеть
192.168.2.3 смотрит в мир через маршрутизатор.
Пользователь в сети: 172.17.10.50

Задача: Человек из офиса с сетью N_B1 (192.168.2.100) должен видеть общие ресурсы на компьютере человека из сети N_B2 (172.17.10.50) и в обратном направлении.

Другими словами каждый каждого должен видеть и иметь возможность заходить в гости, вдруг кто фотки новые расшарит посмотреть своему коллеге из другого branche.

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

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

OpenVPN

OpenVPN

Запускаем установку OpenVPN, на 3-м шаге ставим птички OpenSSL Utilites и OpenVPN RSA Certificate Management Scripts.

Установка OpenVPN 2.3.8

Установка OpenVPN 2.3.8

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

Выбор места установки OpenVPN

Выбор места установки

Во время установки в ОС будет добавлен virtual network adapter TAP-Win32 Adapter V9, и дополнительный драйвер для него. Данному сетевому интерфейсу OpenVPN как раз и будет выдавать IP адрес и маску виртуальной сети OpenVPN. У нас назначен адрес 10.10.10.1 с маской 255.255.255.0 на сервере N_B1 и 10.10.10.2 с такой же маской на клиенте N_B2.

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-05

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-05

Переименуем его в «VPN»

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-06

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-06

В директории «C:OpenVPN» следует сразу же создать дополнительно папку ssl (здесь мы будем хранить ключи аутентификации) папку ccd (здесь будут находится конфигурация настроек сервера для клиента).

В папке easy-rsa создаем файл vars.bat, данный пакетный файл будет задавать переменные для сеанса генерации сертификатов, в той части что касается организации и расположения заполняем своими данными.

set HOME=C:OpenVPNeasy-rsa
set KEY_CONFIG=openssl-1.0.0.cnf
set KEY_DIR=C:OpenVPNssl
set KEY_SIZE=1024
set KEY_COUNTRY=RU
set KEY_PROVINCE=Stavropol
set KEY_CITY= Stavropol
set KEY_ORG=ServerVPN
set KEY_EMAIL=admin@localhost
set KEY_CN=test
set KEY_NAME=test
set KEY_OU=test
set PKCS11_MODULE_PATH=test
set PKCS11_PIN=1234

Запускаем командную строку от имени администратора.

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-07

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-07

Переходим по пути C:OpenVPNeasy-rsa, набрав для перехода в командной строке команду

 

Запускаем vars.bat:

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-08

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-08

Далее запускаем clean-all.bat:

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-09

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-09

Теперь запускаем build-ca.bat. Так как вся информация о сервере у нас уже заполнена, все оставляем без изменений:

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-10

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-10

после этого у нас в папке ssl появится два файла ca.crt и ca.key.

Запускаем build-dh.bat:

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-11

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-11

в результате у нас в папке ssl появится файл dh1024.pem.

Создаем серверный ключ, для этого вводим команду:

build-key-server.bat ServerVPN

где «ServerVPN» это название нащего VPN сервера, как в моем случае,

Указываем параметр «commonname» — пишем имя нашего VPN сервера. Все остальные параметры оставляем по умолчанию, на все вопросы отвечаем yes 

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-12

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-12

в результате у нас в папке ssl появятся файлы ServerVPN.crt, ServerVPN.csr, ServerVPN.key.

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

Выполняем команду:

build-key.bat UserVPN_1

где «UserVPN_1» имя нашего клиента.

Важно! Указываем параметр «commonname» — пишем имя нашего VPN клиента(UserVPN_1). Все остальные параметры оставляем по умолчанию, на все вопросы отвечаем yes

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-13

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-13

В результате у нас в папке ssl появятся файлы UserVPN_1.crt, UserVPN_1.csr, UserVPN_1.key.

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

build-key.bat UserVPN_2 build-key.bat UserVPN_3

Генерация ключа tls-auth (ta.key) для аутентификации пакетов, для этого переходим в корневую папку OpenVPN:

cd ..

и выполняем команду:

openvpn --genkey --secret ssl/ta.key

в результате в папке ssl плучим файл ta.key.

Приступаем к созданию конфига сервера. В папке config создаем файл OpenVPN.ovpn:

#Порт для работы OpenVPN
port 1190

#Указываем по какому протоколу работает OpenVPN
proto udp

#Тип интерфейса
dev tun

#Имя интерфейса
dev-node "VPN"

#Сертификат для шифрования подключения
dh C:\OpenVPN\ssl\dh1024.pem

#Сертификат центра сертификации
ca C:\OpenVPN\ssl\ca.crt

#Сертификат сервера
cert C:\OpenVPN\ssl\ServerVPN.crt

#ключ сервера 
key C:\OpenVPN\ssl\ServerVPN.key

# Защита от DOS атак (для сервера, после пути к ключу, ставим 0 а для клиента 1)
tls-server
tls-auth C:\OpenVPN\keys\ta.key 0
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450

#Диапазон IP адресов для VPN сети 
server 10.10.10.0 255.255.255.0

# Выбор криптографического шифра
cipher AES-256-CBC

#Логи
status C:\OpenVPN\log\openvpn-status.log
log C:\OpenVPN\log\openvpn.log

#Каталог, в которой лежит файл с названием нашего клиента, 
в моем случае UserVPN_1 без расширения, и в нем записать команды, 
которые будут выполнятся на клиенте:
client-config-dir "C:\OpenVPN\ccd"

#Уровень отладочной информации
verb 3

#Количество повторяющихся сообщений
mute 20

# Максимальное количество одновременно подключенных клиенты мы хотим разрешить
max-clients 2

#Время жизни неактивной сессии
keepalive 10 120

#Разрешаем клиентам видеть друг друга
client-to-client

#Включаем сжатие
comp-lzo
persist-key
persist-tun

#Маршруты добавляются через .exe если без него, то не у всех прописываются маршруты
route-method exe

#Задержка перед добавлением маршрута
route-delay 5

#Команда которая сообщает клиентам что за сервером локальная сеть 
с адресами 192.168.0.0 255.255.255.0
push "route 192.168.0.0 255.255.255.0"

#Прописывает маршрут на сервере чтобы видеть сеть за клиентом
route 172.17.10.0 255.255.255.0 10.10.10.2

#Шлюз
route-gateway 10.10.10.1

# каждому клиенту выдается по 1 адресу, без виртуальных портов маршрутизатора
topology subnet

В папке ccd создаем файл без расширения и называем его точно, как клиента UserVPN_1, открываем его блокнотом и пишем следующее:

#Присваиваем клиенту постоянный IP 10.10.10.2
ifconfig-push 10.10.10.2 255.255.255.0

#сообщаем серверу что за клиентом сеть 172.17.10.0 
iroute 172.17.10.0 255.255.255.0

#если раскоментировать следующую строку, то клиент будет отключен 
(на случай если нужно этого клиента отключить от сервера, а остальные будут работать)
# disable

Создаем конфиг клиента.

#Говорим, чтобы клиент забирал информацию о маршрутизации с сервера (push опции)
client

#Порт для работы OpenVPN
port 1190

#Указываем по какому протоколу работает OpenVPN
proto udp

#Тип интерфейса
dev tun

#Имя интерфейса
dev-node "VPN"

# Адрес сервера, к которому подключаемся
remote 444.333.222.111 1190

#защита
remote-cert-tls server

#Сертификат для шифрования подключения
dh C:\OpenVPN\ssl\dh1024.pem

#Сертификат центра сертификации
ca C:\OpenVPN\ssl\ca.crt

#Сертификат сервера
cert C:\OpenVPN\ssl\ UserVPN_1.crt

#ключ
key C:\OpenVPN\ssl\ UserVPN_1.key

# Защита от DOS атак
tls-auth C:\OpenVPN\keys\ta.key 1
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ping-restart 60
ping 10

#Включаем сжатие
comp-lzo
persist-key
persist-tun

# Выбор криптографического шифра
cIPher AES-256-CBC

#Логи
status C:\OpenVPN\log\openvpn-status.log
log C:\OpenVPN\log\openvpn.log

#Уровень отладочной информации
verb 3

#Количество повторяющихся сообщений
mute 20

Устанавливаем на клиенте OpenVPN, предаём ему ca.crt, UserVPN_1.crt, UserVPN_1.key, ta.key.

Настраиваем файрволы и антивирусы на клиенте и на сервере для беспрепятственного прохождения пакетов. Описывать не буду все зависит от установленных антивирусов и файрволов.

После всего этого запускаем наш сервер и клиент.

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-14

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-14

Если все правильно сделали наш сервер получит IP 10.10.10.1 и подключится к нему клиент и получит IP 10.10.10.2 . И так подключение у нас состоялось теперь сервер и клиент пингуют друг друга по IP нашей VPN сети, то есть 10.10.10.1 и 10.10.10.2.

Для того чтобы пинг шел по внутренним адресам наших N_B1 и N_B2 нужно включить службуМаршрутизации и удаленного доступа.

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-15

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-15

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

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-16

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-16

После этого мы сможем пинговать внутренние IP сервера и клиента (172.17.10.10 клиент и 192.168.2.100 сервер).

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

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-17

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-17

При этом все сети работают в штатном режиме. Лично меня этот крест раздражает и иногда сбивает с толку.

Есть второй способ как сделать видимыми внутренние IP сетей наших сервера и клиента.

Для этого заходим в реестр, открываем ветку реестра:

HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTcpIPParameters

Находим параметр и меняем значение: IPEnableRouter типа REG_DWORD значение 1.

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-18

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-18

Не забываем перезагрузить машину, чтобы настройки вступили в силу!

Это нужно проделать и на сервере, и на клиенте.

Итак мы пингуем наши сети по внутренним IP, а так как у нас и сервер и клиент для своих сетей являются шлюзами, то и машины из сети 1 могут видеть машины из сети 2 и наоборот. то есть Пользователь N_B1 (192.168.2.100) может видеть расшаренные папки Пользователя N_B2 (172.17.10.50) и наоборот.

Если сервер и клиент не будут являться шлюзами для своих сетей, в том случае придётся прописывать маршруты руками.

Пример для N_B1:

route -p 172.17.10.0 255.255.255.0 192.168.2.100 (машина где установлен OpenVPN)

Пример для N_B2:

route -p 192.168.0.0 255.255.255.0 172.17.10.10 (машина где установлен OpenVPN)

в моем случае этого не понадобилось.

Для автоматического запуска сервера и клиента нам нужно включить службу OpenVPN Service

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-19

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-19

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

Дополнительная защита

Как известно в OpenVPN есть возможность аутентификации по сертификатам, как описано выше, а так же по логину и паролю, но можно еще и объединить их вместе. Насколько мне известно только в Linux есть возможность штатными средствами настроить аутентификацию по логину и паролю, но в Windows это тоже можно решить. Для этого в папке config создаем файл auth.vbs и пишем в него следующее

'VBscript auth.vbs для аутентификации в OpenVPN - auth-user-pass-verify auth.vbs via-file
'(c) 2007  vinni  http://forum.ixbt.com/users.cgi?id=info:vinni
'Support: http://forum.ixbt.com/topic.cgi?id=14:49976
 
' в скрипте производится сравнение имени пользователя без учёта регистра.
' Если нужно иначе - уберите UCase(...) в 2 или 4 местах
 
On Error Resume Next
 
' открываем файл, имя которого передано OpenVPN-ом в скрипт через параметр
Set fso = CreateObject("scripting.filesystemobject")
Set CurrentUserPasswordFile = fso.OpenTextFile(WScript.Arguments(0),1) '1 = for reading
if Err.Number<>0 Then WScript.Quit(1)
 
' читаем из этого файла 2 строки - имя и пароль, которые ввёл пользователь "на том конце"
if CurrentUserPasswordFile.AtEndOfStream then WScript.Quit(1)
UserName=CurrentUserPasswordFile.ReadLine
if CurrentUserPasswordFile.AtEndOfStream then WScript.Quit(1)
Password=CurrentUserPasswordFile.ReadLine
CurrentUserPasswordFile.Close
 
' открываем переменную окружения common_name 
(это CN предъявленного клиентом сертификата)
' и сравниваем её с введенным именем пользователя.
' если это сравнение не нужно, то следующие 2 строки 
удалить или закомменировать
CurrentCommonName = CreateObject("Wscript.Shell").ExpandEnvironmentStrings("%common_name%")
if UCase(CurrentCommonName) <> UCase(UserName) then WScript.Quit(1)
 
' открываем наш файл с базой логинов и паролей
' по умолчанию это Users.pw в текущем каталоге
Set UserPasswordFileBase = fso.OpenTextFile("Users.pw",1) '1 = for reading
if Err.Number<>0 Then WScript.Quit(1)
 
' читаем в цикле пары строк, пропуская пустые МЕЖДУ ЭТИМИ ПАРАМИ,
' и сравниваем их с тем, что ввёл пользователь.
Do while not(UserPasswordFileBase.AtEndOfStream)
	NextUserName=UserPasswordFileBase.ReadLine
	if Err.Number<>0 Then WScript.Quit(1)
	if NextUserName<>"" then
' если имя пользователя надо сравнивать с учётом регистра,
 то удалите здесь UCase(...)
		if UCase(UserName)=UCase(NextUserName) then
			if Password=UserPasswordFileBase.ReadLine then
' если имя и пароль совпали с парой из базы, 
то завершаем скрипт с результатом 0
' так нужно для OpenVPN'a, это признак успешной аутентификации
				UserPasswordFileBase.Close
				WScript.Quit(0)
			end if
		else
			UserPasswordFileBase.ReadLine
		end if
	end if
Loop
 
' если поиск завершился безуспешно, то завершаем скрипт с результатом 1
' так нужно для OpenVPN'a, это признак НЕ успешной аутентификации
UserPasswordFileBase.Close
WScript.Quit(1)

Так же в папке config содаем файл Users.pw туда пишете логин и пароль нашего клиента

UserVPN_1
123456

Если несколько клиентов то:

UserVPN_1
123456

UserVPN_2
365214

UserVPN_3
14578

Дальше нужно в конфиге клиента прописать строку auth-user-pass, теперь когда клиент будет подключаться к серверу у него будет выплывать окно авторизации где нужно ввести логин и пароль, который вы назначили ему в Users.pw,их нужно будет сообщить клиенту.

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-20

Как организовать канал между офисами при помощи OpenVPN с дополнительной парольной защитой-20

У меня настроено что имя пользователь(логин) соответствует имени клиента в сертификате, то естьUserVPN_1. но можно задать и другое имя отличное от имени в сертификате, для этого нужно смотреть настройки в auth.vbs.

' открываем переменную окружения common_name (это CN предъявленного клиентом сертификата)
' и сравниваем её с введенным именем пользователя.
' если это сравнение не нужно, то следующие 2 строки удалить или закомменировать

CurrentCommonName = CreateObject("WscrIPt.Shell").ExpandEnvironmentStrings("%common_name%")
if UCase(CurrentCommonName) <> UCase(UserName) then WScrIPt.Quit(1)
WScrIPt.Echo "Debug: CurrentCommonName= " & CurrentCommonName

А для того чтобы аутентификация работала и по сертификату, и по логину с паролем, но при этом не выплывало окно авторизации пользователя, так как это будет задерживать подключение клиента к серверу если, например, у вас включена автоматическая загрузка службы OpenVPN Service (как настроено у меня) или вы просто не хотите каждый раз вводить логин и пароль, в этом случае на клиенте в папке ssl создаем файл pass.txt и пишем в него наш логин и пароль вот так:

UserVPN_1
123456

а в конфиге клиента меняем строку auth-user-pass на auth-user-pass C:\OpenVPN\ssl\pass.txt.

Теперь я включаю машину где установлен OpenVPN -Server, запускается служба и сервер VPN автоматически поднимается. Клиент запускает машину и у него также проходит автоматическое подключение к моему серверу. Теперь можно заходить в общие папки или по RDP работать, например, в 1С, установленной в другой организации.

Материал сайта pyatilistnik.org


Загрузить PDF


Загрузить PDF

Виртуальная частная сеть, или VPN, — это соединение, которое можно настроить между двумя компьютерами и которое обеспечивает надежную связь между компьютером с общим доступом к интернету и компьютером, подключенным к частной сети (дома или на работе). Чтобы настроить VPN, вам придется узнать определенную информацию о каждом компьютере, например, их IP-адрес или доменное имя, имя пользователя и пароль, а также другие настройки для аутентификации. Затем эти данные необходимо ввести в меню конфигураций VPN на компьютере. В этой статье содержатся инструкции для настройки VPN на компьютерах под управлением Windows 7 и Mac OS X 10.6.

  1. Изображение с названием Set up a Vpn Between Two Computers Step 1

    1

    Зайдите в меню VPN на удаленном компьютере. Это должен быть компьютер с общим доступом к интернету, а не тот, что будет выполнять роль сервера.

    • На рабочем столе нажмите на кнопку «Пуск» (с логотипом Windows).
    • Введите «VPN» в поисковое поле внизу всплывающего меню.
    • Нажмите на опцию «Настройка виртуальной частной сети (VPN)», когда та появится в списке результатов. Эта опция по умолчанию находится на Панели управления и запускает мастер настройки подключения к интернету.
  2. Изображение с названием Set up a Vpn Between Two Computers Step 2

    2

    Настройте исходящее VPN соединение.

    • В поле «Интернет-адрес» необходимо ввести доменное имя или IP-адрес компьютера или сервера, к которому вы хотите подключиться. Если у вас нет этой информации, свяжитесь с системным администратором (админом), управляющим сетью.
    • Введите имя пользователя и пароль, которые откроют вам доступ к сети, а затем нажмите «Подключиться».
  3. Изображение с названием Set up a Vpn Between Two Computers Step 3

    3

    Инициируйте исходящее VPN соединение.

    • Нажмите на логотип Windows в правом нижнем углу окна VPN, а затем на кнопку «Подключиться» под разделом «Имя назначения». Теперь нужно завершить настройку VPN на других компьютерах.
  4. Изображение с названием Set up a Vpn Between Two Computers Step 4

    4

    Зайдите в настройки адаптера на входящем компьютере. Компьютер со входящим соединением — это второй компьютер, выполняющий роль сервера.

    • Нажмите на кнопку «Пуск» на втором компьютере и введите в поисковое поле «Центр управления сетями и общим доступом».
    • Нажмите на появившуюся опцию «Центр управления сетями и общим доступом», а затем на «Изменение параметров адаптера», чтобы настроить соединения.
  5. Изображение с названием Set up a Vpn Between Two Computers Step 5

    5

    Укажите имя компьютера, которому хотите открыть доступ к частной сети.

    • Нажмите на «Файл» в появившемся меню (нажмите ALT+F, если меню «Файл» не видно), а затем выберите «Новое входящее подключение…». После этого на экране появится мастер настройки нового подключения, в котором вас попросят выбрать пользователей, которым вы хотите открыть доступ к VPN.
    • Укажите пользователей или имена компьютеров, к которым вы установили исходящее VPN соединение, и нажмите «Далее».
  6. Изображение с названием Set up a Vpn Between Two Computers Step 6

    6

    Установите входящее подключение к VPN.

    • Нажмите на опцию, которая указывает на то, что вы хотите открыть доступ к интернету всем пользователям, после чего снова нажмите «Далее».
    • Укажите тип IP, который будет использовать это подключение. Пользователи обычно выбирают «TCP/IPv4».
    • Нажмите на кнопку «Разрешить доступ». Компьютер с исходящим соединением теперь сможет подключаться к частной сети через VPN.

    Реклама

  1. Изображение с названием Set up a Vpn Between Two Computers Step 7

    1

    Узнайте у системного администратора параметры VPN сети. Вам понадобятся эти данные для настройки VPN-соединения на компьютере с общим доступом к интернету. К этим данным относится IP-адрес или доменное имя сервера VPN, а также имя пользователя и пароль для доступа к сети.

  2. Изображение с названием Set up a Vpn Between Two Computers Step 8

    2

    Войдите в меню сети VPN.

    • Нажмите на меню Apple, выберите опцию Системные настройки», а затем нажмите на «Сеть».
  3. Изображение с названием Set up a Vpn Between Two Computers Step 9

    3

    Введите данные для VPN соединения.

    • Нажмите на кнопку «Добавить», напоминающую знак плюс внизу меню «Сеть», после чего из появившегося списка выберите «VPN»
    • Выберите тип IP или соединения для VPN, а затем введите имя VPN-подключения.
    • Введите IP-адрес и учетное имя сервера, к которому хотите подключиться, после чего нажмите на кнопку «Настройки аутентификации».
    • Введите имя пользователя и пароль, которые вам сообщил системный администратор, и нажмите «ОК».
  4. Изображение с названием Set up a Vpn Between Two Computers Step 10

    4

    Подключитесь к частной сети через VPN-подключение.

    • Нажмите на кнопку «Подключить» внизу окна VPN-соединения. После этого вы получите доступ к частной сети, к которой подключились через VPN.

    Реклама

Об этой статье

Эту страницу просматривали 24 596 раз.

Была ли эта статья полезной?

Like this post? Please share to your friends:
  • Как постоянно отображать скрытые значки windows 10
  • Как постоянно отключить защиту в реальном времени windows 10
  • Как постоянно запускать приложения от имени администратора windows 10
  • Как поставить ярлыки на рабочий стол в windows 10
  • Как поставить ярлык яндекс на рабочий стол в windows 10