Index: /trunk/src/VBox/Devices/Network/slirp/slirp_dns.c
===================================================================
--- /trunk/src/VBox/Devices/Network/slirp/slirp_dns.c	(revision 43640)
+++ /trunk/src/VBox/Devices/Network/slirp/slirp_dns.c	(revision 43641)
@@ -259,5 +259,17 @@
             if ((pDns->de_addr.s_addr & RT_H2N_U32_C(IN_CLASSA_NET)) == RT_N2H_U32_C(INADDR_LOOPBACK & IN_CLASSA_NET))
             {
-                pDns->de_addr.s_addr = RT_H2N_U32(RT_N2H_U32(pData->special_addr.s_addr) | CTL_ALIAS);
+                if ((pDns->de_addr.s_addr) == RT_N2H_U32_C(INADDR_LOOPBACK))
+                    pDns->de_addr.s_addr = RT_H2N_U32(RT_N2H_U32(pData->special_addr.s_addr) | CTL_ALIAS);
+                else
+                {
+                    /* Modern Ubuntu register 127.0.1.1 as DNS server */
+                    LogRel(("NAT: DNS server %RTnaipv4 registration detected switching to host resolver case forcebly.\n",
+                            pDns->de_addr.s_addr));
+                    RTMemFree(pDns);
+                    /* Releasing fetched DNS information. */
+                    slirpReleaseDnsSettings(pData);
+                    pData->fUseHostResolver = 1;
+                    return VINF_SUCCESS;
+                }
             }
             TAILQ_INSERT_HEAD(&pData->pDnsList, pDns, de_list);
