Subscribe on YouTube

Настройка IPSec Site-to-site VPN-туннеля используя сетевой программный маршрутизатор VyOS

Рассмотрим решение по построению VPN-соединения «точка-точка» для связи нескольких локаций с целью расширения ИТ-инфраструктуры.

В моем примере участвует две площадки: Россия и Франция.
(В примере используются реальные IP-адреса провайдеров для большей наглядности.)

FR.SW.DEVSERVERS.NETWORK - 45.32.144.83
RU.SW.DEVSERVERS.NETWORK - 195.209.51.5

Local subnet: 10.0.5.0/24
Remote subnet: 10.0.1.0/24

Шаг 1. Установка VyOS

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

Шаг 2. Базовая настройка

Выполняем настройку удаленного маршрутизатора (FR.SW.DEVSERVERS.NETWORK)

В интерфейсе командной строки VyOS переходим в режим конфигурации configure и выполняем базовую настройку (все доступы временные и созданы исключительно для статьи):

set system host-name fr.sw.devservers.network
set system time-zone Europe/Moscow
set service ssh port 55555
set system ntp server 0.fr.pool.ntp.org
set system ntp server 1.fr.pool.ntp.org
set system ntp server 2.fr.pool.ntp.org
set system ntp server 3.fr.pool.ntp.org
set interfaces ethernet eth0 address 45.32.144.83/22
set interfaces ethernet eth0 description PublicNetwork
set protocols static route 0.0.0.0/0 next-hop 45.32.144.1 distance 1
set interfaces ethernet eth1 address 10.0.1.1/24
set interfaces ethernet eth1 description PrivateNetwork
set system login user rbogachev full-name "Roman Bogachev"
set system login user rbogachev authentication plaintext-password wuQeXZcLt7GVHxnAqoMW9NjHrhtjFP8N
set system login user rbogachev level admin
Выполняем настройку локального маршрутизатора (RU.SW.DEVSERVERS.NETWORK)

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

set system host-name ru.sw.devservers.network
set system time-zone Europe/Moscow
set service ssh port 55555
set system ntp server 0.ru.pool.ntp.org
set system ntp server 1.ru.pool.ntp.org
set system ntp server 2.ru.pool.ntp.org
set system ntp server 3.ru.pool.ntp.org
set interfaces ethernet eth0 address 195.209.51.5/24
set interfaces ethernet eth0 description PublicNetwork
set protocols static route 0.0.0.0/0 next-hop 195.209.51.1 distance 1
set interfaces ethernet eth1 address 10.0.5.1/24
set interfaces ethernet eth1 description PrivateNetwork
set system login user rbogachev full-name "roman"
set system login user rbogachev authentication plaintext-password wuQeXZcLt7GVHxnAqoMW9NjHrhtjFP8N
set system login user rbogachev level admin

Шаг 3. Настройка IPSec, ESP и IKE групп

Группа IKE (Internet Key Exchange) позволяет предварительно определить набор из одного или нескольких предложений, которые будут использоваться в согласовании IKE Phase 1, после чего может быть настроена «ассоциация безопасности» ISAKMP (SA).

Для каждого предложения в группе определяется следующая информация:

  • Шифр, который зашифровывает пакеты во время IKE Phase;
  • Хеш-функция, которая аутентифицирует пакеты во время IKE Phase 1;
  • Срок жизни ассоциации;

Протокол ESP (Encapsulating Security Payload) обеспечивает конфиденциальность данных. Кроме того, он позволяет идентифицировать отправителя данных, а также обеспечить целостность данных и защиту от воспроизведения информации. При работе с ESP для шифрования и расшифровки данных обе конечные системы применяют общий ключ.

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

Выполняем настройку ESP и IKE групп на обоих устройствах (FR.SW.DEVSERVERS.NETWORK && RU.SW.DEVSERVERS.NETWORK)
set vpn ipsec esp-group DevServerESP lifetime 1800
set vpn ipsec esp-group DevServerESP mode tunnel
set vpn ipsec esp-group DevServerESP pfs enable
set vpn ipsec esp-group DevServerESP proposal 1 encryption aes256
set vpn ipsec esp-group DevServerESP proposal 1 hash sha1
set vpn ipsec ike-group DevServerESP lifetime 3600
set vpn ipsec ike-group DevServerESP proposal 1 encryption aes256
set vpn ipsec ike-group DevServerESP proposal 1 hash sha1
set vpn ipsec ipsec-interfaces interface eth0

Шаг 4. Поднимаем VPN-соединение «точка-точка»

Для настройки соединения потребуется указать параметры:

  • IP-адрес удаленного узла.
  • Режим проверки подлинности, который будет использоваться для аутентификации друг друга (PSK).
  • Группа ESP, которая будет использоваться в соединении.
  • Группа IKE, которая будет использоваться в соединении.
  • IP-адрес локального устройства для использования в туннеле.
  • Связывающая сеть (CIDR) или хост для каждого конца туннеля (изолированная сеть на оборудовании).
Выполняем настройку удаленного устройства (FR.SW.DEVSERVERS.NETWORK)
set vpn ipsec site-to-site peer 195.209.51.5 local-address 45.32.144.83
set vpn ipsec site-to-site peer 195.209.51.5 authentication mode pre-shared-secret
set vpn ipsec site-to-site peer 195.209.51.5 authentication pre-shared-secret MyS3cR3T
set vpn ipsec site-to-site peer 195.209.51.5 connection-type initiate
set vpn ipsec site-to-site peer 195.209.51.5 default-esp-group DevServerESP
set vpn ipsec site-to-site peer 195.209.51.5 ike-group DevServerESP
set vpn ipsec site-to-site peer 195.209.51.5 tunnel 0 local prefix 10.0.1.0/24
set vpn ipsec site-to-site peer 195.209.51.5 tunnel 0 remote prefix 10.0.5.0/24
Выполняем настройку локального устройства (RU.SW.DEVSERVERS.NETWORK)

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

set vpn ipsec site-to-site peer 45.32.144.83 local-address 195.209.51.5
set vpn ipsec site-to-site peer 45.32.144.83 authentication mode pre-shared-secret
set vpn ipsec site-to-site peer 45.32.144.83 authentication pre-shared-secret MyS3cR3T
set vpn ipsec site-to-site peer 45.32.144.83 connection-type initiate
set vpn ipsec site-to-site peer 45.32.144.83 default-esp-group DevServerESP
set vpn ipsec site-to-site peer 45.32.144.83 ike-group DevServerESP
set vpn ipsec site-to-site peer 45.32.144.83 tunnel 0 local prefix 10.0.5.0/24
set vpn ipsec site-to-site peer 45.32.144.83 tunnel 0 remote prefix 10.0.1.0/24

Шаг 5. Настройка политики маршрутизации

VyOS поддерживает политику маршрутизации (Policy Routing), позволяя назначать трафик другой таблице маршрутизации. Трафик можно сопоставить с использованием стандартного соответствия (адрес источника, адрес назначения, протокол, порт источника, порт назначения).

MSS Clamping обычно используется для трафика на основе IPSec, чтобы гарантировать, что трафик не превышает MTU пути, из-за дополнительных накладных расходов, которые представляет IPSec.

Выполняем настройку удаленного устройства (FR.SW.DEVSERVERS.NETWORK)
set policy route TCP-MSS1386-ETH0 rule 1 destination address 10.0.5.0/24
set policy route TCP-MSS1386-ETH0 rule 1 protocol tcp
set policy route TCP-MSS1386-ETH0 rule 1 set tcp-mss 1386
set policy route TCP-MSS1386-ETH0 rule 1 tcp flags SYN
set interfaces ethernet eth0 policy route TCP-MSS1386-ETH0
Выполняем настройку локального устройства (RU.SW.DEVSERVERS.NETWORK)
set policy route TCP-MSS1386-ETH0 rule 1 destination address 10.0.1.0/24
set policy route TCP-MSS1386-ETH0 rule 1 protocol tcp
set policy route TCP-MSS1386-ETH0 rule 1 set tcp-mss 1386
set policy route TCP-MSS1386-ETH0 rule 1 tcp flags SYN
set interfaces ethernet eth0 policy route TCP-MSS1386-ETH0

Подтверждаем все внесенные изменения commit и сохраняем настройки save.

И проверяем статус настроенного туннеля.

Шаг 6. Настройка VPN для клиентов

Подробная инструкция с видеоуроком по настройке L2TP/IPSec доступна на моём блоге.

Выполняем настройку VPN на удаленном устройстве (FR.SW.DEVSERVERS.NETWORK)
set vpn ipsec nat-traversal enable
set vpn ipsec nat-networks allowed-network 0.0.0.0/0
set vpn l2tp remote-access outside-address 45.32.144.83
set vpn l2tp remote-access client-ip-pool start 10.0.1.100
set vpn l2tp remote-access client-ip-pool stop 10.0.1.150
set vpn l2tp remote-access ipsec-settings authentication mode pre-shared-secret
set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret MySecretPSKkey
set vpn l2tp remote-access authentication mode local
set vpn l2tp remote-access authentication local-users username TestUser password MyCryptPass
set vpn l2tp remote-access dns-servers server-1 8.8.8.8

Подтверждаем внесенные изменения commit и сохраняем настройки save.

Troubleshooting

Сеть 10.0.5.0/24 без доступа в интернет

Для того, чтобы дать доступ в интернет для устройств из сети 10.0.5.0/24 необходимо немного изменить конфигурацию VPN-туннеля.

Выполняем настройку удаленного устройства (FR.SW.DEVSERVERS.NETWORK)
set nat source rule 5 outbound-interface eth0
set nat source rule 5 source address 10.0.5.0/24
set nat source rule 5 translation address masquerade
Выполняем настройку удаленного устройства (FR.SW.DEVSERVERS.NETWORK)
set vpn ipsec site-to-site peer 195.209.51.5 tunnel 0 local prefix 0.0.0.0/0
set vpn ipsec site-to-site peer 195.209.51.5 tunnel 0 remote prefix 10.0.5.0/24
Выполняем настройку локального устройства (RU.SW.DEVSERVERS.NETWORK)
set vpn ipsec site-to-site peer 45.32.144.83 tunnel 0 local prefix 10.0.5.0/24
set vpn ipsec site-to-site peer 45.32.144.83 tunnel 0 remote prefix 0.0.0.0/0

Проверяем:

$ monitor interfaces ethernet eth0 traffic filter "host 8.8.8.8"
Capturing traffic on eth0 ...
0.000000 8.8.8.8 -> 10.0.5.1 ICMP Echo (ping) reply
1.001370 8.8.8.8 -> 10.0.5.1 ICMP Echo (ping) reply
2.002658 8.8.8.8 -> 10.0.5.1 ICMP Echo (ping) reply
3.004103 8.8.8.8 -> 10.0.5.1 ICMP Echo (ping) reply
4.005408 8.8.8.8 -> 10.0.5.1 ICMP Echo (ping) reply
5.006465 8.8.8.8 -> 10.0.5.1 ICMP Echo (ping) reply
6.007675 8.8.8.8 -> 10.0.5.1 ICMP Echo (ping) reply
7.009037 8.8.8.8 -> 10.0.5.1 ICMP Echo (ping) reply
Поделиться Комментарии