К основному контенту

Как настроить доступ к одному IP-адресу в локальной сети через два VPN-туннеля в схеме site-to-site?

Настроить доступ к одному IP-адресу в локальной сети через два VPN-туннеля (site-to-site) можно несколькими способами, в зависимости от того, какой эффект вы хотите получить:

  1. Резервирование (Failover) – Один VPN используется как основной, а второй как резервный, если первый выходит из строя.
  2. Балансировка нагрузки (Load Balancing) – Трафик распределяется между двумя туннелями.
  3. Маршрутизация (Policy-Based Routing) – Определенный трафик идет через один туннель, другой – через второй.

Настройка резервирования (Failover)

В этом сценарии маршруты на VPN-роутерах (или серверах) настраиваются с разными приоритетами.

Шаги:

  1. Настроить оба VPN-туннеля (например, используя IPsec или OpenVPN).

  2. Добавить статические маршруты на клиентской стороне:

    • Основной маршрут с меньшим metric (например, 10).
    • Резервный маршрут с большим metric (например, 20).

    ip route add 192.168.1.100 via 10.10.10.1 dev tun0 metric 10 ip route add 192.168.1.100 via 10.10.20.1 dev tun1 metric 20
  3. Настроить проверку доступности (ping-check или keepalive):

    • Если основной VPN падает, система переключится на резервный маршрут.

Настройка балансировки нагрузки (Load Balancing)

Используется, если нужно распределять трафик по двум VPN.

Шаги:

  1. Настроить два VPN-туннеля.

  2. Настроить два равнозначных маршрута с nexthop:

    ip route add 192.168.1.100 scope global \ nexthop via 10.10.10.1 dev tun0 weight 1 \ nexthop via 10.10.20.1 dev tun1 weight 1
  3. Использование ECMP (Equal Cost Multipath) в Linux или балансировки в Mikrotik/PfSense/OpenWRT.


Маршрутизация (Policy-Based Routing)

Если нужно отправлять трафик от определенных пользователей через разные туннели.

Шаги:

  1. Создать таблицы маршрутизации:

    echo "200 vpn1" >> /etc/iproute2/rt_tables echo "201 vpn2" >> /etc/iproute2/rt_tables
  2. Добавить маршруты для каждой таблицы:

    ip route add 192.168.1.100 via 10.10.10.1 dev tun0 table vpn1 ip route add 192.168.1.100 via 10.10.20.1 dev tun1 table vpn2
  3. Создать правила маршрутизации на основе источника:

    ip rule add from 192.168.1.50 lookup vpn1 ip rule add from 192.168.1.51 lookup vpn2

Это отправит трафик от 192.168.1.50 через tun0, а от 192.168.1.51 через tun1.


Выбор подходящего варианта

  • Если нужен отказоустойчивый доступFailover.
  • Если нужно использовать оба туннеля одновременноLoad Balancing.
  • Если надо разделить потоки данныхPolicy-Based Routing.

Если требуется, чтобы пакеты приходили через разные VPN-туннели, но с одного IP-адреса, можно использовать NAT (Source NAT, SNAT). Это пригодится, если у удаленного узла жестко задан один IP-адрес источника или если необходимо эмулировать работу через один IP-адрес, но используя два туннеля.


Схема работы

  1. Два VPN-туннеля (tun0 и tun1) ведут к удаленной сети.
  2. Трафик отправляется через разные туннели (балансировка или маршрутизация).
  3. Исходный IP (внутренний) преобразуется в один внешний IP-адрес перед отправкой.
  4. Ответные пакеты распределяются обратно по соответствующим туннелям.

Настройка NAT через iptables

1. Настройка NAT для обоих туннелей

Предположим, что ваш сервер имеет локальный IP 192.168.1.100, а туннели tun0 и tun1 ведут к разным VPN-серверам.

# SNAT: Подмена исходного IP перед отправкой в VPN iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source 10.10.10.2 iptables -t nat -A POSTROUTING -o tun1 -j SNAT --to-source 10.10.10.2

Здесь:

  • 10.10.10.2 — IP-адрес, который будет виден на удаленной стороне.
  • Все пакеты, выходящие через tun0 и tun1, будут иметь этот IP.

2. Балансировка исходящего трафика

Добавляем маршруты:

ip route add 192.168.1.100 scope global \ nexthop via 10.10.10.1 dev tun0 weight 1 \ nexthop via 10.10.20.1 dev tun1 weight 1

Теперь пакеты будут поочередно отправляться через оба туннеля.


