В этом сценарии использования ПАК Numa Edge VPN будет рассмотрена особенность построения защищенного соединения через публичную сеть для объединения филиала с центральным офисом. Под публичной сетью понимается любая топология сети, обеспечивающая IP-связность, но допускающая утечку критичных данных при передаче по ней трафика. Для обеспечения безопасности передачи данных между удаленными объектами будет построено VPN-соединение с использованием стандартов GRE для туннелирования трафика и стандарта IPsec для его последующего шифрования. Поскольку одним из самых распространенных протоколов динамической маршрутизации внутри корпоративной сети является OSPF, в этом примере также будут рассмотрены особенности настройки этого протокола для обеспечения сетевой связности между объектами организации.
На рисунке ниже представлена топология сети, в которой присутствуют узлы msk-gw1, spb-gw1 и spb-gw2. К каждому из узлов сети подключена локальная сеть, и задачей данного примера является обеспечение связности между этими сетями.
Узел сети msk-gw1 подключен к провайдеру интернет-услуг через интерфейс eth0, и в качестве маршрута по умолчанию (default route) на нем указан шлюз провайдера (на схеме обозначен как ISP). На этом узле настроена OSPF-зона AREA 0 (Backbone area) – зона, в которой осуществляется маршрутизация между различными сегментами и которая в дальнейшем может быть использована для масштабирования.
На узле сети spb-gw1 настроено несколько зон OSPF, где AREA 0 необходима для обмена маршрутной информацией с узлом mks-gw1, AREA 2 – локальная зона, в которой происходит обмен маршрутами между узлами sbp-gw1 и sbp-gw2.
Узел сети spb-gw2 подключен с spb-gw1 через доверенный канал, поэтому обеспечение безопасности передачи данных будем считать излишним.
Узлы сети spb-gw1 и spb-gw2 для предоставления централизованного доступа в интернет должны отправлять весь трафик во внешнюю от узла msk-gw1.
set interfaces ethernet eth0 address 192.0.2.1/24
set interfaces ethernet eth1 address 203.0.113.1/24
set interfaces ethernet eth3 address 192.168.11.254/24
commit
Примечание
В параметре туннельного интерфейса local-ip необходимо использовать уже настроенный IP-адрес, поэтому необходимо обязательно применить настройки из предыдущего блока, использовав команду commit.
set interfaces tunnel tun0 address 10.0.0.1/30
set interfaces tunnel tun0 local-ip 203.0.113.1
set interfaces tunnel tun0 remote-ip 198.51.100.1
set interfaces tunnel tun0 encapsulation gre
set interfaces tunnel tun0 mtu 1400
commit
Примечание
Накладные расходы на каждый передаваемый пакет ESP в транспортном режиме IPsec с инкапсулированным GRE-туннелем составляют 56 байт (туннельный режим IPsec добавляет еще 20 байт из-за создания нового IP-заголовка). По умолчанию значение MTU для создаваемых туннелей равно 1476 байта, в то время как значение по умолчанию для Ethernet-интерфейсов составляет 1500 байт. Поскольку фрагментация пакетов негативно влияет на производительность VPN-туннелей, хорошей практикой при использовании GRE c шифрованием IPsec является указание значения mtu равного 1400 вне зависимости от режима работы IPsec.
set protocols static route 0.0.0.0/0 next-hop 192.0.2.254
set protocols static route 198.51.100.0/24 next-hop 203.0.113.254
commit
Поскольку в описанной схеме сети на рисунке 1 узел сети ISP является шлюзом провайдера, необходимо создать до него статический маршрут для сети 0.0.0.0/0.
Подсеть 198.51.100.0/24 доступна через публичную сеть, поэтому также необходимо создать для нее статический маршрут, где в качестве next-hop указывается адрес публичной сети, как на рисунке выше.
set service nat ipv4 rule 10 outbound-interface eth0
set service nat ipv4 rule 10 type 'masquerade'
Поскольку узел сети msk-gw1 находится на границе корпоративной сети, необходимо настроить маскарадинг IP-адресов, при отправке пакетов во внешнюю сеть.
Примечание
В этом примере не рассматривается настройка межсетевого экрана на узлах сети.
set interfaces tunnel tun0 address 10.0.0.2/30
set interfaces tunnel tun0 local-ip 198.51.100.1
set interfaces tunnel tun0 remote-ip 203.0.113.1
set interfaces tunnel tun0 encapsulation gre
set interfaces tunnel tun0 mtu 1400
commit
set vpn ipsec ike-group IKE-MSKGW1 proposal 1 encryption aes
set vpn ipsec ike-group IKE-MSKGW1 proposal 1 hash sha256
set vpn ipsec ike-group IKE-MSKGW1 proposal 1 dh-group 2
set vpn ipsec ike-group IKE-MSKGW1 proposal 2 encryption camellia
set vpn ipsec ike-group IKE-MSKGW1 proposal 2 hash sha512
set vpn ipsec ike-group IKE-MSKGW1 proposal 2 dh-group 2
В настройках группы IKE указываются 2 предложения. Предложения с удаленным хостом согласовываются согласно нумерации, начиная с наименьшего значения. В качестве предложения 1 используются наиболее распространенные криптографические алгоритмы – aes и sha256. В качестве предложения 2 – шифр camellia и sha512. Для обмена ключами в обоих случаях используется 1024-битная группа Диффи-Хеллмана.
set vpn ipsec esp-group ESP-MSKGW1 mode transport
set vpn ipsec esp-group ESP-MSKGW1 proposal 1 encryption aes
set vpn ipsec esp-group ESP-MSKGW1 proposal 1 hash hmac_sha256
set vpn ipsec esp-group ESP-MSKGW1 proposal 2 encryption camellia
set vpn ipsec esp-group ESP-MSKGW1 proposal 2 hash hmac_sha512
set vpn ipsec esp-group ESP-MSKGW1 pfs-group 2
set vpn ipsec esp-group ESP-MSKGW1 lifetime 1800
В качестве режима работы ESP выбирается транспортный режим. Криптографические алгоритмы, используемые в двух предложениях, соответствуют описанным для IKE-группы.
Примечание
Разумным балансом между безопасностью и производительностью является использование PFS (perfect forward secrecy, полная безопасность пересылки), при котором на основе секретного ключа генерируются сеансовые ключи, которые используются в течение времени жизни ESP – значение lifetime. При использовании PFS можно использовать ключи ограниченного размера при условии их регулярной замены.
set vpn ipsec site-to-site peer 198.51.100.1 authentication method pre-shared-key
set vpn ipsec site-to-site peer 198.51.100.1 authentication pre-shared-key 'psk_test_1'
set vpn ipsec site-to-site peer 198.51.100.1 esp-group ESP-MSKGW1
set vpn ipsec site-to-site peer 198.51.100.1 ike-group IKE-MSKGW1
set vpn ipsec site-to-site peer 198.51.100.1 local-ip 203.0.113.1
set vpn ipsec site-to-site peer 198.51.100.1 remote-ip 198.51.100.1
commit
Название IPsec можно выбирать произвольным (значение peer ), для удобства используется IP-адрес удаленного узла. Указываются начальная и оконечная точка IPsec-соединения (параметры local-ip и remote-ip), также указываются ранее настроенные группы IKE и ESP. Метод аутентификации – ключ PSK.
Настройка IKE и ESP-групп полностью соответствует настройкам на узле msk-gw1. В узле конфигурации site-to-site значения local-ip и remote-ip зеркальны относительно узла msk-gw1, остальные же параметры идентичны.
admin@spb-gw1# ping 203.0.113.1 -c 5
PING 203.0.113.1 (203.0.113.1): 56 data bytes
64 bytes from 203.0.113.1: seq=2 ttl=63 time=2.826 ms
64 bytes from 203.0.113.1: seq=3 ttl=63 time=2.982 ms
64 bytes from 203.0.113.1: seq=4 ttl=63 time=3.012 ms
--- 203.0.113.1 ping statistics ---
5 packets transmitted, 3 packets received, 40% packet loss
round-trip min/avg/max = 2.826/2.940/3.012 ms
Во время установки IPsec-соединения будет потеряно несколько пакетов, поскольку произойдет установление IPsec SA (Security Association – сопоставление безопасности).
Просмотр информации о созданном туннеле:
admin@spb-gw1:~$ show vpn ike sa
Source Destination Cookies ST S V E Created Phase2
198.51.100.1:500 203.0.113.1:500 fca8e0d08086a0c9:9ddaf66104ebcf36 9 I 10 M 2020-06-02 11:59:34 1
Вывод информации об установлении IKE-соединения, в котором указаны адрес и порт локального и удаленного узла и время установления соединения, а также дополнительная информация:
admin@spb-gw1:~$ show vpn ipsec status
IPsec работает, активных туннелей: 2
С помощью этой команды можно посмотреть статус соединения IPsec. Для успешной работы должно быть установлено 2 SA для одного IPsec VPN. Соединение SA является симплексным (однонаправленным) и одно из них используется для шифрования и передачи трафика и одно – для получения и расшифровки:
set protocols ospf area 0 network 10.0.0.0/30
set protocols ospf area 0 network 192.168.11.0/24
set protocols ospf passive-interface eth3
set protocols ospf default-information originate always
set protocols ospf parameters router-id 203.0.113.1
set interfaces tunnel tun0 ip ospf network point-to-point
commit
Создается backbone зона (area 0), в которой описываем 2 сети:
10.0.0.0/30 - сеть туннельного интерфейса, через который будет устанавливаться соседство с spb-gw1;
192.168.11.0/24 – сеть локального интерфейса eth3, которая будет анонсироваться другим OSPF-соседям.
На интерфейсе eth3 будет включен OSPF, поскольку его IP-адрес находится в диапазоне, указанном в параметре network для area 0. После включения OSPF с интерфейса eth3 будут отправляться Hello-пакеты в попытке обнаружения других OSPF-маршрутизаторов и установления соседства. Поскольку после интерфейса eth3, согласно схеме на рисунке 1, находится локальная сеть, во избежание мусорного трафика необходимо отключить OSPF на этом интерфейсе. Для отключения необходимо указать интерфейс eth3 в параметре passive-interface.
Примечание
Если на маршрутизаторе необходимо отключить OSPF на всех интерфейсах кроме одного, необходимо использовать 2 параметра:
passive-interface default – отключает OSPF на всех интерфейсах;
passive-interface-exclude tun0 – кроме интерфейса tun0.
Параметр default-information originate позволяет разрешить анонс маршрута по умолчанию, а также указать дополнительные настройки анонса. В этом примере будет достаточно указать только значение always.
Значение router-id описывает уникальный идентификатор OSPF-маршрутизатора, поскольку связь с соседом устанавливается на интерфейсе eth1, укажем IP-адрес этого интерфейса в данном параметре.
По умолчанию при работе OSPF на туннельном GRE-интерфейсе будет указан тип сети broadcast, особенностью работы которого является выбор приоритетного маршрутизатора OSPF. Эта особенность увеличивает время сходимости сети. Согласно схеме на рисунке 1, через интерфейс tun0 доступен только один маршрутизатор msk-gw1. Поэтому тип сети на интерфейсе tun0 необходимо изменить на point-to-point.
Примечание
Согласно приведенным выше настройкам, значение router-id будет выбрано как 203.0.113.1, так как является наибольшим значением IP-адреса на всех интерфейсах узла msk-gw1. Однако его явное указание является хорошим тоном.
set protocols ospf area 0 network 192.168.21.0/24
set protocols ospf area 0 network 10.0.0.0/30
set protocols ospf area 2 network 100.100.0.0/30
set protocols ospf passive-interface eth3
set protocols ospf parameters router-id 198.51.100.1
set interfaces tunnel tun0 ip ospf network point-to-point
commit
На узле spb-gw1 создаются 2 зоны:
1) backbone зона (area 0), в которой описываются 2 сети:
10.0.0.0/30 – сеть туннельного интерфейса, через который будет устанавливаться соседство с msk-gw1;
192.168.21.0/24 – сеть локального интерфейса eth3, которая будет анонсироваться другим OSPF-соседям.
2) standard зона (area 2), в которой описывается сеть 100.100.0.0/30, настроенная на интерфейсе eth1 и необходимая для установления соседства с узлом spb-gw2.
Необходимо дополнительно произвести операции, аналогичные настройкам OSPF на узле msk-gw1, а именно:
выключить OSPF на интерфейсе в сторону локальной сети;
указать значение router-id, используется IP-адрес интерфейса eth0;
set protocols ospf area 2 network 192.168.31.0/24
set protocols ospf area 2 network 100.100.0.0/30
set protocols ospf passive-interface eth3
set protocols ospf parameters router-id 100.100.0.2
На узле spb-gw2 необходимо произвести операции, аналогичные настройкам OSPF, описанным ранее:
создать standart зону (area 2), в которой указать сети:
100.100.0.0/30 – для установления соседства с узлом spb-gw1, настроенная на интерфейсе eth0;
192.168.31.0/24 – локальная сеть, настроенная на интерфейсе eth3;
выключить OSPF на интерфейсе в сторону локальной сети;
указать значение router-id, используется IP-адрес интерфейса eth0.
Согласно топологии, описанной на рисунке выше, доступность между всеми узлами можно считать успешной, если на узле сети spb-gw2 будут присутствовать маршруты во все локальные сети, а также default route.
admin@spb-gw2:~$ show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, A - Babel, N - NHRP,
> - selected route, * - FIB route
O>* 0.0.0.0/0 [110/1] via 100.100.0.1, eth0, 00:10:34
O>* 10.0.0.0/30 [110/20] via 100.100.0.1, eth0, 00:10:35
O 100.100.0.0/30 [110/10] is directly connected, eth0, 00:10:45
C>* 100.100.0.0/30 is directly connected, eth0
C>* 127.0.0.0/8 is directly connected, lo
O>* 192.168.11.0/24 [110/30] via 100.100.0.1, eth0, 00:10:35
O>* 192.168.21.0/24 [110/20] via 100.100.0.1, eth0, 00:10:35
O 192.168.31.0/24 [110/10] is directly connected, eth3, 00:14:01
C>* 192.168.31.0/24 is directly connected, eth3
Как видно из листинга, в таблице маршрутизации присутствуют все настроенные ранее подсети.
### Проверка доступности ISP
traceroute to 192.0.2.254 (192.0.2.254), 30 hops max, 60 byte packets
1 192.168.31.254 (192.168.31.254) 1.296 ms 0.851 ms 0.981 ms
2 100.100.0.1 (100.100.0.1) 4.489 ms 5.669 ms 5.486 ms
3 10.0.0.1 (10.0.0.1) 11.106 ms 9.775 ms 9.221 ms
4 192.0.2.254 (192.0.2.254) 10.597 ms 10.441 ms 10.296 ms
Из подсети 192.168.31.0/24 необходимо запустить трассировку до узла сети ISP (IP-адрес 192.0.2.254). Листинг говорит об успешном построении маршрута до ISP, поэтому считается, что остальные подсети, доступные через ISP, также доступны.
admin@spb-gw1:~$ show ip ospf interface tun0
tun0 is up
ifindex 13, MTU 1400 bytes, BW 0 Kbit <UP,POINTOPOINT,RUNNING,NOARP>
Internet Address 10.0.0.2/30, Broadcast 10.0.0.3, Area 0.0.0.0
MTU mismatch detection:enabled
Router ID 198.51.100.1, Network Type POINTOPOINT, Cost: 10
Transmit Delay is 1 sec, State Point-To-Point, Priority 1
No designated router on this network
No backup designated router on this network
Multicast group memberships: OSPFAllRouters
Timer intervals configured, Hello 10s, Dead 40s, Wait 40s, Retransmit 5
Hello due in 7.393s
Neighbor Count is 1, Adjacent neighbor count is 1
Поскольку протокол OSPF относится к классам протоколов состояния канала, диагностику возникших неполадок рекомендуется начинать с просмотра состояния интерфейса. Полезной информацией в данном листинге является:
tun0 is up – состояние интерфейса;
Network Type POINTOPOINT – тип сети, в случае рассогласования типов сети – соседство не будет установлено;
Hello due in 7.393s – значение увеличивается со временем, но не должно превышать значение Hello timer intervals. Превышение этого значения означает, что ответный пакет Hello не был получен, либо маршрутизатор, отправивший Hello, не обнаружил себя в списке соседей ответного Hello-пакета. По истечении Dead timer intervals соседство будет разорвано.
admin@spb-gw1:~$ show ip ospf interface eth3
eth3 is up
ifindex 5, MTU 1500 bytes, BW 0 Kbit <UP,BROADCAST,RUNNING,MULTICAST>
Internet Address 192.168.21.254/24, Broadcast 192.168.21.255, Area 0.0.0.0
MTU mismatch detection:enabled
Router ID 198.51.100.1, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 198.51.100.1, Interface Address 192.168.21.254
No backup designated router on this network
Multicast group memberships: <None>
Timer intervals configured, Hello 10s, Dead 40s, Wait 40s, Retransmit 5
No Hellos (Passive interface)
Neighbor Count is 0, Adjacent neighbor count is 0
Поскольку интерфейс eth3 был переведен в пассивный режим, из листинга видно, что OSPF на интерфейсе включен, но Hello-пакеты не отправляются: No Hellos (Passive interface).
admin@spb-gw1:~$ show ip ospf interface eth0
eth0 is up
ifindex 2, MTU 1500 bytes, BW 0 Kbit <UP,BROADCAST,RUNNING,MULTICAST>
OSPF not enabled on this interface
Состояние всех интерфейсов, на которых не включен OSPF, должно быть аналогично.
admin@spb-gw1:~$ show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
203.0.113.1 1 Full/DROther 32.583s 10.0.0.1 tun0:10.0.0.2 0 0 0
100.100.0.2 1 Full/Backup 39.353s 100.100.0.2 eth1:100.100.0.1 0 0 0
В листинге этой команды видно, что маршрутизатор spb-gw2 (Neighbor ID 100.100.0.2) является резервным маршрутизатором.
Поскольку на интерфейсе tun0 не происходит выбор главного маршрутизатора – состояние msk-gw1 (Neighbor ID 203.0.113.1) – state DROther.
admin@spb-gw1:~$ show ip ospf database
OSPF Router with ID (198.51.100.1)
Router Link States (Area 0.0.0.0)
Link ID ADV Router Age Seq# CkSum Link count
198.51.100.1 198.51.100.1 5 0x80000008 0x8cf3 3
203.0.113.1 203.0.113.1 106 0x80000006 0x06a7 3
Summary Link States (Area 0.0.0.0)
Link ID ADV Router Age Seq# CkSum Route
100.100.0.0 198.51.100.1 665 0x80000002 0x929a 100.100.0.0/30
192.168.31.0 198.51.100.1 1538 0x80000001 0xd090 192.168.31.0/24
Router Link States (Area 0.0.0.2)
Link ID ADV Router Age Seq# CkSum Link count
100.100.0.2 100.100.0.2 1548 0x80000004 0x0971 2
198.51.100.1 198.51.100.1 1548 0x80000004 0x38bb 1
Net Link States (Area 0.0.0.2)
Link ID ADV Router Age Seq# CkSum
100.100.0.1 198.51.100.1 1548 0x80000001 0xf712
Summary Link States (Area 0.0.0.2)
Link ID ADV Router Age Seq# CkSum Route
10.0.0.0 198.51.100.1 1867 0x80000001 0xdf0d 10.0.0.0/30
192.168.11.0 198.51.100.1 1867 0x80000001 0xadc7 192.168.11.0/24
192.168.21.0 198.51.100.1 1867 0x80000001 0xda9a 192.168.21.0/24
ASBR-Summary Link States (Area 0.0.0.2)
Link ID ADV Router Age Seq# CkSum
203.0.113.1 198.51.100.1 75 0x80000002 0x2192
AS External Link States
Link ID ADV Router Age Seq# CkSum Route
0.0.0.0 203.0.113.1 46 0x80000003 0x9ef2 E2 0.0.0.0/0 [0x0]
Наиболее полная команда, отражающая состояние обо всей базе данных OSPF c информацией о соседях, анонсируемых ими сетями, а также о зонах OSPF.