如何为我的域设置Google ShortName服务,以便不需要FQDN


13

博客文章“ 您的域的tinyurl”服务 ”说明了如何使用Google Apps为您的域设置ShortName服务。例如,如果您的域是example.com并且使用Google Apps,则可以对其进行配置,以使其http://go.example.com成为企业的个人ShortName服务。

注意:这并不是要创建供世界使用的“ tinyurl”服务。这是针对企业的。

拥有仅您的用户可以使用的短名称服务非常有用,这样您就可以创建指向内部页面的链接。您可以说“今天的午餐菜单位于http://go.example.com/lunch ” ,而不是告诉人们冗长的URL 。该博客文章记录了使人们能够建立自己的链接的一些好处。(最重要的是:他们不必打扰您来设置新链接!)

问题

系统存在的问题是URL仍然很长。人们宁愿在其网络浏览器中输入“ go / lunch”并使其运行。遗憾的是,由于HTTP协议的工作原理很复杂,因此Google Apps无法支持此功能。HTTP 1.1中的“ Host:”标头列出了用户在其Web浏览器中键入的域,而不是FQDN。换句话说,当Google Apps获得对“ http:// go / lunch ”的HTTP请求时,网络服务器将收到“ go”作为主机名。由于Google Apps为许多域提供此服务,因此无法确定您是否想要go.example.comgo.some-other-example.com

结果,用户每次必须输入“ go.example.com/lunch”,这比“ go / lunch”长得多。

解决方案

Google可以使用网络Cookie或其他方案解决此问题。没有一个是特别干净或容易的。在它们完成之前,您可以通过设置自己的计算机来解决问题,该计算机将请求接受为“执行”并重定向它们。

服务器接受对名为“ go”的站点的HTTP请求,并将请求重定向到go.example.com。然后,您创建正确的DNS记录以使其起作用,并旋转DHCP配置,以便您的便携式计算机/工作站执行正确的操作。

该服务器故障文档的重点是解释该过程,然后提供配置示例来帮助您为自己的站点执行此操作。由于我无法访问或不了解世界上的每个操作系统,因此我将其作为“社区Wiki”,以便人们在为其工作时可以填写配置摘要。我将“ TODO”放在特别需要改进的地方。

细节

在此示例中,我们将使用“ example.com”作为域。

第1步:以常规方式设置Google Apps服务。

go.example.com正常配置服务。测试它,并确保类似的URL http://go.example.com/foo。如果还没有完成,请不要继续。这就像在您拥有汽车之前尝试修理您的汽车。

步骤2:选择您的重定向器主机名

如果您的短名称服务是go.example.com,理想情况下,您将使用重定向器的名称go.example.com。可悲的是,物理阻止了两个物体同时位于同一位置,而DNS遵守物理定律。

诀窍是使重定向器的主机名与ShortName服务相同,但位于不同的域中。例如,go.corp.example.comgo.ext.google.com,或go.this-is-different.example.com

大型公司通常具有一个内部子域,该子域不向外界公开。通常内部主机是INSIDEHOST.corp.google.com。那就是您放置重定向器的地方。

一些公司分配一个包含CNAME的子域,该子域指向应从公司内部和外部访问的服务。这样,就需要在人们的DNS搜索路径中放入一个子域。(Unix人们可以认为这/usr/local/bin是一个充满符号链接的子目录)传统上,该子域是ext.example.com。在该子域的CNAME记录一样mail.ext.example.comcalendar.ext.example.comvpn.ext.example.com,等。)

警告:在DNS搜索路径中添加另一个项目是使计算机运行速度降低的另一种方法。每次都进行一次额外的DNS查询很慢,并且上网冲浪会明显变慢。最好将此重定向器添加到计算机的DNS搜索路径中已经存在的子域中,即使这意味着在多个子域中添加CNAME。例如,如果内部计算机和连接到VPN的计算机已经corp.example.com在其搜索路径中,请在此处添加CNAME。如果您希望未使用VPN连接的外部计算机能够访问重定向器,那么corp.example.com如果这是从未从外部访问的计算机的子域,则可能很难将代码硬编码到其搜索路径中。在这种情况下,可以将另一个CNAME添加到外部子域(例如ext.example.com)指向重定向器。更新Web服务器配置以同时支持两者。

在此示例中,假设您选择了重定向器为go.ext.example.com。该机器可以被称为任何您想要的机器,我们将在DNS和Web服务器配置中尽一切努力。

