Перейти к содержанию

Примеры настройки с использованием дополнительных параметров#

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

В этом разделе рассматриваются следующие вопросы:

Транспортный протокол (межфилиальный режим, режим клиента, режим сервера)#

По умолчанию OpenVPN использует протокол UDP в качестве транспортного протокола. Так как UDP является протоколом без установления соединения, любая сторона может инициировать туннель VPN, отправив пакет UDP на порт 1194 (по умолчанию) другому оконечному устройству. Также в качестве транспортного протокола OpenVPN может использовать протокол TCP. Однако, в том случае если используется TCP, одно оконечное устройство должно работать в пассивном режиме (passive) (то есть, в режиме ожидания входящих соединений TCP), а другое оконечное устройство должно работать в активном режиме (active) (то есть инициировать соединения TCP на порт TCP пассивного узла). С этой точки зрения каждый протокол имеет свои преимущества. Например, при использовании межсетевого экранирования или технологии преобразования сетевых адресов (NAT) между двумя оконечными устройствами предпочтительнее использование протокола TCP.

Однако, в условиях потерь сетевых пакетов, повторы передачи TCP на уровне туннеля могут пересекаться с повторами отдельных потоков TCP внутри туннеля VPN; таким образом, в этом случае предпочтительнее использование протокола UDP.

Соответствующие параметры настройки приведены в примере ниже и описаны ниже

Примечание

Использование протокола UDP в качестве транспортного протокола совместимо не со всеми режимами шифрования. Перед использованием необходимо ознакомиться с описанием команды конфигурационного режима: interfaces openvpn <vtunx> encryption <алгоритм>

Пример – Настройка параметра типа протокола#
1
2
3
4
5
6
7
8
interfaces {
   openvpn <интерфейс> {
      protocol <протокол>
      local-host <ip-адрес>
      local-port <порт>
      remote-port <порт>
   }
}
  • protocol: корректные значения для данного параметра: udp, tcp-active, и tcp-passive, а также аналогичные им для IPv6 – udp6, tcp6-active, tcp6-passive. В том случае если значение для параметра protocol явно не определено или указано значение udp или udp6, используется протокол UDP. С другой стороны, если используется протокол TCP, необходимо учитывать следующие требования:

    • как было указано выше, при использовании протокола TCP одно из оконечных устройств должно функционировать в пассивном режиме, а другое – в активном режиме;
    • на активном устройстве (tcp-active, tcp6-active) должен быть установлен параметр remote-host, для того чтобы данное устройство имело возможность устанавливать соединения;
    • если на устройстве, работающем в пассивном режиме (tcp-passive, tcp6-passive), установлен параметр remote-host, то только клиентское устройство с указанным IP-адресом сможет устанавливать соединения TCP с данным пассивным устройством;
    • в том случае если протокол TCP используется при построении VPN удаленного доступа (клиент-серверном режиме), клиент должен работать в активном режиме (tcp-active, tcp6-active), а сервер – в пассивном режиме (tcp-passive, tcp6-passive);
    • при использовании протокола TCP в комбинации с TLS, активный/пассивный режим для протоколов TCP и TLS должен совпадать. Другими словами, активное устройство (tcp-active, tcp6-active) также должно быть активным для протокола TLS (аналогичное справедливо и для пассивного устройства). Следует отметить, что данное ограничение не накладывается OpenVPN, но строго рекомендуется.
  • local-host: в качестве значения для данного параметра может быть указан IP-адрес или сетевой интерфейс данного оконечного устройства. В том случае если параметр local-host установлен, процесс OpenVPN будет принимать только подключения, приходящие на указанный IP-адрес. Это справедливо как для протокола UDP, так и для протокола TCP. В том случае если параметр local-host не установлен, OpenVPN принимает входящие подключения на всех интерфейсах. Данный параметр может быть использован для:

    • оконечного устройства, являющегося сервером при использовании клиент-серверного режима;
    • любого оконечного устройства при использовании протокола UDP в межфилиальном режиме;
    • пассивного оконечного устройства (tcp-passive, tcp6-passive) при использовании протокола TCP в межфилиальном режиме.
  • local-port: данный параметр определяет номер порта UDP или TCP, на котором OpenVPN будет принимать входящие подключения. В том случае если параметр не установлен, OpenVPN принимает подключения на порту 1194. Данный параметр может быть установлен для:

    • оконечного устройства, являющегося сервером при использовании клиент-серверного режима;
    • любого оконечного устройства при использовании протокола UDP в межфилиальном режиме;
    • пассивного оконечного устройства (tcp-passive, tcp6-passive) при использовании протокола TCP в межфилиальном режиме.
  • remote-port: данный параметр определяет номер сетевого порта UDP или TCP на другом оконечном устройстве, к которому OpenVPN инициирует подключения. Другими словами, это номер сетевого порта, на котором другое оконечное устройство принимает входящие подключения. В том случае если значение для данного параметра не установлено, OpenVPN инициирует подключения на сетевой порт, заданный по умолчанию (1194), на удаленном оконечном устройстве. Следует отметить, что если параметр remote-port установлен, его значение должно совпадать со значением параметра local-port, установленном на другом устройстве. Данный параметр может быть использован для:

    • оконечного устройства, являющегося клиентом, при использовании клиент-серверного режима;
    • любого оконечного устройства при использовании протокола UDP в межфилиальном режиме;
    • активного устройства (tcp-active, tcp6-active) при использовании протокола TCP в межфилиальном режиме.

