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
Здесь будет рассматриваться route based VPN при котором на основании маршрутов в таблице маршрутизации SRX будет принимать решение об включении трафика в туннель. Эти маршруты могут быть получены автоматически (за счет протоколов динамической маршрутизации), но здесь будет показан самый простой ручной вариант, на основе статических маршрутов.
Split-horizon
Когда филиал соединен с центральным офисом, или, когда все серверы расположены в центре обработки данных, до которого организован site-to-site VPN, один из вопросов сетевой доступности является DNS сервер компании. В данном случае речь идет про ситуацию, когда одни и те же доменные сетевые имена для внутрисетевых клиентов и для внешних клиентов разрешаются по-разному. Этот процесс называется split-DNS
, когда домен компании обслуживают два DNS сервера:
- один для клиентов изнутри
- второй для клиентов снаружи.
Proxy DNS
Клиенты в филиале как правило получают сетевые настройки от DHCP сервера. В филиале SRX может выполнять роль DHCP сервера. В этом случае опция 6 DNS сервер
может содержать адрес как внутреннего DNS сервера компании, так и самого SRX. Для чего это может понадобиться? Если в VPN туннель вы направляете только трафик до внутренних серверов и сервисов, то логично, что запросы на внутренний сервер DNS отправлялись только для доменных имен внутренних ресурсов. Именно поэтому выдавать клиентам филиала адрес SRX как DNS сервера позволит регулировать на самом SRX на какой DNS сервер отправлять запрос. Это функция называется Proxy DNS
.
Интерфейс st0
При настройке 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 филиала
-
Создаем туннельный интерфейс
set interfaces st0 unit 0 description "IPsec VPN" set interfaces st0 unit 0 family inet address 10.3.0.10/32
-
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
-
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
-
Политики безопасности
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
-
Маршруты для трафика, направляемого в туннель
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
Traffic selector
Небольшой комментарий про межвендорную совместимость. Если в обоих офисах у вас используется 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
-
Интерфейс, на который принимать DNS запросы изнутри сети
set system services dns dns-proxy interface vlan.4
-
Домен для отправки на внутренний DNS сервер
set system services dns dns-proxy default-domain internal.example.org forwarders 10.1.0.2
-
Все остальные домены отправлять на внешний 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