Juniper SRX IPsec Site-to-Site VPN и Split-DNS

В данной статье будет рассматриваться настройка VPN между офисами (site-to-site) и особенности, если трафик возникает на самом SRX на примере Split-DNS.

В Juniper SRX существуют два варианта организации site-to-site VPN: на основе политик (policy based) и на основе маршрутов (route based). Они отличаются способом, по которому трафик попадает в туннель. Здесь будет рассматриваться route based VPN при котором на основании маршрутов в таблице маршрутизации SRX будет принимать решение об включении трафика в туннель. Эти маршруты могут быть получены автоматически (за счет протоколов динамической маршрутизации), но здесь будет показан самый простой ручной вариант, на основе статических маршрутов.

Когда филиал соединен с центральным офисом, или, когда все серверы расположены в центре обработки данных, до которого организован site-to-site VPN, один из вопросов сетевой доступности является DNS сервер компании. В данном случае речь идет про ситуацию, когда одни и те же доменные сетевые имена для внутрисетевых клиентов и для внешних клиентов разрешаются по-разному. Этот процесс называется split-DNS, когда домен компании обслуживают два DNS сервера: один для клиентов изнутри, второй для клиентов снаружи.

Клиенты в филиале как правило получают сетевые настройки от DHCP сервера. В филиале SRX может выполнять роль DHCP сервера. В этом случае опция 6 — «DNS сервер» может содержать адрес как внутреннего DNS сервера компании, так и самого SRX. Для чего это может понадобиться? Если в VPN туннель вы направляете только трафик до внутренних серверов и сервисов, то логично, что запросы на внутренний сервер DNS отправлялись только для доменных имен внутренних ресурсов. Именно поэтому выдавать клиентам филиала адрес SRX как DNS сервера позволит регулировать на самом SRX на какой DNS сервер отправлять запрос. Это функция называется Proxy DNS.

При настройке site-to-site VPN создается специальный туннельный интерфейс. Этот интерфейс называется st0 и на него направляются маршруты для трафика, направляемого в туннель. Поскольку этот интерфейс является peer to peer, т.е. он подключен к единственному интерфейсу на другой стороне VPN туннеля, то не обязательно задавать ему IP адрес. Однако в этом случае перестанет работать трафик, генерируемый на самом SRX: DNS запросы на внутренние серверы компании в нашем случае. Дело в том, что, когда SRX выбирает куда отправить конкретных IP пакет, он просматривает таблицу маршрутизации. Из нее он узнает, что для внутреннего DNS сервера пакет нужно отправить в интерфейс st0. Далее SRX выбирает какой адрес источника указать. Поскольку на туннельном интерфейсе адрес не указан, выбирается адрес другого интерфейса и велика вероятность, что это будет интерфейс куда подключен интернет. Получив такой пакет DNS сервер отвечает на адрес источника: интернет адрес SRX филиала. Ответ DNS сервера пойдет не через туннель, а через Интернет, поскольку не подпадает не под один маршрут направляющий трафик в туннель. Получив ответ на Интернет интерфейсе, SRX филиала его отбросит, т.к. он ожидает получить ответ на туннельном интерфейсе, а не на интернет интерфейсе. Чтобы такой ситуации не произошло, нам нужно назначить какой-то адрес на st0 интерфейсе SRX филиала. Достаточно выбрать свободный адрес из внутренней сети филиала. Это позволит не только DNS запросы о внешних доменных имен направлять напрямую внешнему DNS серверу, минуя VPN туннель, но и предотвратит прекращение работы филиала, когда VPN туннель будет недоступен.

Начальные условия

Внутренняя сеть филиала: 10.3.0.0/16
Внутренняя сеть центрального офиса: 10.1.0.0/16
Туннельный адрес филиала: 10.3.0.10
Внешний интерфейс филиала: ge-0/0/0
Внешний адрес центрального офиса: 1.1.1.1
Аутентификация по ключу: abcd
Внутренний домен: internal.example.org
Адрес внутреннего DNS сервера: 10.1.0.2
Адрес внешнего DNS сервера: 8.8.8.8

