diff --git a/crosdns/hosts_modifier.cc b/crosdns/hosts_modifier.cc
index 9a1459a..1ff7501 100644
--- a/crosdns/hosts_modifier.cc
+++ b/crosdns/hosts_modifier.cc
@@ -19,8 +19,7 @@
 // are restarted we know what the base file was before we modified it.
 constexpr char kFileModificationDelimeter[] =
     "\n#####DYNAMIC-CROSDNS-ENTRIES#####\n";
-constexpr char kAllowedHostnameFull[] = "linuxhost";
-constexpr char kAllowedHostnameSuffix[] = "-local";
+constexpr char kAllowedHostnameSuffix[] = ".linux.test";
 constexpr uint32_t kAllowedIpSubnet = 0x64735c00;  // 100.115.92.0
 constexpr uint32_t kAllowedIpMask = 0xFFFFFF00;
 
@@ -33,26 +32,31 @@
   return true;
 }
 
-// Hostname must be either 'linuxhost' or *-localhost and use legal chars.
+// Hostname must be *.test and use legal chars.
 bool IsAllowedHostname(const std::string& hostname, std::string* err_out) {
   // Make sure this is a legal hostname. It must be comprised of alphanumeric
-  // characters or dashes. The dash may not be the first character. It must also
-  // either match 'linuxhost' or have the '-local' suffix.
-  if (hostname != kAllowedHostnameFull &&
-      !base::EndsWith(hostname, kAllowedHostnameSuffix,
+  // characters, dashes or dots. The dot or dash may not be the first character.
+  // It may not have consecutive dots. It must also have the '.test' suffix.
+  if (!base::EndsWith(hostname, kAllowedHostnameSuffix,
                       base::CompareCase::SENSITIVE)) {
     *err_out = "Attempt to add invalid hostname to mapping of: " + hostname;
     return false;
   }
-  if (hostname[0] == '-') {
-    *err_out = "First char in hostname may not be a dash: " + hostname;
+  if (hostname[0] == '-' || hostname[0] == '.') {
+    *err_out = "First char in hostname may not be a dot or dash: " + hostname;
     return false;
   }
+  bool last_was_dot = false;
   for (auto c : hostname) {
     if (!base::IsAsciiAlpha(c) && !base::IsAsciiDigit(c) && c != '-') {
+      if (c == '.' && !last_was_dot) {
+        last_was_dot = true;
+        continue;
+      }
       *err_out = "Invalid char in hostname: " + hostname;
       return false;
     }
+    last_was_dot = false;
   }
   return true;
 }
diff --git a/crosdns/hosts_modifier_unittest.cc b/crosdns/hosts_modifier_unittest.cc
index d84a6fc..409bc7c 100644
--- a/crosdns/hosts_modifier_unittest.cc
+++ b/crosdns/hosts_modifier_unittest.cc
@@ -82,12 +82,12 @@
   EXPECT_TRUE(hosts_modifier()->Init(hosts_file()));
   // Valid hostname for default container.
   EXPECT_TRUE(hosts_modifier()->SetHostnameIpMapping(
-      "linuxhost", "100.115.92.24", "", &err));
+      "penguin.linux.test", "100.115.92.24", "", &err));
   // Valid hostnames for vm/container.
   EXPECT_TRUE(hosts_modifier()->SetHostnameIpMapping(
-      "foo12-local", "100.115.92.22", "", &err));
+      "foo12.linux.test", "100.115.92.22", "", &err));
   EXPECT_TRUE(hosts_modifier()->SetHostnameIpMapping(
-      "penguin-termina-local", "100.115.92.253", "", &err));
+      "penguin.termina.linux.test", "100.115.92.253", "", &err));
   // Invalid hostnames.
   EXPECT_FALSE(hosts_modifier()->SetHostnameIpMapping(
       "google.com", "100.115.92.24", "", &err));
@@ -95,36 +95,44 @@
       "localhost", "100.115.92.24", "", &err));
   EXPECT_FALSE(hosts_modifier()->SetHostnameIpMapping(
       "-foo-local", "100.115.92.24", "", &err));
+  EXPECT_FALSE(hosts_modifier()->SetHostnameIpMapping(
+      "foo..linux.test", "100.115.92.24", "", &err));
+  EXPECT_FALSE(hosts_modifier()->SetHostnameIpMapping(
+      ".linux.test", "100.115.92.24", "", &err));
+  EXPECT_FALSE(hosts_modifier()->SetHostnameIpMapping(
+      "linux.test", "100.115.92.24", "", &err));
   EXPECT_FALSE(
       hosts_modifier()->SetHostnameIpMapping("", "100.115.92.24", "", &err));
   // Invalid IPs.
   EXPECT_FALSE(hosts_modifier()->SetHostnameIpMapping(
-      "linuxhost", "100.115.91.24", "", &err));
-  EXPECT_FALSE(
-      hosts_modifier()->SetHostnameIpMapping("linuxhost", "8.8.8.8", "", &err));
+      "penguin.linux.test", "100.115.91.24", "", &err));
+  EXPECT_FALSE(hosts_modifier()->SetHostnameIpMapping("penguin.linux.test",
+                                                      "8.8.8.8", "", &err));
   EXPECT_FALSE(hosts_modifier()->SetHostnameIpMapping(
-      "linuxhost", "101.115.92.24", "", &err));
+      "penguin.linux.test", "101.115.92.24", "", &err));
   // Verify the contents of the hosts file. We are assuming an ordered map is
   // used here (which it is in the code) to make analyzing the results easier.
   std::string extra_contents = kBaseFileContents;
   extra_contents += kFileModificationDelimeter;
-  extra_contents += "100.115.92.22 foo12-local\n";
-  extra_contents += "100.115.92.24 linuxhost\n";
-  extra_contents += "100.115.92.253 penguin-termina-local\n";
+  extra_contents += "100.115.92.22 foo12.linux.test\n";
+  extra_contents += "100.115.92.24 penguin.linux.test\n";
+  extra_contents += "100.115.92.253 penguin.termina.linux.test\n";
   EXPECT_EQ(extra_contents, ReadHostsContents());
 
   // Removing an invalid hostname should fail.
   EXPECT_FALSE(hosts_modifier()->RemoveHostnameIpMapping("bar-local", &err));
   EXPECT_FALSE(hosts_modifier()->RemoveHostnameIpMapping("google.com", &err));
   // Removing a valid hostname should succeed.
-  EXPECT_TRUE(hosts_modifier()->RemoveHostnameIpMapping("linuxhost", &err));
-  EXPECT_TRUE(hosts_modifier()->RemoveHostnameIpMapping("foo12-local", &err));
+  EXPECT_TRUE(
+      hosts_modifier()->RemoveHostnameIpMapping("penguin.linux.test", &err));
+  EXPECT_TRUE(
+      hosts_modifier()->RemoveHostnameIpMapping("foo12.linux.test", &err));
 
   // Verify the contents of the hosts file again, there should be one entry
   // left.
   extra_contents = kBaseFileContents;
   extra_contents += kFileModificationDelimeter;
-  extra_contents += "100.115.92.253 penguin-termina-local\n";
+  extra_contents += "100.115.92.253 penguin.termina.linux.test\n";
   EXPECT_EQ(extra_contents, ReadHostsContents());
 }
 
diff --git a/vm_tools/cicerone/service.cc b/vm_tools/cicerone/service.cc
index e8f0a80..00b4d75 100644
--- a/vm_tools/cicerone/service.cc
+++ b/vm_tools/cicerone/service.cc
@@ -40,7 +40,7 @@
 constexpr char kDefaultContainerName[] = "penguin";
 
 // Hostname for the default VM/container.
-constexpr char kDefaultContainerHostname[] = "linuxhost";
+constexpr char kDefaultContainerHostname[] = "penguin.linux.test";
 
 // Delimiter for the end of a URL scheme.
 constexpr char kUrlSchemeDelimiter[] = "://";
@@ -385,9 +385,10 @@
 
   if (owner_id == primary_owner_id_) {
     // Register this with the hostname resolver.
-    RegisterHostname(base::StringPrintf("%s-%s-local", container_name.c_str(),
-                                        vm_name.c_str()),
-                     string_ip);
+    RegisterHostname(
+        base::StringPrintf("%s.%s.linux.test", container_name.c_str(),
+                           vm_name.c_str()),
+        string_ip);
     if (vm_name == kDefaultVmName && container_name == kDefaultContainerName) {
       RegisterHostname(kDefaultContainerHostname, string_ip);
     }
@@ -430,8 +431,8 @@
     return;
   }
   // Unregister this with the hostname resolver.
-  UnregisterHostname(base::StringPrintf("%s-%s-local", container_name.c_str(),
-                                        vm_name.c_str()));
+  UnregisterHostname(base::StringPrintf(
+      "%s.%s.linux.test", container_name.c_str(), vm_name.c_str()));
   if (vm_name == kDefaultVmName && container_name == kDefaultContainerName) {
     UnregisterHostname(kDefaultContainerHostname);
   }
@@ -1496,7 +1497,7 @@
                  << container_name;
     if (owner_id == primary_owner_id_) {
       UnregisterHostname(base::StringPrintf(
-          "%s-%s-local", container_name.c_str(), vm_name.c_str()));
+          "%s.%s.linux.test", container_name.c_str(), vm_name.c_str()));
       if (vm_name == kDefaultVmName &&
           container_name == kDefaultContainerName) {
         UnregisterHostname(kDefaultContainerHostname);
diff --git a/vm_tools/concierge/service.cc b/vm_tools/concierge/service.cc
index b537b61..68f1c37 100644
--- a/vm_tools/concierge/service.cc
+++ b/vm_tools/concierge/service.cc
@@ -1397,7 +1397,7 @@
       request.cryptohome_id(), request.vm_name(), container_name));
   response.set_host_private_key(GetHostSshPrivateKey(request.cryptohome_id()));
   response.set_hostname(base::StringPrintf(
-      "%s-%s-local", container_name.c_str(), request.vm_name().c_str()));
+      "%s.%s.linux.test", container_name.c_str(), request.vm_name().c_str()));
   writer.AppendProtoAsArrayOfBytes(response);
   return dbus_response;
 }
