Как настроить доступ к одному IP-адресу в локальной сети через два VPN-туннеля в схеме site-to-site?
Настроить доступ к одному IP-адресу в локальной сети через два VPN-туннеля (site-to-site) можно несколькими способами, в зависимости от того, какой эффект вы хотите получить:
- Резервирование (Failover) – Один VPN используется как основной, а второй как резервный, если первый выходит из строя.
- Балансировка нагрузки (Load Balancing) – Трафик распределяется между двумя туннелями.
- Маршрутизация (Policy-Based Routing) – Определенный трафик идет через один туннель, другой – через второй.
Настройка резервирования (Failover)
В этом сценарии маршруты на VPN-роутерах (или серверах) настраиваются с разными приоритетами.
Шаги:
Настроить оба VPN-туннеля (например, используя IPsec или OpenVPN).
Добавить статические маршруты на клиентской стороне:
- Основной маршрут с меньшим
metric
(например,10
). - Резервный маршрут с большим
metric
(например,20
).
- Основной маршрут с меньшим
Настроить проверку доступности (
ping-check
илиkeepalive
):- Если основной VPN падает, система переключится на резервный маршрут.
Настройка балансировки нагрузки (Load Balancing)
Используется, если нужно распределять трафик по двум VPN.
Шаги:
Настроить два VPN-туннеля.
Настроить два равнозначных маршрута с
nexthop
:Использование ECMP (Equal Cost Multipath) в Linux или балансировки в Mikrotik/PfSense/OpenWRT.
Маршрутизация (Policy-Based Routing)
Если нужно отправлять трафик от определенных пользователей через разные туннели.
Шаги:
Создать таблицы маршрутизации:
Добавить маршруты для каждой таблицы:
Создать правила маршрутизации на основе источника:
Это отправит трафик от 192.168.1.50
через tun0
, а от 192.168.1.51
через tun1
.
Выбор подходящего варианта
- Если нужен отказоустойчивый доступ → Failover.
- Если нужно использовать оба туннеля одновременно → Load Balancing.
- Если надо разделить потоки данных → Policy-Based Routing.
Если требуется, чтобы пакеты приходили через разные VPN-туннели, но с одного IP-адреса, можно использовать NAT (Source NAT, SNAT). Это пригодится, если у удаленного узла жестко задан один IP-адрес источника или если необходимо эмулировать работу через один IP-адрес, но используя два туннеля.
Схема работы
- Два VPN-туннеля (tun0 и tun1) ведут к удаленной сети.
- Трафик отправляется через разные туннели (балансировка или маршрутизация).
- Исходный IP (внутренний) преобразуется в один внешний IP-адрес перед отправкой.
- Ответные пакеты распределяются обратно по соответствующим туннелям.
Настройка NAT через iptables
1. Настройка NAT для обоих туннелей
Предположим, что ваш сервер имеет локальный IP 192.168.1.100
, а туннели tun0
и tun1
ведут к разным VPN-серверам.
Здесь:
10.10.10.2
— IP-адрес, который будет виден на удаленной стороне.- Все пакеты, выходящие через
tun0
иtun1
, будут иметь этот IP.
2. Балансировка исходящего трафика
Добавляем маршруты:
Теперь пакеты будут поочередно отправляться через оба туннеля.
Как это работает
- Входящий трафик на
192.168.1.100
маршрутизируется черезtun0
иtun1
. - Перед отправкой пакетов им подменяется исходный IP на
10.10.10.2
. - На удаленной стороне получатель всегда видит, что трафик идет от одного IP-адреса (
10.10.10.2
). - Ответные пакеты автоматически идут по тому туннелю, по которому пришли.
Дополнительные улучшения
Маршрутизация на основе политики (Policy-Based Routing)
Можно принудительно разделить трафик:
Это заставит конкретные клиенты (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.
Заключение
В приведенном решении используются следующие ключевые технологии:
Комментарии
Отправить комментарий