<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hybrid Networking on Brewed in the Cloud by Chris Hailes</title><link>https://blog.brewedinthecloud.com/tags/hybrid-networking/</link><description>Recent content in Hybrid Networking on Brewed in the Cloud by Chris Hailes</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 07 May 2026 00:00:00 +1100</lastBuildDate><atom:link href="https://blog.brewedinthecloud.com/tags/hybrid-networking/rss.xml" rel="self" type="application/rss+xml"/><item><title>Hybrid East–West: When Two Networks Become One Problem</title><link>https://blog.brewedinthecloud.com/p/east-west-two-networks-one-problem/</link><pubDate>Thu, 07 May 2026 00:00:00 +1100</pubDate><guid>https://blog.brewedinthecloud.com/p/east-west-two-networks-one-problem/</guid><description>&lt;p&gt;Hybrid networking usually starts with good intentions.&lt;/p&gt;
&lt;p&gt;A site‑to‑site VPN or ExpressRoute is approved to “unlock value”. Azure workloads need to talk to on‑prem systems, operations need visibility, shared services need reach. The diagram still shows two boxes, so it &lt;em&gt;feels&lt;/em&gt; contained.&lt;/p&gt;
&lt;p&gt;But the moment east–west traffic crosses that link, containment stops being an architectural fact and becomes an assumption.&lt;/p&gt;
&lt;p&gt;And assumptions don’t survive attackers.&lt;/p&gt;
&lt;h2 id="the-mental-model"&gt;The Mental Model
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Common assumption:&lt;/strong&gt;&lt;br&gt;
On‑prem and Azure are separate security domains that just happen to be connected.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why it breaks:&lt;/strong&gt;&lt;br&gt;
East–west traffic doesn’t understand organisational boundaries. Once routing and DNS align, hybrid connectivity collapses those domains into a single lateral movement surface selectively, but decisively.&lt;/p&gt;
&lt;p&gt;Hybrid doesn’t “extend” your network.&lt;br&gt;
It &lt;strong&gt;redefines adjacency&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="how-it-really-works"&gt;How It Really Works
&lt;/h2&gt;&lt;p&gt;Hybrid east–west behaves less like cross‑environment communication and more like &lt;strong&gt;internal traffic with extra hops&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Three forces make this unavoidable.&lt;/p&gt;
&lt;h3 id="1-routing-turns-distance-into-trivia"&gt;1. Routing Turns Distance into Trivia
&lt;/h3&gt;&lt;p&gt;From a packet’s perspective, an RFC1918 prefix reachable via ExpressRoute or VPN is just another route.&lt;/p&gt;
&lt;p&gt;If Azure workloads can route to on‑prem subnets, then adjacency exists regardless of intent, documentation, or team boundaries.&lt;/p&gt;
&lt;p&gt;This is where many designs fail quietly: segmentation may exist &lt;em&gt;within&lt;/em&gt; environments, but hybrid routing stitches those segments together in ways no single team models end‑to‑end.&lt;/p&gt;
&lt;h3 id="2-dns-collapses-discovery"&gt;2. DNS Collapses Discovery
&lt;/h3&gt;&lt;p&gt;Shared DNS is the most underestimated hybrid risk.&lt;/p&gt;
&lt;p&gt;Private DNS zone links, conditional forwarders, split‑horizon records, all introduced for operability unify discovery across environments. Once names resolve, targets are discoverable. Once discoverable, they are reachable &lt;em&gt;by design&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Hybrid DNS rarely mirrors trust boundaries. It mirrors convenience.&lt;/p&gt;
&lt;h3 id="3-legacy-trust-survives-the-move"&gt;3. Legacy Trust Survives the Move
&lt;/h3&gt;&lt;p&gt;This is the uncomfortable part.&lt;/p&gt;
&lt;p&gt;Treating Azure VNets as an extension of the on‑prem “internal network” is no longer a risk &lt;strong&gt;it is an architectural failure&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;That failure usually shows up as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Broad RFC1918 route advertisement&lt;/li&gt;
&lt;li&gt;Shared DNS namespaces without containment intent&lt;/li&gt;
&lt;li&gt;Implicit trust based on IP origin rather than workload purpose&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These assumptions made sense in legacy estates. Carrying them into Azure turns hybrid connectivity into an amplifier for lateral movement.&lt;/p&gt;
&lt;h2 id="realworld-impact"&gt;Real‑World Impact
&lt;/h2&gt;&lt;p&gt;This materially changes how you &lt;strong&gt;design, deploy, and operate&lt;/strong&gt; hybrid estates.&lt;/p&gt;
&lt;h3 id="containment-stops-at-the-wrong-places"&gt;Containment Stops at the Wrong Places
&lt;/h3&gt;&lt;p&gt;If a compromised Azure workload can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Resolve on‑prem service names&lt;/li&gt;
&lt;li&gt;Route to broad on‑prem prefixes&lt;/li&gt;
&lt;li&gt;Reach shared or management services&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then containment is no longer environment‑scoped. It’s estate‑wide.&lt;/p&gt;
&lt;p&gt;At that point, “hybrid” is not a boundary it’s a corridor.&lt;/p&gt;
&lt;h3 id="blast-radius-expands-by-default"&gt;Blast Radius Expands by Default
&lt;/h3&gt;&lt;p&gt;Most hybrid designs are asymmetric:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Azure workloads gain broad on‑prem reach&lt;/li&gt;
&lt;li&gt;On‑prem systems only require narrow Azure access&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That imbalance is perfect for lateral movement &lt;em&gt;out&lt;/em&gt; of Azure and &lt;em&gt;into&lt;/em&gt; legacy environments where controls are weakest and trust is highest.&lt;/p&gt;
&lt;h3 id="change-control-quietly-becomes-a-security-decision"&gt;Change Control Quietly Becomes a Security Decision
&lt;/h3&gt;&lt;p&gt;Adding a VNet peering, linking a DNS zone, or advertising a new route can silently expand the attack surface.&lt;/p&gt;
&lt;p&gt;These changes are often treated as networking hygiene, not trust‑boundary modifications.&lt;/p&gt;
&lt;p&gt;That mismatch is structural, not procedural.&lt;/p&gt;
&lt;h2 id="implementation-examples"&gt;Implementation Examples
&lt;/h2&gt;&lt;h3 id="visualising-the-hybrid-eastwest-surface"&gt;Visualising the Hybrid East–West Surface
&lt;/h3&gt;&lt;p&gt;The tunnel isn’t the risk.&lt;br&gt;
Everything that becomes reachable &lt;em&gt;because&lt;/em&gt; of it is.&lt;/p&gt;
&lt;div class="mermaid"&gt;flowchart LR
A[Azure Workload VNet]
B[Azure Shared Services VNet]
C[On‑Prem App Network]
D[On‑Prem Infra Network]
A --&gt; B
B --&gt; C
C --&gt; D
A -. DNS Resolution .-&gt; C
A -. Routing .-&gt; D
&lt;/div&gt;
&lt;p&gt;Once routing and DNS align, lateral movement doesn’t care which side of the cloud boundary it starts on.&lt;/p&gt;
&lt;h3 id="route-reality-check-azure-cli"&gt;Route Reality Check (Azure CLI)
&lt;/h3&gt;&lt;p&gt;This isn’t about configuring routes it’s about recognising adjacency.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;az network nic show-effective-route-table &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; --resource-group rg-prod &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; --name nic-app-01
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If an application NIC shows broad on‑prem prefixes with a &lt;strong&gt;Virtual network gateway&lt;/strong&gt; next hop, the question is no longer &lt;em&gt;“is this needed?”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;It’s &lt;em&gt;“why is this workload adjacent to legacy infrastructure at all?”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That output isn’t just diagnostic data.&lt;br&gt;
It’s evidence of a trust decision already made.&lt;/p&gt;
&lt;h2 id="gotchas--edge-cases"&gt;Gotchas &amp;amp; Edge Cases
&lt;/h2&gt;&lt;h3 id="doesnt-this-explode-cost-and-complexity"&gt;“Doesn’t This Explode Cost and Complexity?”
&lt;/h3&gt;&lt;p&gt;Yes, &lt;strong&gt;it can&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Rejecting universal hybrid adjacency often means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More deliberate workload placement&lt;/li&gt;
&lt;li&gt;Fewer but more intentional hybrid crossing points&lt;/li&gt;
&lt;li&gt;Increased up‑front design effort&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What it does &lt;em&gt;not&lt;/em&gt; automatically mean:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One tunnel per workload&lt;/li&gt;
&lt;li&gt;Dozens of ExpressRoutes&lt;/li&gt;
&lt;li&gt;Infinite network sprawl&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most estates don’t suffer because they have too many hybrid connections.&lt;br&gt;
They suffer because &lt;em&gt;everything&lt;/em&gt; is allowed to use the same one.&lt;/p&gt;
&lt;p&gt;Flat hybrid designs trade visible complexity for invisible blast radius. The cost doesn’t disappear — it just shows up later, under incident response and compensating controls.&lt;/p&gt;
&lt;h3 id="but-its-expressroute-its-private"&gt;“But It’s ExpressRoute, It’s Private”
&lt;/h3&gt;&lt;p&gt;Private doesn’t mean constrained.&lt;/p&gt;
&lt;p&gt;ExpressRoute often increases east–west risk because it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Encourages broader route propagation&lt;/li&gt;
&lt;li&gt;Reduces perceived scrutiny&lt;/li&gt;
&lt;li&gt;Becomes the default path for “just make it work” connectivity&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The transport isn’t the issue. Reachability is.&lt;/p&gt;
&lt;h3 id="asymmetric-visibility-persists"&gt;Asymmetric Visibility Persists
&lt;/h3&gt;&lt;p&gt;Hybrid east–west paths routinely cross tooling boundaries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Azure flow logs on one side&lt;/li&gt;
&lt;li&gt;Legacy monitoring on the other&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No single team sees the full lateral path. That blind spot is architectural, not operational.&lt;/p&gt;
&lt;h2 id="best-practices"&gt;Best Practices
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Treat hybrid routing and DNS changes as &lt;strong&gt;trust‑boundary decisions&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Minimise advertised prefixes, especially management and shared services&lt;/li&gt;
&lt;li&gt;Avoid universal hybrid adjacency by default; justify it explicitly&lt;/li&gt;
&lt;li&gt;Review effective routes from workload NICs, not diagrams&lt;/li&gt;
&lt;li&gt;Accept that reducing blast radius may increase design effort and choose it anyway&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This isn’t about blocking traffic.&lt;br&gt;
It’s about being intentional about &lt;strong&gt;who becomes adjacent to what&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="insight"&gt;
&lt;div class="insight-icon"&gt;🍺&lt;/div&gt;
&lt;div class="insight-content"&gt;
&lt;strong&gt;Brewed Insight:&lt;/strong&gt; Hybrid connectivity doesn’t give attackers new capabilities it gives them &lt;em&gt;continuity&lt;/em&gt;.&lt;br&gt;
If everything is hybrid‑adjacent, then cloud and on‑prem aren’t environments anymore they’re just terrain.
&lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;
.insight {
display: flex;
align-items: center;
background-color: #0089e41c;
border-left: 10px solid #D69A2D;
padding: 10px;
margin: 20px 0;
border-radius: 4px;
}
.insight-icon {
font-size: 24px;
margin-right: 10px;
}
.insight-content {
flex: 1;
}
&lt;/style&gt;&lt;h2 id="learn-more"&gt;Learn More
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://learn.microsoft.com/en-us/azure/virtual-network/diagnose-network-routing-problem" target="_blank" rel="noopener"
&gt;Azure Effective Routes Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://learn.microsoft.com/azure/architecture/reference-architectures/hybrid-networking/" target="_blank" rel="noopener"
&gt;Hybrid Networking Architecture in Azure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://learn.microsoft.com/azure/dns/private-dns-overview" target="_blank" rel="noopener"
&gt;Azure Private DNS Overview&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>