не вышло не одним из трёх способов, зато я слегка окунулся в процесс маршрутизации для актуальных Windows NT ОС.
В Windows Vista был представлен новый сетевой стек, прошлый базировался на сетевом стеке BSD. В Next-Generation TCP/IP стеке Microsoft реализовали унифицированный для IPv4 и IPv6 набор модулей и функций. В частности для IPv4 протокола они позаимствовали из IPv6 Neighbor Unreachability Detection RFC 4861, RFC 7048. Выбор source и destination IP теперь базируется на общих правилах RFC 6724.
Первое, что делает ядро, это запрос в Destination cache, для поиска информации о маршруте, PMTU и тд. Если запись найдена, то пакет маршрутизируется, если нет, то выполняется поиск в RIB. При запросе в RIB возможно два сценария, выбор определяют входные данные. Если передан только destination IP, то будет выбран первый сценарий. Если так же передан source IP или exit-if(такая возможность есть в Test-NetConnection cmdlet из TCP/IP модуля PowerShell), то будет выбран второй сценарий. Значительное отличие в том, как интерпретируется настройка Weak/Strong Host Model RFC 1122 заданная для используемого интерфейса.
В первом сценарии выполняется unconstrained route lookup, для установления next-hop и exit-if. Выбор source IP выполняется согласно RFC 6724, на процесс влияют настройки Weak/Strong Host Model для exit-if. В случае Weak Host Model в процессе выбора будут участвовать все IP адреса узла. В случае Strong Host Model, только IP адреса назначенные на exit-if.
Во втором сценарии дополнительно передаётся source IP или exit-if. В этом случае нам известен source interface, поэтому решение о том, будет выполнен unconstrained или constrained route lookup принимается на основе настройки Weak/Strong Host Model для source interface. При Weak Host Model будет выполнен unconstrained route lookup, при этом exit-if может отличаться от source interface. При Strong Host Model будет выполнен constrained route lookup, при этом exit-if не может отличаться от source interface. Longest Prefix Match будет выполняться только для маршрутов, у которых exit-if = source interface. Так же ядро может выбрать маршрут с большей метрикой, несмотря на альтернативный маршрут с меньшей метрикой, исходя из source IP.
Как только next-hop установлен для него выполняется процедура Neighbor Unreachable Detection RFC 4861. В зависимости от состояния next-hop возникает несколько возможных сценариев. Если в neighbor cache запись для next-hop отсутствует, то она создаётся согласно RFC 4861. Если в процессе NUD MAC адрес next-hop установить не удастся, то ядро вернёт приложению ошибку. При этом в neighbor cache запись об узле сохранится со статусом unreachable согласно RFC 7048, а не incomplete RFC 4861.
При повторном обращении к тому же next-hop, ядро выполнит всю процедуру с самого начала, с запроса в Destination cache до точки проверки состояния next-hop в neighbor cache. При обнаружении в neighbor cache записи с состоянием unreachable будет выполнена повторная попытка обнаружить MAC адрес и если это не удастся, то ядро выполнит поиск нового маршрута.
При выборе нового маршрута будет выбран и новый source IP согласно RFC 6724, с учётом Weak/Strong Host Model для нового exit-if. На этом этапе может быть выбран менее специфичный маршрут, даже не смотря на то, что есть более специфичный, если next-hop в менее специфичном маршруте достижим. При этом в зависимости от настройки Ignore Default Route для exit-if в качестве маршрута может выступать и default route.
P/S/ В тексте могут быть ошибки или не точности, поскольку информация получена на основе тестов, трассировок событий ядра, статей Microsoft и анализа RFC 1122 и IPv6 RFC 4861, RFC 7048, RFC 6724 с учётом возможной их реализации для IPv4 протокола.
привет, нет, на самом деле это потеряло актуальность именно для меня, потому что все-таки проблема была в гипервизоре.... Мы собственно дальше тесты и не вели, но на форуме технет саппорт майкрософта - был кто-то у кого работало по стронг модели, и на каком-то обновлении десятки сломалось
Странно, что ИБшники не возбуждаются, в текущей конфигурации возникает packet leak, если сетевой фильтр конечно не фильтрует всё на клиенте.
там рдп попой в интернет торчит)))) какие иб?)
Да не, я в целом 😄
Обсуждают сегодня