Разделение трафика (межфилиальный режим, режим клиента, режим сервера)#

При установлении туннеля OpenVPN между двумя оконечными устройствами по умолчанию через туннель маршрутизируется только трафик VPN. Остальной сетевой трафик, например, сетевые пакеты, отправляемые на другие устройства посредством сети Интернет, продолжает маршрутизироваться с использованием маршрута по умолчанию. Данная технология называется разделением трафика (или разделением туннеля, split tunneling), так как позволяет разделить трафик на безопасный и небезопасный.

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

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

Пример – Настройка параметров, относящихся к разделению трафика#
1
2
3
4
5
6
7
interfaces { 
   openvpn интерфейс { 
      replace-default-route { 
         local 
      }
   }
}
  • replace-default-route: данный параметр позволяет указать OpenVPN, что маршрут по умолчанию должен быть заменен маршрутом через туннель VPN, то есть разделение трафика должно быть отключено. При установке данного параметра автоматически выполняются команды маршрутизации, которые позволяют направить весь сетевой трафик через туннель VPN:

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

    Следует отметить, что при установке данного параметра получаемый результат будет зависеть от режима работы OpenVPN, в котором функционирует оконечное устройство:

    • в том случае если оконечное устройство работает в межфилиальном режиме или режиме клиента, установка параметра replace-default-route заменит маршрут по умолчанию для данного оконечного устройства маршрутом через туннель VPN;
    • если оконечное устройство функционирует в режиме сервера, установка параметра replace-default-route приведет к тому, что на клиентских устройствах, которые подключаются к данному серверу, будет заменен маршрут по умолчанию.
  • local: данный параметр внутри дерева настройки replace-default-route должен быть установлен тогда и только тогда, когда оба оконечных устройства подключены напрямую, то есть находятся в одной и той же подсети. В том случае если установлен данный параметр, при выполнении команд маршрутизации пропускается шаг 1, то есть не создается статический маршрут к внешнему адресу удаленного узла OpenVPN через исходный маршрут по умолчанию.

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

Множественные удаленные оконечные устройства (режим клиента)#

В клиент-серверном режиме параметр remote-host должен быть указан на клиентских оконечных устройствах для того, чтобы они могли инициировать сеансы VPN. В некоторых случаях требуется указать список серверов — в случае отказа одного из серверов, клиент может подключиться к другому. Для того чтобы указать список серверов, следует указать множественные узлы настройки remote-host.

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

