Два параллельных туннеля OpenVPN сайт-сайт: невозможно получить доступ ко всем интерфейсам

358
arcus_mannen

Настройка

У меня есть следующая топология:

 Router 172.25.214.1 | | | SiteB 172.25.214.0/24 | | | LAN: 172.25.214.3 OpenVPN server+client B TUN0: 172.25.215.1 TUN1: 10.1.2.2 | | | | | | VpnSiteB VpnSiteA 172.25.215.0/24 10.1.2.0/24 | | | | | | TUN1: 172.25.215.2 TUN0: 10.1.2.1  OpenVPN server+client A LAN: 10.1.1.3 | | | SiteA 10.1.1.0/24 | | | Router 10.1.1.1 

На каждом сайте сервер OpenVPN + клиент - это Raspberry Pi, на котором запущен один экземпляр сервера OpenVPN и один экземпляр клиента OpenVPN.

Таблица маршрутизации ядра на хосте OpenVPN SiteA:

Destination Gateway Genmask Flags Metric Ref Use Iface default 10.1.1.1 0.0.0.0 UG 0 0 0 eth0 10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.1.2.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0 172.25.214.0 172.25.215.1 255.255.255.0 UG 20 0 0 tun1 172.25.214.0 10.1.2.2 255.255.255.0 UG 30 0 0 tun0 172.25.215.0 0.0.0.0 255.255.255.0 U 0 0 0 tun1 

и что хоста OpenVPN на SiteB:

Destination Gateway Genmask Flags Metric Ref Use Iface default 172.25.214.1 0.0.0.0 UG 0 0 0 eth0 10.1.1.0 10.1.2.1 255.255.255.0 UG 20 0 0 tun1 10.1.1.0 172.25.215.2 255.255.255.0 UG 30 0 0 tun0 10.1.2.0 0.0.0.0 255.255.255.0 U 0 0 0 tun1 172.25.214.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 172.25.215.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0 

Как видите, единственными сетями, которые имеют несколько маршрутов, являются SiteA и SiteB. Оба хоста OpenVPN предпочитают маршрутизировать на другой сайт через его интерфейс клиента / сеть OpenVPN.

Эта проблема

Большинство маршрутов работают нормально. Любой хост на сайте А может общаться в двух направлениях с

  • Любой хост-интерфейс на SiteB
  • Любой хост-интерфейс на VpnSiteA
  • Любой хост-интерфейс на VpnSiteB, кроме TUN0 / 172.25.215.1

Т.е. хост на сайте А может пинговать

  • 10.1.1.3
  • 10.1.2.1
  • 172.25.215.2
  • 172.25.214.3
  • 10.1.2.2
  • Но не 172.25.215.1

Это то, что я хочу решить.

Устранение неисправностей я сделал

Тест 1

На хосте на SiteA я пингую 172.25.215.1 и проследил, что произошло TCPDUMPна обоих хостах OpenVPN.

  • Эхо-запрос поступил на хост OpenVPN SiteA по интерфейсу локальной сети
  • Эхо-запрос оставил хост OpenVPN SiteA на его интерфейсе TUN1
  • Эхо-запрос поступил на хост SiteB OpenNPN через его интерфейс TUN0
  • Эхо-ответ оставил хост OpenBPN SiteB на его интерфейсе TUN1
  • Нет Эхо ответа не прибыл на OpenVPN хозяина SiteA на любом из его интерфейсов.

Так что здесь что-то идет не так.

Тест 2

Я отключил сервер OpenVPN на хосте OpenVPN SiteA и отключил клиент OpenVPN на хосте OpenVPN, если SiteB. Другими словами, теперь существует только один туннель. На этот раз мне удалось пропинговать 172.25.215.1 с хоста на SiteA.

Так что, когда у меня есть два туннеля, что-то идет не так.

Фон

Почему не только один туннель? Время от времени мой интернет-провайдер на обоих сайтах перестает назначать мне публичный IP-адрес, оставляя меня позади CGN. Если это происходит на сайте, на котором размещен сервер OpenVPN, связь между сайтами нарушается. Но если на обоих сайтах работает сервер OpenVPN, если один сайт отстает от CGN, проблем нет.

аппендикс

server.conf хоста OpenVPN SiteA:

; General ; ---------------------------------------------------------  dev tun0 proto udp port xxxx  client-config-dir /etc/openvpn/ccd  keepalive 10 120 max-clients 20 tls-server  verb 2  ; Network ; ---------------------------------------------------------  topology subnet client-to-client  server 10.1.2.0 255.255.255.0   route 172.25.214.0 255.255.255.0 10.1.2.2 30  

client.conf хоста OpenVPN SiteA:

; General ; ---------------------------------------------------------  client dev tun1 proto udp remote xxxx  resolv-retry infinite connect-retry 5 1800 explicit-exit-notify nobind tls-client  verb 2  ; Network ; ---------------------------------------------------------  script-security 2 up /etc/openvpn/uppe.sh down /etc/openvpn/nere.sh up-restart up-delay  iproute /usr/local/sbin/unpriv-ip 

Примечание: настройки безопасности удалены.

uppe.sh:

#!/bin/bash  /usr/local/sbin/unpriv-ip route add 172.25.214.0/24 via 172.25.215.1 dev tun1 metric 20 exit 0 

nere.sh

#!/bin/bash  /usr/local/sbin/unpriv-ip route del 172.25.214.0/24 via 172.25.215.1 dev tun1 metric 20 exit 0 

Эти два относятся к смягчению CGN.

Файлы для хоста OpenVPN на SiteB идентичны, за исключением того, что сетевые адреса различаются.

1

0 ответов на вопрос