В этой статье я поделюсь опытом соединение двух офисов VPN туннелем, последний раз это пригодилось для подключения облачных ресурсов к корпоративной сети.
В качестве платформы будут Cisco 3745, точнее их образы в эмуляторе GNS3. На представленной ниже схеме нас буду интересовать маршрутизаторы R1-OFFICE и R2-CLOUD, все остальное оборудование больше для антуража: компьютеры выполнять контрольную проверку после настройки, коммутаторы установлены дабы не поддержать традиционную топологию, а маршрутизатор ISP выполняет роль оборудования провайдера, на нем были произведены некоторые настройки, но они не понесут функциональной нагрузки.
Главное, что нужно помнить – в момент начала настройки должна быть видимость внешних интерфейсов маршрутизаторов, участвующих в установке соединения.
Задача объединить левую часть схемы (сеть 10.0.0.0/24) с правой частью (сеть 20.0.0.0/24). Маршрутизаторам присвоены первые адреса из подсетей, а компьютерам последние. Маршрутизатор R1-OFFICE подключается к внешнему миру через сеть 100.0.0.0/24, а его коллега R2-CLOUD через сеть 200.0.0.0/24, они получили вторые адреса из этих сетей, оборудования провайдера – первые адреса, они же и будут выступать шлюзами по молчанию.Приступим к настройки сети первого маршрутизатора, затем и VPN.
R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#hostname R1-OFFICE |
Настройка внешнего интерфейса:
R1-OFFICE(config)#interface fastEthernet 0/1 R1-OFFICE(config-if)#ip address 100.0.0.2 255.255.255.0 R1-OFFICE(config-if)#no shutdown R1-OFFICE(config-if)#ip nat outside R1-OFFICE(config-if)#exit |
Добавляем маршрут по умолчанию через сеть провайдера:
R1-OFFICE(config)#ip route 0.0.0.0 0.0.0.0 100.0.0.1 |
Настройка внутреннего интерфейса:
R1-OFFICE(config)#interface fastEthernet 0/0 R1-OFFICE(config-if)#ip address 10.0.0.1 255.255.255.0 R1-OFFICE(config-if)#no shutdown R1-OFFICE(config-if)#ip nat inside R1-OFFICE(config-if)#exit |
Мы указали настройки сетевого стека и функции для дальнейшего преобразования сетевых адресов, в зависимости от задач отдельно взятых интерфейсов.
Перейдем к настройке преобразования сетевых адресов (NAT):
это необходимо для предоставления доступа в интернет узлам локальной сети.
Формируем список доступа, создаем разрешающее правило (№10) для выхода узлов из локальной сети в интернет, далее применяем список к внешнему интерфейсу.
R1-OFFICE(config)#ip access-list extended LAN10 R1-OFFICE(config-ext-nacl)#9 deny ip 10.0.0.0 0.0.0.255 20.0.0.0 0.0.0.255 R1-OFFICE(config-ext-nacl)#10 permit ip 10.0.0.0 0.0.0.255 any R1-OFFICE(config-ext-nacl)#exit |
R1-OFFICE(config)#ip nat inside source list LAN10 interface fastEthernet 0/1 overload |
Обратите внимание на правило (№9) , оно намеренно запрещает взаимодействие нашей локальной сети с сетью, которая будет находиться с другой стороны VPN туннеля.
Правила в списках доступа выполняются в порядке возрастания, чем меньше номер правила, тем оно более приоритетное.
Переходим к настройке первой фазы, здесь мы укажем какой метод шифрование, хэширования, аутентификация, и группа DH войдут в новую политику, также можем изменить lifetime (default 86400 seconds):
R1-OFFICE(config)#crypto isakmp policy 10 R1-OFFICE(config-isakmp)#encryption aes R1-OFFICE(config-isakmp)#authentication pre-share R1-OFFICE(config-isakmp)#group 5 R1-OFFICE(config-isakmp)#hash sha R1-OFFICE(config-isakmp)#exit |
Ну и собственно сам Pre-shared key – связка фразы и адреса удаленного интерфейса:
R1-OFFICE(config)#crypto isakmp key netconfig_Pass address 200.0.0.2 |
У вас может быть несколько политик с разными параметрами и приоритетами для разных подключений, стоит помнить, что инициирующая сторона, в момент установки первой фазы, отправит все политики удаленному устройству, которое в свою очередь сравнит их со своими политиками в порядке приоритета.
Посмотреть какой набор параметров (политика) была согласована можно командой:
R1-OFFICE#sh crypto isakmp sa detail |
Переходим к настройке второй фазы:
На схеме второй фазы четко видны ее компоненты, которые в итоге соединятся в одну Crypto map и будут применены на внешний интерфейс маршрутизатора.
В следующем списке доступа (ACL) мы указываем какой трафик должен быть зашифрован:
R1-OFFICE(config)#ip access-list extended NETCONFIG-VPN R1-OFFICE(config-ext-nacl)#10 permit ip 10.0.0.0 0.0.0.255 20.0.0.0 0.0.0.255 R1-OFFICE(config-ext-nacl)#exit |
Далее сформируем набор преобразований (transform-set):
R1-OFFICE(config)#crypto ipsec transform-set NETCONFIG-SET esp-aes esp-sha-hmac R1-OFFICE(cfg-crypto-trans)#exit |
наборы преобразований могут содержать множество комбинаций протоколов защиты и шифрования для безопасности IPsec трафика. Подробно см. сдесь
Настройка peer не будет производиться отдельно – ее мы сразу включим в состав нашей карты (MAP1), вместе с уже готовыми параметрами преобразований и списками доступа.
R1-OFFICE(config)#crypto map MAP1 10 ipsec-isakmp % NOTE: This new crypto map will remain disabled until a peer and a valid access list have been configured. R1-OFFICE(config-crypto-map)#set peer 200.0.0.2 R1-OFFICE(config-crypto-map)#set transform-set NETCONFIG-SET R1-OFFICE(config-crypto-map)#match address NETCONFIG-VPN R1-OFFICE(config-crypto-map)#exit |
Обратите внимание на то, что адрес peer совпадает с адресом в строке настройки Pre-shared key.
И активируем карту на интерфейсе:
R1-OFFICE(config)#interface fastEthernet 0/1 R1-OFFICE(config-if)#crypto map MAP1 R1-OFFICE(config-if)#exit *Mar 1 00:21:47.215: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON |
С настройкой первого маршрутизатора закончили, сохраняем конфигурацию и переходим ко второму маршрутизатору.
R1-OFFICE(config)#do wr Building configuration... [OK] |
Второй маршрутизатор настраивается зеркальным образом – в списках доступа и на интерфейсах мы указываем параметры согласно схемы, также меняем адрес подключения в параметрах Pre-shared key и удаленного peer.
R2#conf t Enter configuration commands, one per line. End with CNTL/Z. R2(config)#hostname R2-CLOUD |
R2-CLOUD(config)#interface fastEthernet 1/0 R2-CLOUD(config-if)#ip address 200.0.0.2 255.255.255.0 R2-CLOUD(config-if)#no shutdown R2-CLOUD(config-if)#ip nat outside R2-CLOUD(config-if)#exit |
R2-CLOUD(config)#ip route 0.0.0.0 0.0.0.0 200.0.0.1 |
R2-CLOUD(config)#interface fastEthernet 0/0 R2-CLOUD(config-if)#ip address 20.0.0.1 255.255.255.0 R2-CLOUD(config-if)#ip nat inside R2-CLOUD(config-if)#no shutdown R2-CLOUD(config-if)#exit |
R2-CLOUD(config)#ip access-list extended LAN20 R2-CLOUD(config-ext-nacl)#9 deny ip 20.0.0.0 0.0.0.255 10.0.0.0 0.0.0.255 R2-CLOUD(config-ext-nacl)#10 permit ip 20.0.0.0 0.0.0.255 any R2-CLOUD(config-ext-nacl)#exit |
R2-CLOUD(config)#ip nat inside source list LAN20 interface fastEthernet 1/0 overload |
R2-CLOUD(config)#crypto isakmp policy 10 R2-CLOUD(config-isakmp)#encryption aes R2-CLOUD(config-isakmp)#authentication pre-share R2-CLOUD(config-isakmp)#group 5 R2-CLOUD(config-isakmp)#hash sha R2-CLOUD(config-isakmp)#exit |
R2-CLOUD(config)#crypto isakmp key netconfig_Pass address 100.0.0.2 |
R2-CLOUD(config)#ip access-list extended NETCONFIG-VPN R2-CLOUD(config-ext-nacl)#permit ip 20.0.0.0 0.0.0.255 10.0.0.0 0.0.0.255 R2-CLOUD(config-ext-nacl)#exit |
R2-CLOUD(config)#crypto ipsec transform-set NETCONFIG-SET esp-aes esp-sha-hmac R2-CLOUD(cfg-crypto-trans)#exit |
R2-CLOUD(config)#crypto map MAP1 10 ipsec-isakmp % NOTE: This new crypto map will remain disabled until a peer and a valid access list have been configured. R2-CLOUD(config-crypto-map)#set peer 100.0.0.2 R2-CLOUD(config-crypto-map)#set transform-set NETCONFIG-SET R2-CLOUD(config-crypto-map)#match address NETCONFIG-VPN R2-CLOUD(config-crypto-map)#exit |
R2-CLOUD(config)#interface fastEthernet 1/0 R2-CLOUD(config-if)#crypto map MAP1 *Mar 1 00:10:32.587: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON R2-CLOUD(config-iа)#exit |
R2-CLOUD(config)#do wr Building configuration... [OK] |
Ну и естественно никаких маршрутов в удаленные подсети – маршрутизация выполняется на основании наших с вами стараний и криптокарт :).
После обращения узла с одной сети к узлу с удаленной мы можем лицезреть:
R1-OFFICE#show crypto isakmp sa dst src state conn-id slot status 200.0.0.2 100.0.0.2 QM_IDLE 1 0 ACTIVE |
Что говорит о хорошо проделанной работе!
Также рекомендую для ознакомления и праблшуттинга использовать команды:
Проверка первой фазы.
R1-OFFICE#show crypto isakmp sa R1-OFFICE#show crypto isakmp sa detail |
Проверка второй фазы.
R1-OFFICE#show crypto ipsec sa R1-OFFICE#show crypto ipsec sa detail R1-OFFICE#show crypto ipsec transform-set |
Просмотр Crypto map.
R1-OFFICE#show crypto map |
Просмотр сессии.
R1-OFFICE#show crypto session R1-OFFICE#show crypto session detail |
И команды debug.
R1-OFFICE#debug crypto isakmp R1-OFFICE#debug crypto ipsec R1-OFFICE#debug crypto condition |
Успехов и волшебного настроения!