Пример – Edge2 - Настройка нескольких оконечных устройств OpenVPN#
  1. Создание узла конфигурации vtun0:
    [edit]
    admin@Edge2# set interfaces openvpn vtun0  
    
  2. Команды дополнительной настройки:
    ...
    
  3. Указание физического IP-адреса первого удаленного устройства:
    [edit]
    admin@Edge1# set interfaces openvpn vtun0 remote-host 203.0.113.11
    
  4. Указание физического IP-адреса второго удаленного устройства:
    [edit]
    admin@Edge1# set interfaces openvpn vtun0 remote-host 203.0.113.12
    
  5. Указание физического IP-адреса третьего удаленного устройства:
    [edit]
    admin@Edge1# set interfaces openvpn vtun0 remote-host 203.0.113.13
    
  6. Установка правила межсетевого экрана для входящего трафика на интерфейсе vtun0:
    [edit]
    admin@Edge2# set interfaces openvpn vtun0 policy in firewall name rules-in
    
  7. Команды дополнительной настройки:
    ...
    
  8. Фиксация изменений:
    [edit]
    admin@Edge2# commit
    
  9. Вывод настройки OpenVPN:
    1
    2
    3
    4
    5
    6
    7
    [edit]
    admin@Edge2# show interfaces openvpn vtun0
     ...
    remote-host 203.0.113.11
    remote-host 203.0.113.12
    remote-host 203.0.113.13
    ...
    

В том случае если указаны несколько записей, клиент инициирует подключение к первому устройству remote-host в списке. В том случае если первое устройство не работает, клиент попытается инициировать подключение ко второму устройству и так далее.

Следует отметить, что множественные записи remote-host могут быть также указаны для межфилиального режима. Однако, так как два оконечных устройства обычно зафиксированы в этом режиме, использование данной возможности не имеет смысла в большинстве случаев.

Клиент-серверная топология (режим сервера)#

В режиме удаленного доступа (клиент-серверном режиме) могут быть использованы две различные клиент-серверные топологии: «подсеть» (subnet) и «точка-точка» (point-to-point), как показано в примере ниже.

Пример – Настройка параметров, относящихся к топологии#
1
2
3
4
5
6
7
interfaces {
   openvpn интерфейс  {
      server {
         topology [subnet|point-to-point]
      }
   }
}

Параметр topology в основном определяет то, каким образом настроен интерфейс туннеля, каким образом выделяются адреса:

  • subnet: данная топология совместима с клиентами под управлением ОС Windows и принята по умолчанию, в том случае если значение для параметра topology явно не указано. При использовании топологии такого типа будут функционировать протоколы маршрутизации, использующие широковещательные рассылки. Однако при использовании данной топологии не обеспечивается изоляция клиентов; то есть клиенты досягаемы друг для друга;
  • point-to-point: данная топология не совместима с клиентами под управлением ОС Windows, а также протоколы маршрутизации, использующие широковещательные рассылки, не будут функционировать при использовании данной топологии. Данная технология обеспечивает изоляцию клиентов.

Настройки клиента (режим сервера)#

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

vpn4

Межфилиальное соединение VPN на базе клиент-серверного режима OpenVPN

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

Пример – Настройка параметров, относящихся к клиентам#
interfaces { 
   openvpn <интерфейс> { 
      server { 
         client <имя_клиента> { 
            ip <ipv4-адрес> 
            subnet <подсеть> 
         } 
      } 
   }
}
  • client: данный параметр определяет имя клиента; данное имя соответствует общему имени («common name») в сертификате клиента. Когда клиент инициирует сессию VPN, сервер проверяет имя, указанное в сертификате, и применяет настройки, предназначенные для данного клиента (если они существуют);
  • ip: данный параметр определяет фиксированный IP-адрес, который будет назначен конкретному клиенту;
  • subnet: данный параметр определяет частную подсеть, расположенную за клиентом. Процесс OpenVPN будет маршрутизировать трафик, предназначенный для этой подсети, через указанного клиента. Следует отметить, что данный параметр информирует сервер OpenVPN, на какое клиентское устройство следует маршрутизировать трафик для этой подсети.

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

В вышеприведенном примере сервер Edge1 может быть настроен с указанием IP-адреса и подсети клиента Edge2 (следует отметить, что также должен быть добавлен статический маршрут к подсети Edge2).

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

