<p>Have following setup below. Flannel is in VXLAN mode. Name resolution does not work from Windows nodes. 
Verified that following works:</p>

<ol>
<li>Windows POD -> external DNS server resolution</li>
<li>Windows POD -> HTTPS connection to kubernetes API service IP</li>
<li>Linux POD on master -> Name resolution against DNS service</li>
</ol>

<p>Following does not work:</p>

<ol>
<li>Windows POD -> DNS query against DNS service</li>
<li>Windows POD -> DNS query against IP of DNS pod</li>
</ol>

<pre><code>gregory@master1:~$ k get nodes
NAME         STATUS   ROLES    AGE    VERSION
master1      Ready    master   22h    v1.18.1
winworker1   Ready    &lt;none&gt;   15h    v1.18.1
winworker2   Ready    &lt;none&gt;   169m   v1.18.1
</code></pre>

<p>DNS repro</p>

<pre><code>PS C:\&gt; Test-NetConnection 10.96.0.10 -port 53
WARNING: TCP connect to (10.96.0.10 : 53) failed
ComputerName           : 10.96.0.10
RemoteAddress          : 10.96.0.10
RemotePort             : 53
InterfaceAlias         : vEthernet (62a92abe4497c380bae9dfdee71ae5069cd0bd1b66208f58016345b7a6d9fabe_flannel.4096)
SourceAddress          : 10.244.1.4
PingSucceeded          : False
PingReplyDetails (RTT) : 0 ms
TcpTestSucceeded       : False
PS C:\&gt; Test-NetConnection 10.96.0.1 -port 443
ComputerName     : 10.96.0.1
RemoteAddress    : 10.96.0.1
RemotePort       : 443
InterfaceAlias   : vEthernet (62a92abe4497c380bae9dfdee71ae5069cd0bd1b66208f58016345b7a6d9fabe_flannel.4096)
SourceAddress    : 10.244.1.4
TcpTestSucceeded : True
PS C:\&gt; Resolve-dnsname www.google.com -server 8.8.8.8
Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
www.google.com                                 AAAA   299   Answer     2607:f8b0:4004:811::2004
www.google.com                                 A      299   Answer     172.217.15.100
PS C:\&gt; Resolve-dnsname www.google.com -server 10.96.0.10
Resolve-dnsname : www.google.com : This operation returned because the timeout period expired
</code></pre>

Gregory Suvalian
<p>FYI. Kubernetes 1.18.1 has a bug for windows nodes which fail to create network called <code>Host</code> on reboot. (<a href="https://github.com/kubernetes-sigs/sig-windows-tools/issues/52" rel="nofollow noreferrer">https://github.com/kubernetes-sigs/sig-windows-tools/issues/52</a>). As a result communication is broken within flannel even if you recreate network manually with <code>docker network create -d nat host</code>. To make DNS resolution to work again you also need to restart Rancher wins service <code>get-service rancher-wins | Restart-Service</code>
Complete solution untill this is fixed is to modify <code>StartKubelet.ps1</code> file and add following to it on line 3</p>

<pre><code>$netId = docker network ls -f name=host --format "{{ .ID }}"
if ($netId.Length -lt 1) {
    docker network create -d nat host
}
</code></pre>
