Назад | Перейти на главную страницу

Не удается проверить связь с общедоступными конечными точками при активном туннеле IPSec

Я использую openswan для соединения двух машин через IPSec. Туннель работает нормально, и у меня есть подключение к каждой конечной точке через VPN.

Однако, когда туннель открыт, я теряю подключение к IP-адресам общедоступных конечных точек. Например, пинговать публичный адрес сайта A 1.2.3.4 с публичного адреса сайта B 4.5.6.7 (и наоборот) не удастся.

Когда туннель поднялся, я заметил кое-что любопытное, что могло бы объяснить такое поведение.

#ip xfrm policy

src 1.2.3.4/32 dst 4.5.6.7/32 
    dir out priority 2080 ptype main 
    tmpl src 0.0.0.0 dst 0.0.0.0
        proto esp reqid 0 mode transport

Я вырезал вывод повторного анализа, поскольку он содержит только логические записи (частные сети, соединенные туннелем).

Есть идеи, что мне не хватает?

Я не совсем знаком с синтаксисом xfrm, но он выглядит так:

  • Когда ваша VPN не работает, у вас есть маршрут в Интернет по умолчанию, поэтому вы можете пинговать так, как вы ожидаете.
  • После запуска VPN правило XFRM по существу добавляет маршрут политики, который отправляет весь трафик через туннель на другой конец. Вероятно, существует эквивалентное правило на другом конце, которое не позволяет запросам ICMP фактически достигать противоположного интерфейса через туннель (создавая своего рода петлю на уровне IP).

Вы можете настроить маршрутизацию таким образом, чтобы:

  • ваш маршрут по умолчанию всегда указывает на Интернет
  • вы отправляете только через туннель трафик, исходящий из подсетей, находящихся за маршрутизатором (за исключением других интерфейсов маршрутизатора). В качестве альтернативы вы можете добавить статические маршруты (или маршруты политики) для принудительной отправки трафика между двумя общедоступными IP-адресами за пределы туннеля.

Это сводится к тому, что вам нужно иметь способ различать маршрут по умолчанию, видимый от маршрутизатора (в сторону Интернета), и маршрут по умолчанию, наблюдаемый для трафика, происходящего в подсети LAN за маршрутизатором. Часто они совсем разные.