Как это работает

  1. Входящий трафик на 192.168.1.100 маршрутизируется через tun0 и tun1.
  2. Перед отправкой пакетов им подменяется исходный IP на 10.10.10.2.
  3. На удаленной стороне получатель всегда видит, что трафик идет от одного IP-адреса (10.10.10.2).
  4. Ответные пакеты автоматически идут по тому туннелю, по которому пришли.

Дополнительные улучшения

Маршрутизация на основе политики (Policy-Based Routing)

Можно принудительно разделить трафик:

# Таблица маршрутов для tun0 echo "200 tun0_table" >> /etc/iproute2/rt_tables ip rule add from 192.168.1.50 table tun0_table ip route add default via 10.10.10.1 dev tun0 table tun0_table # Таблица маршрутов для tun1 echo "201 tun1_table" >> /etc/iproute2/rt_tables ip rule add from 192.168.1.51 table tun1_table ip route add default via 10.10.20.1 dev tun1 table tun1_table

Это заставит конкретные клиенты (192.168.1.50 и 192.168.1.51) использовать разные туннели.


Заключение

  • SNAT на iptables позволяет всем пакетам выглядеть так, будто они исходят от одного IP.
  • Балансировка маршрутов распределяет нагрузку по двум туннелям.
  • Policy-Based Routing может направлять определенные IP-адреса через разные туннели.

Этот вариант полезен, если у вас есть ограничение на исходящий IP или нужно эмулировать один IP при использовании нескольких туннелей.


Технологии, используемые в настройке доступа через два VPN-туннеля с NAT

Ниже подробно рассмотрим каждую технологию, упомянутую ранее, включая ее основные принципы работы, фундаментальные особенности и применение.


1. VPN (Virtual Private Network)

Принцип работы

VPN (виртуальная частная сеть) создает защищенное соединение между двумя сетями через публичный интернет, обеспечивая шифрование данных и приватность.

Существует несколько типов VPN, но в контексте site-to-site VPN наиболее популярны:

  • IPsec VPN – наиболее безопасный вариант, использующий протоколы IPsec для шифрования и аутентификации пакетов.
  • OpenVPN – гибкий VPN, работающий поверх TLS/SSL.
  • WireGuard – более современный, быстрый и легкий VPN-протокол.

Фундаментальные особенности

Туннелирование – VPN инкапсулирует пакеты IP внутри другого протокола (например, UDP/TCP для OpenVPN, ESP для IPsec).
Шифрование – предотвращает перехват трафика.
Аутентификация – проверяет подлинность соединяющихся узлов.
Маршрутизация – позволяет передавать пакеты между разными сетями через туннель.

Применение

Используется для соединения двух офисов, серверов или для доступа удаленных клиентов к корпоративной сети.


2. NAT (Network Address Translation)

Принцип работы

NAT (трансляция сетевых адресов) изменяет IP-адреса в заголовках пакетов, проходящих через маршрутизатор. Это позволяет:

  • Подменять IP-адрес отправителя (SNAT)
  • Подменять IP-адрес получателя (DNAT)
  • Позволять множеству локальных устройств выходить в интернет через один IP (Masquerading)

В контексте нашего решения применяется SNAT (Source NAT), заменяющий исходный IP перед отправкой пакета.

Фундаментальные особенности

Позволяет скрывать реальный IP-адрес устройства
Маскирует весь трафик за одним IP
Контролирует входящие и исходящие пакеты

Применение

Используется, когда необходимо, чтобы трафик выглядел исходящим с одного IP при передаче через разные VPN-туннели.


3. Маршрутизация (Routing)

Принцип работы

Маршрутизация – это процесс определения пути передачи пакетов через сеть. В Linux маршруты можно добавлять вручную командой ip route add, а также управлять таблицами маршрутизации через ip rule.

Фундаментальные особенности

Определяет путь передачи данных между узлами
Может работать в статическом и динамическом режиме
Позволяет распределять нагрузку между несколькими маршрутами

Применение

В нашем решении используется ECMP (Equal Cost Multipath) для балансировки нагрузки между двумя туннелями.


4. Policy-Based Routing (PBR)

Принцип работы

В отличие от традиционной маршрутизации, где путь выбирается на основе IP-адреса назначения, PBR позволяет назначать маршруты по дополнительным критериям (например, по IP-адресу источника).

Фундаментальные особенности

Гибкость – можно задать маршруты для разных пользователей, приложений или трафика.
Приоритетность – можно определять, какие пакеты пойдут через определенный туннель.
Работает через ip rule и отдельные таблицы маршрутизации.

Применение

Используется для принудительного направления трафика через определенный VPN-туннель.


5. iptables

Принцип работы