Настройка site-to-site IPsec VPN филиала

  1. Создаем туннельный интерфейс
    set interfaces st0 unit 0 description "IPsec VPN"
    set interfaces st0 unit 0 family inet address 10.3.0.10/32
  2. IKE (Phase 1)
    set security ike policy ike-pol mode main
    set security ike policy ike-pol proposal-set standard
    set security ike policy ike-pol pre-shared-key ascii-text abcd
    set security ike gateway ike-gw ike-policy ike-pol
    set security ike gateway ike-gw address 1.1.1.1
    set security ike gateway ike-gw external-interface ge-0/0/0
    set security ike gateway ike-gw dead-peer-detection
  3. IPsec (Phase 2)
    set security ipsec policy ipsec-pol perfect-forward-secrecy keys group2
    set security ipsec policy ipsec-pol proposal-set standard
    set security ipsec vpn ipsec-vpn bind-interface st0.0
    set security ipsec vpn ipsec-vpn ike gateway ike-gw
    set security ipsec vpn ipsec-vpn ike ipsec-policy ipsec-pol
    set security ipsec vpn ipsec-vpn establish-tunnels immediately
  4. Политики безопасности
    set security zones security-zone VPN interfaces st0.0 host-inbound-traffic system-services any-service
    set security zones security-zone Internet interfaces ge-0/0/0 host-inbound-traffic system-services ike
    
    set security policies from-zone VPN to-zone LAN policy Allow_VPN_LAN match source-address any
    set security policies from-zone VPN to-zone LAN policy Allow_VPN_LAN match destination-address any
    set security policies from-zone VPN to-zone LAN policy Allow_VPN_LAN match application any
    set security policies from-zone VPN to-zone LAN policy Allow_VPN_LAN then permit
    
    set security policies from-zone LAN to-zone VPN policy Allow_LAN_VPN match source-address any
    set security policies from-zone LAN to-zone VPN policy Allow_LAN_VPN match destination-address any
    set security policies from-zone LAN to-zone VPN policy Allow_LAN_VPN match application any
    set security policies from-zone LAN to-zone VPN policy Allow_LAN_VPN then permit
  5. Маршруты для трафика, направляемого в туннель
    set routing-options static route 10.1.0.0/16 next-hop st0.0

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

  • Установка максимального TCP сегмента
    set security flow tcp-mss ipsec-vpn mss 1350
  • Установка Don’t Fragment бита на зашифрованном пакете, если он был установлен в оригинальном пакете. Это приведет к тому, что когда зашифрованный IP пакет будет больше MTU туннельного интерфейса, то он отбрасывается, а источнику отправляется ICMP сообщение «fragmentation needed and DF set».
    set security ipsec vpn ipsec-vpn df-bit copy
  • Уменьшение MTU туннельного интерфейса
    set interfaces st0 unit 0 family inet mtu 1400

Можно включить логирование событий на время настройки

set security ike traceoptions file kmd
set security ike traceoptions file size 1024768
set security ike traceoptions file files 10
set security ike traceoptions flag all

Посмотреть файл лога можно командой

show log kmd

Посмотреть статус туннеля можно командами

show security ike security-associations
show security ipsec security-associations

Небольшой комментарий про межвендорную совместимость. Если в обоих офисах у вас используется Juniper SRX, то для настройки VPN в центральном офисе потребуется только поменять адреса в конфигурации на соответствующие центральному офису. В случае использования оборудования Cisco потребуется дополнительная настройка SRX traffic selectors. Traffic selector (Proxy ID) позволяет вручную указать какие сети разрешать для передачи внутри туннеля. По умолчанию никаких ограничений туннельный трафик со стороны SRX не накладывается и все что нужно для туннелирования — статический маршрут на туннельный интерфейс. Cisco ASA требует настроенного Proxy ID, без этого туннель между SRX и ASA не поднимется.

Для настройки Traffic Selector на SRX

set security ipsec vpn ipsec-vpn traffic-selector ipsec-vpn-selector local-ip 10.3.0.0/16
set security ipsec vpn ipsec-vpn traffic-selector ipsec-vpn-selector remote-ip 10.1.0.0/16

Настройка Proxy DNS

  1. Интерфейс, на который принимать DNS запросы изнутри сети
    set system services dns dns-proxy interface vlan.4
  2. Домен для отправки на внутренний DNS сервер
    set system services dns dns-proxy default-domain internal.example.org forwarders 10.1.0.2
  3. Все остальные домены отправлять на внешний DNS сервер
    set system services dns dns-proxy default-domain * forwarders 8.8.8.8

Можно добавить любую DNS запись

set system services dns dns-proxy cache vk.com inet 127.0.0.1

Посмотреть закэшированные запросы можно

show system services dns-proxy cache

Источник 1
Источник 2
Источник 3
Источник 4
Источник 5
Источник 6
Источник 7
Источник 8

Реклама

Добавить комментарий

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s