Пример – Edge1 – Настройка OpenVPN – межфилиальное подключение с использованием статического ключа#
  1. Создание узла конфигурации vtun0:
    [edit]
    admin@Edge1# set interfaces openvpn vtun0 
    
  2. Команды дополнительной настройки:
    ...
    
  3. Создание конфигурационного узла сервера:
    [edit]
    admin@Edge1# set interfaces openvpn vtun0 server
    
  4. Команды дополнительной настройки:
    ...
    
  5. Создание узла конфигурации клиента Edge2:
    [edit]
    admin@Edge1# set interfaces openvpn vtun0 server client Edge2
    
  6. Установка подсети клиента:
    [edit]
    admin@Edge1# set interfaces openvpn vtun0 server client Edge2 subnet 192.168.10.0/24
    
  7. Указание IP-адреса клиента:
    [edit]
    admin@Edge1# set interfaces openvpn vtun0 server client Edge2 ip 192.168.100.100
    
  8. Команды дополнительной настройки:
    ...
    
  9. Фиксация изменений:
    [edit]
    admin@Edge1# commit
    
  10. Вывод настройки OpenVPN:
    [edit]
    admin@Edge1# show interfaces openvpn vtun0
    ...
    server {
       ...
       client Edge2 {
          ip 192.168.100.100
          subnet 192.168.10.0/24
       }
       ...
    }
    ...
    

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

Пример – Настройка статического маршрута на узле Edge1#
  1. Создание статического маршрута для получения доступа к удаленной подсети через туннель OpenVPN:
    [edit]
    admin@Edge1# set protocols static interface-route 192.168.10.0/24 next-hop-interface vtun0
    
  2. Фиксация изменений:
    [edit]
    admin@Edge1# commit
    
  3. Вывод настройки статических маршрутов:
    1
    2
    3
    4
    [edit]
    admin@Edge1# show protocols static interface-route 192.168.10.0/24 {
       next-hop-interface vtun0
    }
    

Неподдерживаемые параметры OpenVPN#

OpenVPN имеет более двухсот параметров, не все из которых поддерживаются в настройке Изделия В то же время администратору в некоторых случаях могут потребоваться параметры OpenVPN, не поддерживаемые при настройке Изделия. Для таких случаев в системе существует атрибут настройки openvpn-option; этот атрибут позволяет определить любой параметр OpenVPN, см. пример ниже.

Пример – Атрибут настройки "openvpn-option"#
1
2
3
4
5
interfaces {
   openvpn <интерфейс> {
      openvpn-option <опции> 
   } 
}

Текстовое значение атрибута openvpn-option передается напрямую (без какой-либо проверки допустимости) процессу OpenVPN во время запуска OpenVPN так, как если бы данное текстовое значение было введено пользователем в командной строке. Следовательно, одновременно могут быть введены несколько параметров, как показано ниже.

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

Пример – Ввод нескольких параметров OpenVPN при помощи «openvpn-option»#
  1. Создание узла конфигурации vtun0:
    [edit]
    admin@Edge1# set interfaces openvpn vtun0
    
  2. Команды дополнительной настройки:
    ...
    
  3. Установка требуемых параметров OpenVPN:
    [edit]
    admin@Edge1# set interfaces openvpn vtun0 openvpn-option "--tun-mtu 1420 --verb 5"
    
  4. Команды дополнительной настройки:
    ...
    
  5. Фиксация изменений:
    [edit]
    admin@Edge1# commit
    
  6. Вывод настройки OpenVPN:
    1
    2
    3
    4
    5
    [edit]
    admin@Edge1# show interfaces openvpn vtun0
    ...
    openvpn-option "--tun-mtu 1420 --verb 5"
    ...
    

Для данного параметра не выполняется никакая проверка допустимости; таким образом, при его использовании следует убедиться, что параметр OpenVPN, а также его значения (в том случае если оно указано) корректны. Более того, так как многие параметры OpenVPN конфликтуют с остальными, следует также убедиться в том, что указанные параметры не конфликтуют с теми, которые используются в настройке. Также некоторые параметры OpenVPN требуют согласования между двумя оконечными устройствами, например, значение должно равняться 0 на одной стороне и 1 на другой. Необходимо убедиться, что значения согласованы.