Juniper Srx: Site-To-Site Ipsec Vpn С Использованием Предварительного Общего Ключа

В продолжение Темы Настройки Juniper SRX Предлагаю вашему вниманию пошаговую инструкцию по настройке Site-to-Site IPSec VPN с использованием pre-shared-key. Обратите внимание, что оба SRX должны иметь статический внешний IP-адрес.

Начнем со схематической диаграммы нашей сети:

Juniper SRX: Site-to-Site IPSec VPN с использованием предварительного общего ключа

Из этой схемы видно, что оба устройства подключены к провайдеру через интерфейсы ge-0/0/0 и каждый SRX имеет свою собственную частную сеть (подключенную к ge-0/0/1).

Наша цель — построить туннель IPSec и разрешить трафик между сетями 172.16.1.0/24 и 172.16.2.0/24. Предполагается, что внешний интерфейс получает адрес через DHCP для упрощения настройки.

Прошу всех интересующихся под катом.

Предлагаю вам сначала взглянуть на конфигурацию одного из роутеров ПЕРЕД настройкой IPSec, чтобы вам было с чего отталкиваться: root@gw-jvsrx-a# показать

  
  
  
  
  
  
  
  
  
   

version 12.1X46-D10.2; system { host-name gw-jvsrx-a; root-authentication { encrypted-password "$1$XXX"; ## SECRET-DATA } services { ssh { protocol-version v2; client-alive-count-max 5; client-alive-interval 120; connection-limit 5; rate-limit 2; } dhcp { default-lease-time 21600; pool 172.16.1.0/27 { address-range low 172.16.1.2 high 172.16.1.30; router { 172.16.1.1; } propagate-settings ge-0/0/1.0; } } } ntp { server 0.pool.ntp.org prefer; server 1.pool.ntp.org; server 2.pool.ntp.org; server 3.pool.ntp.org; } } interfaces { ge-0/0/0 { unit 0 { family inet { dhcp; } } } ge-0/0/1 { unit 0 { family inet { address 172.16.1.1/27; } } } lo0 { unit 0 { family inet { address 172.31.255.1/32; } } } } security { nat { source { rule-set trust-to-untrust { from zone trust; to zone untrust; rule source-nat { match { source-address 0.0.0.0/0; } then { source-nat { interface; } } } } } } policies { from-zone trust to-zone untrust { policy trust-to-untrust { match { source-address any; destination-address any; application any; } then { permit; } } } from-zone trust to-zone trust { policy trust-to-trust { match { source-address any; destination-address any; application any; } then { permit; } } } } zones { security-zone untrust { tcp-rst; interfaces { ge-0/0/0.0 { host-inbound-traffic { system-services { dhcp; ping; ssh; } } } } } security-zone trust { interfaces { ge-0/0/1.0 { host-inbound-traffic { system-services { all; } protocols { all; } } } lo0.0 { host-inbound-traffic { system-services { ping; } } } } } } }

Конфигурация второго устройства аналогична, за исключением настроек DHCP-сервера и интерфейса lo0. В данной ситуации мы имеем дело с обычным роутером.

Дополнительную информацию об IPSec (например) можно прочитать на сайте Википедия .

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



Туннельный интерфейс

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

set interfaces st0 unit 0 family inet address 172.16.0.1/30

Т.

к.

если мы собираемся строить туннель всего на два устройства, то сети /30 нам будет достаточно.



Первая фаза

Давайте настроим IKE для использования базового режима IKE:

set security ike proposal ike-proposal authentication-method pre-shared-keys set security ike proposal ike-proposal dh-group group14 set security ike proposal ike-proposal authentication-algorithm sha-256 set security ike proposal ike-proposal encryption-algorithm aes-128-cbc set security ike proposal ike-proposal lifetime-seconds 3600 set security ike policy ike-policy mode main set security ike policy ike-policy pre-shared-key ascii-text "YOUR_PRE_SHARED_KEY" set security ike policy ike-policy proposals ike-proposal set security ike gateway gw-jvsrx-b ike-policy ike-policy set security ike gateway gw-jvsrx-b address 20.20.20.20 set security ike gateway gw-jvsrx-b external-interface ge-0/0/0.0

Подробности: предварительные общие ключи метода аутентификации — включить использование предварительных общих ключей; dh-группа группа14 — необходимо для генерации общего закрытого ключа при обмене данными по незащищенному каналу (подробно описано здесь ), я использую 2048-битный модуль; алгоритм аутентификации sha-256 — для аутентификации будем использовать sha-256; алгоритм шифрования AES-128-cbc — на первом этапе мы зашифруем данные aes-128-cbc; время жизни-секунд 3600 — время жизни закрытого ключа (генерировалось автоматически при инициализации соединения) первой фазы; режим основной — основной режим ascii-текст с предварительным общим ключом — сам ключ (рекомендую сгенерировать его достаточно большого размера, например вот так openssl рандом -base64 32 ) адрес 20.20.20.20 — публичный адрес второго SRX внешний интерфейс ge-0/0/0.0 — интерфейс, через который будет проходить IPSec-трафик.



Второй этап

На этом этапе создается сам туннель IPSec.

set security ipsec proposal ipsec-proposal protocol esp set security ipsec proposal ipsec-proposal authentication-algorithm hmac-sha-256-128 set security ipsec proposal ipsec-proposal encryption-algorithm aes-128-cbc set security ipsec proposal ipsec-proposal lifetime-seconds 7200 set security ipsec policy ipsec-policy perfect-forward-secrecy keys group14 set security ipsec policy ipsec-policy proposals ipsec-proposal set security ipsec vpn gw-jvsrx-b bind-interface st0.0 set security ipsec vpn gw-jvsrx-b ike gateway gw-jvsrx-b set security ipsec vpn gw-jvsrx-b ike ipsec-policy ipsec-policy set security ipsec vpn gw-jvsrx-b establish-tunnels immediately

Подробности: протокол особенно — мы будем использовать ESP (Encapsulated Security Payload header) (подробно описано здесь ); алгоритм аутентификации hmac-sha-256-128 — алгоритм аутентификации IPSec; алгоритм шифрования AES-128-cbc — алгоритм шифрования; время жизни-секунд 7200 — время жизни закрытого ключа (генерировалось автоматически при инициализации соединения) второй фазы; Группа ключей Perfect Forward Secret 14 - аналогично dh-группе; интерфейс привязки st0.0 — виртуальный интерфейс для построения IPSec-туннеля; немедленно установить туннели - создайте туннель прямо сейчас.

Аналогичные настройки нужно применить и на втором роутере (заменив IP-адрес на st0.0 и шлюз ike).



Финишная черта

На этом настройка самого IPSec-туннеля закончена, но.

Серия SRX является еще и межсетевым экраном, тогда с этими параметрами туннель не поднимется - межсетевой экран будет отбрасывать все пакеты, пытающиеся установить туннель.

Поэтому внесем изменения в настройки брандмауэрной части:

set security zones security-zone untrust interfaces ge-0/0/0.0 host-inbound-traffic system-services ike set security zones security-zone trust interfaces st0.0 host-inbound-traffic system-services all set security zones security-zone trust interfaces st0.0 host-inbound-traffic protocols all

Первая команда разрешает трафик IKE на нашем внешнем интерфейсе (который обращен к провайдеру); второй и третий разрешают прохождение всего трафика внутри туннеля IPSec. Туннель теперь должен подняться, проверим это:

root@gw-jvsrx-a# run show security ike security-associations detail IKE peer 20.20.20.20, Index 2116322, Gateway Name: gw-jvsrx-b Role: Responder, State: UP Initiator cookie: 1fa7a8730c817511, Responder cookie: 2a3e1f8c554ddb85 Exchange type: Main, Authentication method: Pre-shared-keys Local: 10.10.10.10:500, Remote: 20.20.20.20:500 Lifetime: Expires in 2291 seconds Peer ike-id: 20.20.20.20 Xauth assigned IP: 0.0.0.0 Algorithms: Authentication : hmac-sha256-128 Encryption : aes128-cbc Pseudo random function: hmac-sha256 Diffie-Hellman group : DH-group-14 Traffic statistics: Input bytes : 1244 Output bytes : 948 Input packets: 6 Output packets: 4 Flags: IKE SA is created IPSec security associations: 1 created, 1 deleted Phase 2 negotiations in progress: 0 Negotiation type: Quick mode, Role: Responder, Message ID: 0 Local: 10.10.10.10:500, Remote: 20.20.20.20:500 Local identity: 10.10.10.10 Remote identity: 20.20.20.20 Flags: IKE SA is created root@gw-jvsrx-a# run show security ipsec security-associations detail ID: 131073 Virtual-system: root, VPN Name: gw-jvsrx-b Local Gateway: 10.10.10.10, Remote Gateway: 20.20.20.20 Local Identity: ipv4_subnet(any:0,[0.7]=0.0.0.0/0) Remote Identity: ipv4_subnet(any:0,[0.7]=0.0.0.0/0) Version: IKEv1 DF-bit: clear Bind-interface: st0.0 Port: 500, Nego#: 2, Fail#: 0, Def-Del#: 0 Flag: 0x600a29 Last Tunnel Down Reason: Delete payload received Direction: inbound, SPI: ea287d13, AUX-SPI: 0 , VPN Monitoring: - Hard lifetime: Expires in 5884 seconds Lifesize Remaining: Unlimited Soft lifetime: Expires in 5295 seconds Mode: Tunnel(0 0), Type: dynamic, State: installed Protocol: ESP, Authentication: hmac-sha256-128, Encryption: aes-cbc (128 bits) Anti-replay service: counter-based enabled, Replay window size: 64 Direction: outbound, SPI: 14a16181, AUX-SPI: 0 , VPN Monitoring: - Hard lifetime: Expires in 5884 seconds Lifesize Remaining: Unlimited Soft lifetime: Expires in 5295 seconds Mode: Tunnel(0 0), Type: dynamic, State: installed Protocol: ESP, Authentication: hmac-sha256-128, Encryption: aes-cbc (128 bits) Anti-replay service: counter-based enabled, Replay window size: 64

Вы также можете проверить это старым добрым способом:

root@gw-jvsrx-a# run ping 172.16.0.2 count 5 interface st0.0 PING 172.16.0.2 (172.16.0.2): 56 data bytes 64 bytes from 172.16.0.2: icmp_seq=0 ttl=64 time=14.274 ms 64 bytes from 172.16.0.2: icmp_seq=1 ttl=64 time=10.420 ms 64 bytes from 172.16.0.2: icmp_seq=2 ttl=64 time=10.448 ms 64 bytes from 172.16.0.2: icmp_seq=3 ttl=64 time=10.448 ms 64 bytes from 172.16.0.2: icmp_seq=4 ttl=64 time=10.439 ms --- 172.16.0.2 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 10.420/11.206/14.274/1.534 ms

Статистику использования туннеля можно просмотреть следующим образом:

root@gw-jvsrx-a# run show security ipsec statistics ESP Statistics: Encrypted bytes: 85052 Decrypted bytes: 41088 Encrypted packets: 553 Decrypted packets: 512 AH Statistics: Input bytes: 0 Output bytes: 0 Input packets: 0 Output packets: 0 Errors: AH authentication failures: 0, Replay errors: 0 ESP authentication failures: 0, ESP decryption failures: 0 Bad headers: 0, Bad trailers: 0

Но это не все! Ведь нам нужно прописывать маршруты в сеть «за другим роутером», а так как… мы ленивы и не любим лишней работы (верно?), то будем использовать OSPF:

set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 set protocols ospf area 0.0.0.0 interface st0.0

Как всегда, не забудьте выполнить коммит (и применить симметричные настройки на другом конце туннеля), иначе ничего не будет работать:

root@gw-jvsrx-a# commit check configuration check succeeds root@gw-jvsrx-a# commit commit complete

Теги: #Сетевые технологии #сетевое оборудование #Системное администрирование

Вместе с данным постом часто просматривают: