<mxfile host="thecodeclouds.com" agent="hand-built" version="24.0.0" type="device">
<diagram id="dns" name="3. Hybrid DNS"><mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1500" pageHeight="780" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="c1" value="One name space, three resolvers: Route 53 Resolver, Cloud DNS and on-prem DNS" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=18;fontColor=#232F3E;fontStyle=1;spacing=0;" vertex="1" parent="1"><mxGeometry x="20" y="16" width="1100" height="24" as="geometry"/></mxCell>
<mxCell id="c2" value="&lt;b&gt;AWS Cloud&lt;/b&gt;" style="points=[];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud_alt;strokeColor=#232F3E;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#232F3E;dashed=0;" vertex="1" parent="1"><mxGeometry x="20" y="60" width="600" height="500" as="geometry"/></mxCell>
<mxCell id="c3" value='&lt;b&gt;Shared services VPC&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;10.18.0.0/16&lt;/font&gt;' style="points=[];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc2;strokeColor=#8C4FFF;fillColor=#FAF7FF;verticalAlign=top;align=left;spacingLeft=30;fontColor=#8C4FFF;dashed=0;" vertex="1" parent="1"><mxGeometry x="40" y="100" width="560" height="240" as="geometry"/></mxCell>
<mxCell id="phz" value='&lt;b&gt;Private hosted zone&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;aws.corp.example&lt;/font&gt;' style="sketch=0;points=[];outlineConnect=0;fontColor=#232F3E;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.route_53;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=4;" vertex="1" parent="1"><mxGeometry x="70" y="160" width="48" height="48" as="geometry"/></mxCell>
<mxCell id="c4" value="Resolver rules, shared with AWS RAM&lt;br&gt;gcp.corp.example  →  10.34.0.2, 10.34.0.3&lt;br&gt;corp.example  →  on-prem DNS" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=11;fontColor=#3C4043;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="70" y="245" width="250" height="47" as="geometry"/></mxCell>
<mxCell id="inb" value='&lt;b&gt;Inbound endpoint&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;10.18.0.10, 10.18.1.10&lt;/font&gt;' style="sketch=0;points=[];outlineConnect=0;fontColor=#232F3E;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.route_53_resolver;labelPosition=left;verticalLabelPosition=middle;align=right;verticalAlign=middle;spacingRight=4;" vertex="1" parent="1"><mxGeometry x="520" y="150.5" width="52" height="52" as="geometry"/></mxCell>
<mxCell id="outb" value="&lt;b&gt;Outbound endpoint&lt;/b&gt;" style="sketch=0;points=[];outlineConnect=0;fontColor=#232F3E;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.route_53_resolver;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="400" y="250.5" width="52" height="52" as="geometry"/></mxCell>
<mxCell id="c5" value='&lt;b&gt;Prod VPC&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;10.16.0.0/16&lt;/font&gt;' style="points=[];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc2;strokeColor=#8C4FFF;fillColor=#FAF7FF;verticalAlign=top;align=left;spacingLeft=30;fontColor=#8C4FFF;dashed=0;" vertex="1" parent="1"><mxGeometry x="40" y="370" width="560" height="170" as="geometry"/></mxCell>
<mxCell id="eks" value='&lt;b&gt;EKS pod&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;asks api.gcp.corp.example&lt;/font&gt;' style="sketch=0;points=[];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.eks;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=4;" vertex="1" parent="1"><mxGeometry x="300" y="440" width="46" height="46" as="geometry"/></mxCell>
<mxCell id="c6" style="edgeStyle=none;html=1;rounded=0;strokeColor=#8C4FFF;strokeWidth=2;dashed=0;startArrow=none;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="eks" target="outb"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="323" y="276.5"/></Array></mxGeometry></mxCell>
<mxCell id="c7" value="1" style="ellipse;html=1;fillColor=#8C4FFF;strokeColor=none;fontColor=#FFFFFF;fontStyle=1;fontSize=12;aspect=fixed;" vertex="1" parent="1"><mxGeometry x="312" y="330" width="22" height="22" as="geometry"/></mxCell>
<mxCell id="c8" value="&lt;b&gt;Google Cloud&lt;/b&gt;" style="rounded=1;absoluteArcSize=1;arcSize=6;html=1;whiteSpace=wrap;strokeColor=#4285F4;fillColor=#FFFFFF;strokeWidth=1.5;dashed=0;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=34;spacingTop=-2;" vertex="1" parent="1"><mxGeometry x="880" y="60" width="600" height="500" as="geometry"/></mxCell>
<mxCell id="c9" value="" style="sketch=0;html=1;aspect=fixed;strokeColor=none;fillColor=#4285F4;shape=mxgraph.gcp2.google_cloud_platform;" vertex="1" parent="1"><mxGeometry x="888" y="65" width="22" height="22" as="geometry"/></mxCell>
<mxCell id="ghub" value='&lt;b&gt;Shared services VPC (DNS hub)&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;10.34.0.0/16&lt;/font&gt;' style="rounded=1;absoluteArcSize=1;arcSize=6;html=1;whiteSpace=wrap;strokeColor=#4285F4;fillColor=#F1F6FE;strokeWidth=1;dashed=0;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=34;spacingTop=-2;" vertex="1" parent="1"><mxGeometry x="900" y="100" width="560" height="240" as="geometry"/></mxCell>
<mxCell id="c11" value="" style="sketch=0;html=1;aspect=fixed;strokeColor=none;fillColor=#5184F3;shape=mxgraph.gcp2.virtual_private_cloud;" vertex="1" parent="1"><mxGeometry x="908" y="105" width="22" height="20" as="geometry"/></mxCell>
<mxCell id="fwd" value='&lt;b&gt;Forwarding zone aws.corp.example&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;→ 10.18.0.10, 10.18.1.10&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.cloud_dns;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=4;" vertex="1" parent="1"><mxGeometry x="930" y="150" width="60" height="53.15" as="geometry"/></mxCell>
<mxCell id="pol" value='&lt;b&gt;Inbound server policy&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;10.34.0.2, 10.34.0.3&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.cloud_dns;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=4;" vertex="1" parent="1"><mxGeometry x="930" y="250" width="60" height="53.15" as="geometry"/></mxCell>
<mxCell id="pz" value='&lt;b&gt;Private zone&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;gcp.corp.example&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.cloud_dns;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="1340" y="200" width="56" height="49.61" as="geometry"/></mxCell>
<mxCell id="c12" value='&lt;b&gt;Prod Shared VPC&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;10.32.0.0/16&lt;/font&gt;' style="rounded=1;absoluteArcSize=1;arcSize=6;html=1;whiteSpace=wrap;strokeColor=#4285F4;fillColor=#F1F6FE;strokeWidth=1;dashed=0;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=8;spacingTop=-2;" vertex="1" parent="1"><mxGeometry x="900" y="370" width="560" height="170" as="geometry"/></mxCell>
<mxCell id="gke" value='&lt;b&gt;GKE pod&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;asks db.aws.corp.example&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.container_engine;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=4;" vertex="1" parent="1"><mxGeometry x="1250" y="440" width="52" height="46.07" as="geometry"/></mxCell>
<mxCell id="c13" style="edgeStyle=none;html=1;rounded=0;strokeColor=#4285F4;strokeWidth=2;dashed=0;startArrow=none;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.6714;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="gke" target="ghub"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="c14" value="DNS peering zone&lt;br&gt;aws.corp.example → DNS hub" style="text;html=1;whiteSpace=wrap;align=right;verticalAlign=top;fontSize=11;fontColor=#4285F4;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="1050" y="380" width="220" height="32" as="geometry"/></mxCell>
<mxCell id="c15" value="3" style="ellipse;html=1;fillColor=#4285F4;strokeColor=none;fontColor=#FFFFFF;fontStyle=1;fontSize=12;aspect=fixed;" vertex="1" parent="1"><mxGeometry x="1265" y="360" width="22" height="22" as="geometry"/></mxCell>
<mxCell id="c16" style="edgeStyle=none;html=1;rounded=0;strokeColor=#1E8E3E;strokeWidth=3;dashed=0;startArrow=none;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="outb" target="pol"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="c17" value="2" style="ellipse;html=1;fillColor=#1E8E3E;strokeColor=none;fontColor=#FFFFFF;fontStyle=1;fontSize=12;aspect=fixed;" vertex="1" parent="1"><mxGeometry x="735" y="265" width="22" height="22" as="geometry"/></mxCell>
<mxCell id="c18" style="edgeStyle=none;html=1;rounded=0;strokeColor=#1E8E3E;strokeWidth=3;dashed=0;startArrow=none;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="fwd" target="inb"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="c19" value="4" style="ellipse;html=1;fillColor=#1E8E3E;strokeColor=none;fontColor=#FFFFFF;fontStyle=1;fontSize=12;aspect=fixed;" vertex="1" parent="1"><mxGeometry x="735" y="165" width="22" height="22" as="geometry"/></mxCell>
<mxCell id="c20" value="over the private interconnect" style="text;html=1;whiteSpace=wrap;align=center;verticalAlign=top;fontSize=11;fontColor=#1E8E3E;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="640" y="210" width="220" height="17" as="geometry"/></mxCell>
<mxCell id="dc" value="&lt;b&gt;Corporate data centre&lt;/b&gt;" style="points=[];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_corporate_data_center;strokeColor=#7D8998;fillColor=#F7F8FA;verticalAlign=top;align=left;spacingLeft=30;fontColor=#5A6C86;dashed=0;" vertex="1" parent="1"><mxGeometry x="640" y="620" width="260" height="130" as="geometry"/></mxCell>
<mxCell id="ondns" value='&lt;b&gt;On-prem DNS&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;conditional forwarders&lt;/font&gt;' style="sketch=0;points=[];outlineConnect=0;fontColor=#232F3E;fillColor=#5A6C86;strokeColor=#ffffff;dashed=0;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.traditional_server;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=4;" vertex="1" parent="1"><mxGeometry x="670" y="670" width="44" height="44" as="geometry"/></mxCell>
<mxCell id="c22" style="edgeStyle=none;html=1;rounded=0;strokeColor=#5A6C86;strokeWidth=2;dashed=1;startArrow=block;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="inb" target="dc"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="546" y="685"/></Array></mxGeometry></mxCell>
<mxCell id="c23" style="edgeStyle=none;html=1;rounded=0;strokeColor=#5A6C86;strokeWidth=2;dashed=1;startArrow=block;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="pol" target="dc"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="960" y="685"/></Array></mxGeometry></mxCell>
<mxCell id="c24" value="&lt;b&gt;Gotcha: 35.199.192.0/19&lt;/b&gt;" style="rounded=1;arcSize=8;html=1;whiteSpace=wrap;strokeColor=#E8710A;fillColor=#FFF7F0;dashed=0;fontSize=12;fontStyle=0;fontColor=#B05000;align=left;verticalAlign=top;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="640" y="340" width="220" height="200" as="geometry"/></mxCell>
<mxCell id="c25" value="Cloud DNS sends forwarded&lt;br&gt;queries from this range.&lt;br&gt;Advertise it from&lt;br&gt;Cloud Router to AWS, route it&lt;br&gt;back over the interconnect, and&lt;br&gt;allow it in the inbound&lt;br&gt;endpoint's security group.&lt;br&gt;Otherwise answers never&lt;br&gt;come back." style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=11;fontColor=#3C4043;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="652" y="372" width="200" height="137" as="geometry"/></mxCell>
<mxCell id="c26" value="&lt;b&gt;Legend&lt;/b&gt;" style="rounded=1;arcSize=8;html=1;whiteSpace=wrap;strokeColor=#9AA0A6;fillColor=#FFFFFF;dashed=0;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="1180" y="600" width="300" height="114" as="geometry"/></mxCell>
<mxCell id="c27" style="edgeStyle=none;html=1;rounded=0;strokeColor=#1E8E3E;strokeWidth=3;dashed=0;startArrow=none;startFill=1;endArrow=none;endFill=1;endSize=4;startSize=4;" edge="1" parent="1"><mxGeometry relative="1" as="geometry"><mxPoint x="1194" y="638" as="sourcePoint"/><mxPoint x="1234" y="638" as="targetPoint"/></mxGeometry></mxCell>
<mxCell id="c28" value="Cross-cloud DNS query" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=11;fontColor=#3C4043;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="1246" y="631" width="224" height="17" as="geometry"/></mxCell>
<mxCell id="c29" style="edgeStyle=none;html=1;rounded=0;strokeColor=#8C4FFF;strokeWidth=2;dashed=0;startArrow=none;startFill=1;endArrow=none;endFill=1;endSize=4;startSize=4;" edge="1" parent="1"><mxGeometry relative="1" as="geometry"><mxPoint x="1194" y="659" as="sourcePoint"/><mxPoint x="1234" y="659" as="targetPoint"/></mxGeometry></mxCell>
<mxCell id="c30" value="Query inside AWS" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=11;fontColor=#3C4043;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="1246" y="652" width="224" height="17" as="geometry"/></mxCell>
<mxCell id="c31" style="edgeStyle=none;html=1;rounded=0;strokeColor=#4285F4;strokeWidth=2;dashed=0;startArrow=none;startFill=1;endArrow=none;endFill=1;endSize=4;startSize=4;" edge="1" parent="1"><mxGeometry relative="1" as="geometry"><mxPoint x="1194" y="680" as="sourcePoint"/><mxPoint x="1234" y="680" as="targetPoint"/></mxGeometry></mxCell>
<mxCell id="c32" value="Query inside Google Cloud" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=11;fontColor=#3C4043;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="1246" y="673" width="224" height="17" as="geometry"/></mxCell>
<mxCell id="c33" style="edgeStyle=none;html=1;rounded=0;strokeColor=#5A6C86;strokeWidth=2;dashed=1;startArrow=none;startFill=1;endArrow=none;endFill=1;endSize=4;startSize=4;" edge="1" parent="1"><mxGeometry relative="1" as="geometry"><mxPoint x="1194" y="701" as="sourcePoint"/><mxPoint x="1234" y="701" as="targetPoint"/></mxGeometry></mxCell>
<mxCell id="c34" value="On-prem conditional forwarding" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=11;fontColor=#3C4043;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="1246" y="694" width="224" height="17" as="geometry"/></mxCell>
<mxCell id="c35" value="1  EKS asks VPC resolver, rule sends gcp.corp.example out&lt;br&gt;2  Outbound endpoint queries Cloud DNS inbound policy IPs&lt;br&gt;3  GKE query follows the peering zone to the DNS hub&lt;br&gt;4  Forwarding zone queries the Route 53 inbound endpoint" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=12;fontColor=#232F3E;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="20" y="600" width="560" height="66" as="geometry"/></mxCell></root></mxGraphModel></diagram>
</mxfile>
