我刚刚使用 Freenom 注册了一个免费域名,我计划将其用于我的单台设备,该设备既是 FTP 服务器又是 HTTP 服务器。我已设置以下 DNS 记录(未使用真实名称):
|NAME | TYPE | TARGET |
----------------------------------
| www | A | 99.99.99.99 |
| | CNAME | www.foo.tk |
当我输入 foo.com 或 www.foo.tk 时,我可以访问服务器上运行的网站。但当我想访问 FTP 服务器时,我总是必须输入ftp://foo.tk或者ftp://www.foo.tk。
现在我想要做的是,我可以通过输入例如 ftp.foo.tk 来访问我的 FTP 服务器,通过输入 web.foo.tk 来访问 HTTP 服务器
有可能吗?如果可以,该怎么做?
答案1
我建议对不同的服务使用不同的 IP,即使在同一台机器上运行它们。
当然,如果可能的话。否则,您可以为 ftp 服务使用另一个 CNAME 记录,但是:
- 两个名称的 IP 相同
- 即使使用相同的 IP,Web 服务器也可以管理不同名称的不同 Web 服务(配置取决于您使用的服务器)
- ftp 协议不知道域名,只知道它正在监听的 IP,因此它对每个域名的工作方式都相同(ftp://ftp.foo.tk,ftp://www.foo.tk和ftp://foo.tk)。
因此 DNS 条目看起来会像这样。
|NAME | TYPE | TARGET |
----------------------------------
| www | A | 99.99.99.99 |
| ftp | CNAME | www.foo.tk |
| | CNAME | www.foo.tk |
答案2
这种设置有时会起作用,但如果服务器有缓存,许多服务器就会抱怨它并给出错误的结果。
DNS 标准不支持使用与任何其他记录同名的 CNAME 记录,因为 CNAME 应该代表另一个名称的别名(而不仅仅是“A”记录类型)。您的区域“foo.tk”至少需要名称 foo.tk 上的 SOA 记录,因此它不能有 CNAME。
www.foo.tk. CNAME foo.tk. is OK
foo.tk. CNAME www.foo.tk. is NOT OK
简单的解决方法就是将其设置为正好相反:
|NAME | TYPE | TARGET |
----------------------------------
| | A | 99.99.99.99 |
| www | CNAME | foo.tk |