步骤3:规划您的重定向器

您要设置的Web服务器可以在现有的Web服务器上,也可以在为此目的构建的新服务器上。关键是必须能够从您希望使用ShortName服务的任何地方访问该计算机:当用户通过VPN连接时,在公司内部,公司外部。(出于安全原因,您可以选择放弃在公司外部进行此工作。出于安全原因,也可以在内部安装一台计算机,在外部安装另一台计算机。)

注意:您不必为此设置新的Web服务器。您可以将其添加到现有的Web服务器,只要该配置不存在。

注意:这可能相当复杂。您可能要集中精力在最简单的情况下使它工作,然后在进行工作和测试后,使其在其他情况下也可以工作。尤其要使其按以下顺序工作:1.公司内部的工作站/笔记本电脑2.然后通过VPN连接的计算机,然后是公司外部的计算机(例如,在网吧)。3.然后在不启用VPN的情况下在网络外部的计算机上进行4.然后对其他操作系统进行测试

在此示例中,我们假设有一个Web服务器,无论您在公司内部还是外部,都可以使用相同的IP地址进行访问。

在我们的“走出去CORP .example.com的”例如,这意味着“走出去”是一个子域,这只是业内人士访问,并且需要使用VPN使用短名称的服务。由于通常将Google Apps配置为在没有VPN的情况下运行(因为所有访问均为HTTPS),因此这不是最佳选择。

在我们的“走出去 .example.com的”例如,这意味着该子域是从内部和外部的公司,和访问A记录指向一个外部IP地址。

步骤4:为您的重定向器添加DNS记录

这是所需的DNS记录:

go.example.com.                IN CNAME ghs.google.com.
go.ext.example.com.            IN A 64.32.179.5
go-redirector.example.com  IN A 64.32.179.5

第一个DNS记录(go.example.com)应该已经存在,作为步骤1的一部分。

第二个DNS记录(转到ext .example.com)是A指向您正在配置的新Web服务器的IP地址的记录。

第三个DNS记录(重定向器)用于在调试时为您提供帮助。

步骤5:配置Web服务器

将重定向添加到Web服务器。(这假设Web服务器已经安装并正在运行)。

这是Apache配置代码段:

<VirtualHost *:80>
        ServerName go-redirector.example.com
        ServerAlias go, go.ext, go.ext.example
        RewriteEngine on
        RewriteRule ^(.*)$ http://go.example.com$1 [R=permanent]
</VirtualHost>

如何测试。 http://go-redirector.example.com应该在这一点上工作。

在此测试起作用之前,请勿继续。宝贝的步骤。

步骤6:配置客户端的DNS搜索路径

现在,我们将配置机器(任何运行Web浏览器的机器),以便DNS搜索路径包括“ ext.example.com”

在您的DHCP服务器和VPN服务器上发送DNS搜索路径,该路径为:

corp.example.com。

(具有重定向主机的子域,后跟“。”。)

或者,您可以使用类似以下的搜索路径:

corp.example.com example.com。

但是,这将为我们转到的每个织补网页添加一个附加的DNS查找。由于它们将在99%的时间内失败,因此这只会使网络冲浪变慢。

在工作站和便携式计算机上,您需要确保子域包含在其DNS搜索路径中。这样,当用户键入“ go”时,软件将在域中找到它。

我们希望将计算机的搜索路径配置为以各种可能的方式设置此子域:

最初,DNS搜索路径无法通过DHCP设置。这是一项新增功能,并非所有的DHCP客户端都支持。即使支持该功能的DHCP客户端也需要进行修改,因为当膝上型计算机位于(例如)网吧时,它正在与您无法控制的DHCP服务器通信。当笔记本电脑使用VPN时,VPN客户端软件实际上并不使用DHCP,但是VPN服务器通常通过某种方式传输通常从DHCP服务器获得的设置。

因此,您要在所有这些位置设置DNS搜索路径:

  • DHCP服务器应发送DNS搜索路径选项
  • 静态配置的计算机应设置其DNS搜索路径
  • corp.example.com如果DHCP服务器尚未包含使用DHCP的客户端,则应将其配置为将域预先添加到其搜索路径中。

以下是有关如何在各种DHCP服务器和操作系统上执行此操作的说明。

配置DHCP服务器以包括DNS搜索路径:

  1. Windows DHCP说明