iptables – это встроенный в Linux фаервол, который управляет правилами обработки пакетов на основе цепочек и таблиц.

В нашем случае iptables используется для:

  • NAT (SNAT) – подменяет исходный IP при выходе через туннель.
  • Маршрутизации пакетов между VPN-туннелями.

Фундаментальные особенности

Позволяет фильтровать, изменять и маршрутизировать трафик
Используется для NAT и балансировки нагрузки
Может управлять состоянием соединений (stateful firewall)

Применение

iptables играет ключевую роль в настройке NAT и управления VPN-трафиком.


6. ECMP (Equal-Cost Multi-Path Routing)

Принцип работы

ECMP – это механизм маршрутизации, позволяющий использовать несколько маршрутов с одинаковой стоимостью (метрикой) для одного назначения.

Фундаментальные особенности

Позволяет равномерно распределять трафик между туннелями
Увеличивает пропускную способность, используя сразу два канала
Требует поддержки на уровне ядра Linux (sysctl settings)

Применение

В нашем решении ECMP используется для балансировки нагрузки между двумя VPN.


Заключение

В приведенном решении используются следующие ключевые технологии:


Если требуется больше деталей по конкретной технологии, могу углубить объяснение или привести практические примеры настройки. 🚀


Комментарии

Популярные сообщения из этого блога

Настройка и подключение IPSec в Windows

Настройка IPSec на Windows включает в себя создание правил безопасности и фильтров для защиты сетевого трафика. Ниже — пошаговое руководство. Включение службы IPSec Перед настройкой убедитесь, что служба IPSec Policy Agent запущена: Нажмите Win + R , введите services.msc и нажмите Enter . Найдите IPsec Policy Agent . Если она не работает, нажмите ПКМ → Свойства . Установите Тип запуска: Автоматически , затем нажмите Запустить . Настройка политики IPSec через «Локальную политику безопасности» Нажмите Win + R , введите secpol.msc , нажмите Enter . Перейдите в Политики IP-безопасности в локальном компьютере . В правом окне нажмите Создать политику IP-безопасности → Далее . Укажите имя политики (например, "IPSec VPN"), снимите флажок Активировать правило по умолчанию , нажмите Далее . Нажмите Добавить , чтобы создать правило. Транспортный или туннельный режим : Если IPSec для защищенной локальной сети – выберите Транспортный режим . Если IPSec для VPN – выберите Туннельн...

Как найти и изменить репозитарии для CentOS 8

В CentOS 8 официальные репозитории (BaseOS, AppStream и Extras) управляются с помощью dnf и файлов конфигурации в /etc/yum.repos.d/ . Вот как их найти и изменить: 1. Просмотр текущих репозиториев dnf repolist Если нужно увидеть подробную информацию: dnf repolist all 2. Изменение репозиториев Файлы конфигурации репозиториев находятся в /etc/yum.repos.d/ . Например, основной репозиторий может быть в файле CentOS-AppStream.repo . Открыть его можно так: nano /etc/yum.repos.d/CentOS-AppStream.repo Внутри можно изменить: enabled=1 → включает репозиторий enabled=0 → отключает репозиторий baseurl= или mirrorlist= → задать новый источник пакетов 3. Замена недоступных репозиториев CentOS 8 достиг конца поддержки , и официальные зеркала больше не работают. Вместо них можно подключить Vault или AlmaLinux/Rocky Linux : Использование архивного репозитория CentOS Vault Создайте резервную копию старых .repo файлов: mkdir /root/repo-backup && mv /etc/yum.repos.d/*.repo /root/repo-backu...

Что такое Redfish API? Развертывание серверов через Redfish API: подробное руководство с примерами

Введение в Redfish API Redfish API — это стандартный интерфейс управления серверами, разработанный DMTF (Distributed Management Task Force). Он предоставляет RESTful API для взаимодействия с серверными системами, включая включение/выключение, мониторинг состояния и развертывание операционной системы. Этот API позволяет автоматизировать управление серверами без необходимости физического доступа или использования устаревших интерфейсов, таких как IPMI. Требования Прежде чем приступить к работе, необходимо подготовить следующее: Сервер с поддержкой Redfish (например, HPE iLO, Dell iDRAC, Lenovo XClarity, Cisco UCS и др.). Доступ к Redfish API через сеть. Учетные данные для аутентификации. Инструмент для работы с API (cURL, Postman, Python с библиотекой requests ). Подключение и аутентификация Для взаимодействия с Redfish API используется стандартный HTTP-запрос с аутентификацией по логину и паролю. Например, для проверки работоспособности интерфейса можно выполнить GET-запрос ...