администрирование administration ,

VPN - коротко о главном VPN: Quick Start

Apr 30, 2019 · 7 мин. на прочтение 7 min read
VPN - коротко о главном
Поделиться Share

Сразу поясню, что я не разбираюсь в сетях, протоколах и в том, как всё это устроено и работает. Другими словами, я не “сетевик”. Но есть пограничные области, где системный администратор очень близко подходит и соприкасается с сетевыми технологиями. И вот тут-то нам и нужно понимать хотя бы базовые принципы работы. В статье приведены материалы, собранные по разным сайтам в Internet. Не претендую ни на какую полноту или достоверность.

В статье использованы материалы свободной энциклопедии Wikipedia.

Как сообщает Wikipedia, технология VPN была разработана для того, чтобы позволить удалённым офисам получить доступ к корпоративным ресурсам1. Для обеспечения безопасности используется один из туннельных протоколов, использующих шифрование (an encrypted layered tunneling protocol). А также аутентификация пользователей с использованием пароля и/или сертификата.

Туннельный протокол или протокол туннелирования - это коммуникационный протокол, который позволяет передавать данные из одной сети в другую.

Коммуникационный протокол - это система правил, которая позволяет двум или более объектам системы связи передавать информацию посредством любого изменения физической величины. Протокол определяет правила, синтаксис, семантику и синхронизацию связи и возможные методы восстановления после ошибок. Протоколы могут быть реализованы аппаратными средствами, программным обеспечением или комбинацией обоих2.

Суть туннелирования состоит в том, чтобы «упаковать» передаваемую порцию данных, вместе со служебными полями, в новый «конверт» для обеспечения конфиденциальности и целостности всей передаваемой порции, включая служебные поля. Этот процесс называется инкапсуляцией (encapsulation).

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

На скриншоте проиллюстрирован процесс инкапсуляции на примере отправки сообщения UDP.

vpn-short-description/vpn-short-description_1.png

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

vpn-short-description/vpn-short-description_2.png

Используя Microsoft Message Analyzer или Wireshark можно более наглядно посмотреть, как устроена инкапсуляция

vpn-short-description/vpn-short-description_3.png

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

vpn-short-description/vpn-short-description_4.png

Собственно, комбинация туннелирования + шифрования и позволяет реализовать виртуальные частные сети (VPN)3.

Вот наиболее популярные протоколы туннелирования.

  • GRE (Protocol 47): Generic Routing Encapsulation
  • OpenVPN (UDP port 1194): Openvpn
  • SSTP (TCP port 443): Secure Socket Tunneling Protocol
  • IPSec (Protocol 50 and 51): Internet Protocol Security
  • L2TP (Protocol 115): Layer 2 Tunneling Protocol

Каждый из них обладает своими особенностями, достоинствами и недостатками. Об этом позже.

Давайте взглянем какие из этих протоколов поддерживает Windows 10 и iOS. Создавая и настраивая VPN соединение в Windows мы можем выбрать между PPTP, L2TP, SSTP и IKEv2 протоколами. Apple некоторое время назад отказались от поддержки PPTP и сейчас в iOS поддерживается IKEv2, L2TP и IPsec.

vpn-short-description/vpn-short-description_5.png vpn-short-description/vpn-short-description_6.png

В Windows Server, запустив оснастку Routing and Remote Access, в свойствах элемента Ports мы можем увидеть, какие протоколы задействованы на нашем VPN-сервере в данный момент.

vpn-short-description/vpn-short-description_7.png

Теперь попробуем определиться, какой из этих протоколов выбрать. Как я уже говорил каждый из них имеет свои особенности. В интернете можно найти много статей на эту тему, не буду их повторять. Приведу лишь небольшую табличку, в качестве памятки. Из неё видно, что наиболее универсальным является протокол IKEv2. Он быстрый, защищенный, поддерживается Windows и iOS. Но не поддерживается производителям Android и Linux.

vpn-short-description/vpn-short-description_8.png

Обратите внимание на протокол OpenVPN. Он не присутствует нативно в Windows и iOS, но для этих ОС существует клиент, который позволяет настраивать и устанавливать VPN соединение с использованием данного протокола.

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

Right away: I’m not a networking expert. But there are “border areas” where a system administrator gets very close to networking technologies, and in those moments it’s useful to understand at least the basics. This post is a collection of materials from various sources on the Internet. I don’t claim completeness or perfect accuracy.

This article uses materials from Wikipedia.

According to Wikipedia, VPN technology was created to allow remote offices to access corporate resources1. For security, it uses a tunneling protocol with encryption (an encrypted layered tunneling protocol), and user authentication via password and/or certificate.

A tunneling protocol is a communication protocol that allows data to be transmitted from one network to another.

A communication protocol is a system of rules that allows two or more entities in a communication system to transmit information via any change of a physical quantity. A protocol defines the rules, syntax, semantics and synchronization of communication, as well as possible methods of error recovery. Protocols can be implemented by hardware, software, or a combination of both2.

The idea of tunneling is to “wrap” a data packet (together with its service headers) into a new “envelope” to provide confidentiality and integrity of the whole transmission, including the headers. This process is called encapsulation.

Encapsulation is embedding higher-level messages into lower-level messages. For example, a web page is encapsulated into HTTP, which is encapsulated into TCP, then into IP, and so on.

The screenshot below illustrates encapsulation using a UDP message as an example.

vpn-short-description/vpn-short-description_1.png

To better understand the illustration, recall the OSI model shown below.

vpn-short-description/vpn-short-description_2.png

Using Microsoft Message Analyzer or Wireshark, you can see encapsulation more clearly.

vpn-short-description/vpn-short-description_3.png

And just in case you forgot the IPv4 header format, it’s shown here:

vpn-short-description/vpn-short-description_4.png

So, the combination of tunneling + encryption is what enables Virtual Private Networks (VPN)3.

Here are some popular tunneling protocols:

  • GRE (Protocol 47): Generic Routing Encapsulation
  • OpenVPN (UDP port 1194)
  • SSTP (TCP port 443): Secure Socket Tunneling Protocol
  • IPSec (Protocols 50 and 51): Internet Protocol Security
  • L2TP (Protocol 115): Layer 2 Tunneling Protocol

Each of them has its own properties, advantages and disadvantages.

Now let’s look at which of these protocols are supported by Windows 10 and iOS. When you create a VPN connection in Windows, you can choose between PPTP, L2TP, SSTP, and IKEv2. Apple dropped PPTP support some time ago, so iOS supports IKEv2, L2TP, and IPsec.

vpn-short-description/vpn-short-description_5.png vpn-short-description/vpn-short-description_6.png

On Windows Server, if you open Routing and Remote Access, you can see which protocols are currently enabled on your VPN server in Ports.

vpn-short-description/vpn-short-description_7.png

Which protocol should you choose? As I said, each has its own specifics, and there are many articles online. I won’t repeat them here — I’ll only include a small “cheat sheet” table. It shows that IKEv2 is the most universal choice: fast, secure, supported by Windows and iOS. But it is not universally supported by Android and Linux vendors.

vpn-short-description/vpn-short-description_8.png

Also pay attention to OpenVPN. It’s not built into Windows or iOS, but there are clients for both operating systems that allow you to configure and use OpenVPN connections.

I’d like to write a separate post about OpenVPN: how to use it, how to configure the server and client. There are tons of guides online, but I haven’t found one that explains the setup the way I’d like — with the necessary explanations for each step.

vpn
Заходите в группу Telegram Join the Telegram group
Если есть вопросы или хотите пообщаться, то заходите в мою группу Telegram. If you have questions or want to chat, join my Telegram group.