Другое

Настройка защищённого туннеля Ubuntu-Cisco: полное руководство

Подробное руководство по созданию защищённых VPN-туннелей между Ubuntu и Cisco маршрутизаторами с использованием IPsec и StrongSwan. Узнайте о настройке отказоустойчивых соединений с двумя ISP.

Как создать защищённый туннель между Ubuntu и Cisco?

У меня есть виртуальная машина в облаке и маршрутизатор Cisco в серверной комнате. Какие технологии и инструменты можно использовать для создания двух защищённых туннелей с Ubuntu на Cisco? Также интересует, почему может потребоваться два туннеля к двум разным устройствам Cisco, подключённым к разным интернет‑провайдерам.

Для создания защищённого туннеля между Ubuntu и Cisco устройствами можно использовать различные технологии, включая IPsec с StrongSwan на Ubuntu и соответствующую конфигурацию на маршрутизаторах Cisco. При наличии двух туннелей к разным Cisco устройствам, подключённым к разным интернет‑провайдерам, достигается отказоустойчивость и повышенная надёжность соединения.

Содержание

Технологии для создания VPN‑туннелей

Для создания защищённого туннеля между Ubuntu и Cisco маршрутизаторами доступны несколько технологий:

IPsec (Internet Protocol Security) – наиболее распространённый стандарт для создания защищённых туннелей. На Ubuntu можно использовать:

  • StrongSwan – мощный инструмент для IPsec VPN с поддержкой IKEv2
  • Network Manager – для простого графического управления VPN‑соединениями
  • vpnc – классический клиент для Cisco VPN3000 concentrator

Типы туннелей:

  • Site-to-Site (сайт‑к‑сайту) – постоянное соединение между двумя сетями
  • Remote Access – для доступа отдельных пользователей в корпоративную сеть

Важно: Рекомендуется использовать IKEv2 с шифрованием AES‑256 для обеспечения максимальной безопасности современных VPN‑соединений [1].


Настройка Ubuntu как VPN‑клиента

Установка необходимых компонентов

bash
sudo apt update
sudo apt install strongswan strongswan-pki network-manager-strongswan

Конфигурация через Network Manager

  1. Откройте Network Manager и выберите «VPN‑соединения → Настроить VPN → Добавить»
  2. Выберите тип подключения «IPsec/IKEv2 (strongSwan)»
  3. Заполните параметры:
    • Имя соединения: Cisco‑VPN
    • Сервер: внешний IP‑адрес Cisco маршрутизатора
    • Идентификатор пользователя: ваш логин
    • Пароль: ваш пароль

Ручная конфигурация через StrongSwan

Создайте файл конфигурации /etc/ipsec.conf:

config setup
    charondebug="ike 1, cfg 0"

conn cisco-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=@ubuntu-client
    leftauth=eap-mschapv2
    right=%any
    rightid=@cisco-gateway
    rightauth=eap-mschapv2
    rightsourceip=10.10.20.0/24
    ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384!
    esp=chacha20poly1305-sha512,aes256gcm16-sha384!

Конфигурация Cisco маршрутизаторов

Базовая настройка IPsec на Cisco

cisco
crypto isakmp policy 10
 encr aes 256
 hash sha
 authentication pre-share
 group 14
 lifetime 86400
crypto isakmp key cisco-key address 203.0.113.5

Настройка трансформации IPsec

cisco
crypto ipsec transform-set ESP-AES256-SHA256 esp-aes 256 esp-sha256-hmac
 mode tunnel
crypto map CRYPTO-MAP 10 ipsec-isakmp
 set peer 203.0.113.5
 set transform-set ESP-AES256-SHA256
 match address 100

Настройка ACL для трафика

cisco
access-list 100 permit ip 192.168.1.0 0.0.0.255 10.10.20.0 0.0.0.255

На Cisco устройствах можно настроить HSRP (Hot Standby Router Protocol) для обеспечения отказоустойчивости VPN‑туннелей. При этом активный и резервный маршрутизаторы будут использовать один виртуальный IP‑адрес [2].


Двойные туннели и отказоустойчивость

Архитектура с двумя туннелями