去做

  1. ISC DHCP指令

如果搜索路径只是计算机应位于的域,则:

option domain-name "corp.example.com";

如果客户端支持RFC 3397提供搜索路径,则可以执行此操作,但是这样做很尴尬,因为没有对DNS主机序列数据类型的本地支持,每个DNS主机都像DNS中那样编码为长度前缀标签。无法将定义为记录数组的选项的值写入其中,该记录包含另一个记录的数组,因此您只能使用数据字符串手动进行编码。

option dns-search-domains code 119 = string;
option dns-search-domains concat(
    encode-int(4,1), "corp", encode-int(7,1), "example", encode-int(3,1), "com", encode-int(0,1),
    encode-int(7,1), "example", encode-int(3,1), "com", encode-int(0,1)
    );

应该(未经测试)生成两个项目的搜索列表。

  1. dnsmasq DHCP指令

去做

配置静态配置的计算机:

  1. 视窗

去做

  1. Linux / Unix

编辑/etc/resolv.conf并确保(1)“ domain corp.example.com”是第一行,(2)添加/编辑“ search”行以包括该corp.example.com域,(3)在其中添加“ options ndotes:2”行减少DNS服务器上的负载。

domain corp.example.com
search corp.example.com exmaple.com
options ndots:2

配置DHCP客户端在其他DHCP服务器上工作时

适用于Windows,Linux等的TODO填写。

步骤7:测试,测试,测试!

现在,用户应该能够指定:

http:// go / foo http://go.example/foo http://go.example.com/foo

实际上,作为置信度测试,您需要在所有情况下测试这些URL:

( each OS you support ) * ( internal LAN / at an Internet cafe / while on the VPN )

步骤8:其他建议

最后,一个建议:即使您做http://go/foo得很完美,当有人尝试在您未配置为强制进行DNS搜索的计算机上键入链接时,您仍然有可能无法使用链接包含您的域的路径。因此,您应该使用完整的URL发布链接:http://go.example.com/foo; 并花时间教育您公司的PR部门和其他部门,始终以这种方式进行指定。

或者至少将它们编码为HTML,以使“ go”在链接文本中可见,但是实际的HREF指向FQDN:

<a href="http://go.example.com/lunch">go/lunch</a>

教导PR部门的人员这样做可能很困难。您可能只是想告诉他们,他们必须go.example.com在写的任何内容中使用长版本(),因为短的“ go / lunch”仅是偶然的原因。

步骤8:HTTPS

待办事项:弄清楚如何使用HTTPS(要获得正确的认证,即使不是不可能的,认证也将非常困难)。


2
如果它要求客户启用您的特定搜索路径,那么它将永远不会飞。如果您真的想这样做,请购买自己的短TLD-仅需$ 280k的剪报
Alnitak 2010年

1
我应该解释这是针对企业用户的,而不是公共服务的。
TomOnTime 2010年

6
汤姆,您好,我们通常建议您提出问题,然后提出您的解决方案作为答案。这样一来,它就可以被投票并被标记为已接受:serverfault.com/faq(`提出和回答自己的问题也很好,但假装您正处于危险之中:以问题的形式表达出来。)
马克·亨德森

1
并且... Tom现在被介绍到“这不是问题,它不属于serverfault meme。” 欢迎来到水冷却器。太棒了,汤姆。+1。
约瑟夫·科恩

2
@TomOnTime也许您可以将“问题”和“解决方案”分解为一个问题和一个答案。那会让每个人都开心!谢谢!
splattne 2010年

Answers:


3

该问题应以一种或另一种方式标记为“已回答”。这样,https://serverfault.com/未答复的 URL将保持正确。请(发布并)接受此问题的“答案”。谢谢!

我的“答案”将是,构建(或安装)链接缩短服务非常容易,而不是跳过上面的所有步骤,只需在Web服务器上设置一个响应“去”的本地链接缩短器即可。 example.com”,并确保您的DNS回答了search example.com。这样,您就不会向内部泄漏内部URL。(可能我错过了重点。)

备择方案:

  • 对于非常小的公司或工作组,请向每个人询问自己喜欢的书签,并找到一些空间将其放在Intranet主页上。

  • 或者,将您的小型公司或集团的Intranet部署为Wiki,并提供方便的共享热链接列表,以帮助人们到达可能的目的地。

干杯,-丹尼

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.