PfSense 2.2: ipsec up - пропадает lan



  • Всем Доброе время суток!

    Пару дней назад обновил pfSense c 2.1.5 до версии 2.2. Сразу после обновления отвалилась авторизация через AD, zabbix-agent стал не доступен.

    Схема с проблемным шлюзом: LAN офиса –- pfSense 2.2 (на котором проблема) --- ipsec-тоннель LAN-LAN (локальная сеть LAN, удаленная сеть 0.0.0.0/0) --- pfSense 2.2 --- LAN главного офиса

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

    Вчера в ходе экспериментов выяснил:

    1. при отключенном ipsec все в любую сторону работает корректно, т.е: dns, zabbix-agent, авторизация в AD, доступ в интернет (напрямую через WAN, не через удаленную сеть), ping на lan-адрес pfsense, с pfsense есть ping на localhost, свой lan-адрес, другие хосты lan;

    2. при включенном ipsec:

    • dns pfSense может отрезолвить только хосты с dns серверов, которые достижимы через WAN или через ipsec;
    • есть пинг lan адреса только из удаленной сети (главного офиса), из LAN'а пинговать шлюз не выходит, web-интерфейс не доступен;
    • с pfsense пингуется localhost;
    • с pfsense lan адрес и любой адрес из его же локальной сети не пингуется, собственно потому и отвались некоторые сервисы, которые находятся в локальной сети: это доменный контроллер и прокси zabbix'а (повторюсь, при отключенном ipsec это все работает и работало на прежних версиях с включенном ipsec).
    • достижимы все локальные хосты из удаленной сети, в локальной сети работают сервисы и ресурсы интернета и удаленной сети.

    При этом pfSense 2.2 уже работает в 2-х других офисах (этой 3-ий, который я обновлял), что натолкнуло на мысль. В итоге проблема оказалось в том, что политика ipsec воспринимается буквально: "все из LAN через удаленную сеть", даже когда я пинговал lan адрес pfsense из локальной сети - я видел эти пакеты на удаленном шлюзе. При поднятии ipsec с политикой "LAN офиса---LAN удаленного офиса (т.е. не 0.0.0.0/0)" все работает корректно.

    Это баг? Кто-то уже сталкивался с подобным? Бегло по баг-треккеру пробежался подобного не увидел. Есть идеи?



  • В итоге проблема оказалось в том, что политика ipsec воспринимается буквально: "все из LAN через удаленную сеть", даже когда я пинговал lan адрес pfsense из локальной сети - я видел эти пакеты на удаленном шлюзе

    Если в remote network стоит 0.0.0.0, то весь трафик будет заворачиваться в туннель.

    При поднятии ipsec с политикой "LAN офиса–-LAN удаленного офиса (т.е. не 0.0.0.0/0)" все работает корректно.

    Это значит, что всё, что относится к удаленной лок. сети будет уходить в туннель. Остальное - в WAN.

    И это, я так понимаю, нормальное поведение.

    1. при включенном ipsec:

    По какой схеме выше ?

    • dns pfSense может отрезолвить только хосты с dns серверов, которые достижимы через WAN или через ipsec;

    А что в настройках DNS самого pfsense ? Указаны ли адреса лок. DNS ?

    Возможно, что адресация в лок. сетях за pfsense-ми совпадает. Проверьте это.



  • Все проверено, адресация не совпадает - уже почти 10 лет работает  :) (на pf не все эти годы, но все же)

    Если в remote network стоит 0.0.0.0, то весь трафик будет заворачиваться в туннель.

    Верно. Это нужно, это работает. Проблема в том, что в туннель попадает трафик, который относится к lan адресу pfsense. Что я имею в виду:

    • с pfsense пингуется localhost;
    • с pfsense lan адрес и любой адрес из его же локальной сети не пингуется, собственно потому и отвались некоторые сервисы, которые находятся в локальной сети: это доменный контроллер и прокси zabbix'а (повторюсь, при отключенном ipsec это все работает и работало на прежних версиях с включенном ipsec).

    Прохождение пакета в pf? Ответ, например, тут https://forum.pfsense.org/index.php?topic=73670.0

    По моим результатам получается, что я спрашиваю: "кто такой localhost?" - ответ pf: "Я!"
    Вопрос:"кто такой по lan ip (настроен как статика на порту em0)" - ответ pf: "Не Я!", и отправляет его в ipsec-тоннель, т.к. его ip попадает в пространство 0.0.0.0/0.

    Да и собственно, да и если даже теоретически представить, что такой же ip есть в удаленной сети, то это не должно влиять, т.к. pf обязан понять что это адрес принадлежит также и ему. По ссылке выше есть схема, где есть блок условия "to me?", и он выше таблицы маршрутизации, и я совершенно согласен. что это правильно.

    Я это все к чему - я не понимаю в чем может быть причина, когда я задал локальному интерфейсу ip, допустим, 10.0.0.1, а pf мой запрос по этому адресу (даже не только с компа локальной сети, но и через web (Diagnostics-Ping или Diagnostics-Command Promt), и из терминала) уходит в тоннель.

    Уважаемый werter, я настроен позитивно - ни капли негатива если что  :) попытался объяснить, что все по максимуму постарался проверить, а ехать переустанавливать неблизко, резервного канала и второго белого ip нет. Хочется выслушать идеи, если есть.

    Что в таком случае можно проверить? Как я понимаю нужно смотреть на уровне ядра т.к. не проходит проверка принадлежности ip адреса к списку адресов, которые присвоены интерфейсам на pfsense.