Вот что я понял (отвечая на свой вопрос):
Почему и как Azure это делает?
Почему:
В отличие от физической сети, Azure имеет преимущество записи всех систем и сетевых интерфейсов в среде.
В физической сети «Протокол разрешения адресов», т. е. ARP, представляет собой широковещательный протокол для обнаружения машин в широковещательном домене или в «локально подключенной» среде L2. Это необходимо только потому, что нет центральной записи.
Azure работает без широковещательных рассылок. Это более эффективно и не обязательно, когда вы уже знаете все машины в подсети.
Как он маршрутизировал пакеты на уровне L3?:
Что касается проблемы маршрутизации, Azure отслеживает все пакеты, исходящие от Алисы, и отправляет их Бобу без учета маршрута ОС по умолчанию. Не имеет значения, если пакет, предназначенный для 10.0.2.5, передавался на 10.0.1.4 для маршрутизации. Это направление L2 использовало бы ARP, который здесь не работает. Вместо этого vnet полностью контролирует L3. С типом маршрута Azure "vnet local" в эффективной таблице маршрутизации пакет доставляется непосредственно Бобу, независимо от того, находится он в той же подсети или нет.
"vnet local" для диапазона адресов виртуальной сети используется в Azure по умолчанию. Этот маршрут необходимо переопределить в UDR подсети, чтобы пакет был доставлен на «маршрутизатор».
Как это сделать?
Локальные таблицы маршрутизации на виртуальных машинах почти игнорируются (все равно нужно помнить о том, на каком интерфейсе уходит пакет, поскольку это влияет на подсеть, в которой он появляется, и на применяемую таблицу маршрутизации).
Учитывая, что L2 является одноадресным, L3 допускает назначения за пределами подсети, а таблицы маршрутизации Azure применяются к подсети, возможен совершенно другой дизайн.
"должен" не ясно, но это то, что я сделал.
Обратите внимание, что маршрутизатор выполняет маршрутизацию между двумя подсетями, где он нет интерфейса в этих подсетях.