Ubuntu Cloud
    │
    ├── Туннель 1 ── Cisco Router 1 (ISP A)
    │
    └── Туннель 2 ── Cisco Router 2 (ISP B)

Настройка политики маршрутизации

Для распределения трафика между двумя туннелями можно использовать:

  1. Policy‑Based Routing (PBR) на Cisco устройствах
  2. Multipath Routing на Ubuntu
  3. BFD (Bidirectional Forwarding Detection) для быстрого обнаружения сбоев

Конфигурация Failover

bash
# На Ubuntu настройка маршрутов с разными метриками
ip route add 10.10.20.0/24 via 203.0.113.1 dev eth0 metric 100
ip route add 10.10.20.0/24 via 198.51.100.1 dev eth1 metric 200

Система будет автоматически использовать маршрут с меньшей метрикой. При сбое основного соединения трафик будет перенаправлен через резервный туннель [3].


Преимущества использования двух интернет‑провайдеров

1. Отказоустойчивость

  • Если основной интернет‑провайдер отключается, связь сохраняется через резервного провайдера
  • Время переключения составляет доли секунды при использовании BFD

2. Повышение производительности

  • Распределение нагрузки между двумя каналами
  • Снижение задержек за счёт выбора оптимального маршрута

3. Безопасность

  • Разные провайдеры означают разные физические линии
  • Снижение риска одновременного сбоя обоих каналов

4. Соответствие требованиям

  • Многие корпоративные стандарты требуют двойного подключения
  • Обеспечение SLA (Service Level Agreement) с гарантированной доступностью

Компании, использующие IPsec Stateful Failover, получают 100 % избыточность для IPSec VPN‑трафика без необходимости перенастройки удалённых пиров [4].


Практическая реализация

Пошаговый план настройки

  1. Подготовка инфраструктуры:

    • Убедитесь, что оба Cisco маршрутизатора имеют публичные IP‑адреса
    • Настройте фаерволы для прохождения трафика UDP/500 и UDP/4500
  2. Установка и настройка Ubuntu:

    bash
    sudo apt install strongswan
    sudo systemctl enable --now strongswan
    
  3. Создание конфигурации туннелей:

    • /etc/ipsec.conf – основные параметры
    • /etc/ipsec.secrets – ключи аутентификации
  4. Тестирование:

    bash
    sudo ipsec up cisco-vpn1
    sudo ipsec up cisco-vpn2
    ping 10.10.20.1
    

Мониторинг и отладка

bash
# Просмотр статуса туннелей
sudo ipsec statusall

# Просмотр логов
sudo tail -f /var/log/syslog | grep charon

# Проверка маршрутов
ip route show

Автоматизация переключения

Для автоматического переключения при сбое можно использовать скрипты с мониторингом состояния:

bash
#!/bin/bash
# Проверка доступности основного туннеля
if ! ping -c 3 10.10.20.1 > /dev/null 2>&1; then
    echo "Primary tunnel down, switching to backup"
    sudo ipsec down cisco-vpn1
    sudo ipsec up cisco-vpn2
fi

Источники

  1. Ubuntu Community Help Wiki – VPNClient
  2. Cisco IPSec Stateful Failover Feature Module
  3. VPN Failover with HSRP High Availability
  4. Cisco VPN Availability Configuration Guide
  5. Configure Site-to-Site VPN Tunnel with ASA and Strongswan

Заключение

  1. Для создания защищённого туннеля между Ubuntu и Cisco рекомендуется использовать IPsec с IKEv2 и шифрованием AES‑256, что обеспечивает высокую безопасность и совместимость.

  2. При настройке двух туннелей к разным Cisco устройствам достигается отказоустойчивость и распределение нагрузки, что критически важно для бизнес‑критических приложений.

  3. Использование двух интернет‑провайдеров значительно повышает надёжность соединения, так как снижает риск одновременного сбоя обоих каналов связи.

  4. Для автоматического переключения между туннелями следует настроить мониторинг состояния и скрипты failover, что позволит минимизировать время простоя при сбоях.

  5. Регулярное тестирование и мониторинг VPN‑соединений необходимы для обеспечения стабильной работы и быстрого обнаружения потенциальных проблем в инфраструктуре.

Авторы
Проверено модерацией
Модерация