- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我在网站上搜索了类似的主题,并阅读了 RFC 1535 和 FQDN wiki,他们似乎没有回答问题。
让我使用www.youtube.com
举个例子。我使用的Python脚本:
import socket
for host in ["www.youtube.com"]:
print(host)
try:
hostname, aliases, addresses = socket.gethostbyname_ex(host)
fqdn = socket.getfqdn(host)
print(" Aliases : ", aliases)
print(" Hostname : ", hostname)
print(" FQDN : ", fqdn)
print("Addresses : ", addresses)
except socket.error as msg:
print("%15s : ERROR: %s" % (host, msg))
输出:
Aliases : www.youtube.com
Hostname : youtube-ui.l.google.com
FQDN : sa-in-f93.1e100.net
Addresses : ['74.125.200.93', '74.125.200.190', '74.125.200.136', '74.125.200.91']
1) 主机名和 FQDN 之间有什么关系?
根据网站http://kb.iu.edu/d/aiu (以及许多其他站点):对于邮件服务器“mymail.somecollege.edu”,主机名是“mymail”,域是“somecollege.edu”,并将这些组合在一起形成 FQDN。但显然 www.youtube.com
的情况并非如此。 。那么,FQDN 到底是什么以及所有这些名称之间的关系是什么?
2) 当我反向查找IP 74.125.200.93时,主机名变成sa-in-f93.1e100.net
。为什么反向查找将 FQDN 作为主机名?这些名称可以互换吗?
socket.gethostbyaddr('74.125.200.93')
Hostname : sa-in-f93.1e100.net
Aliases : []
Addresses : ['74.125.200.93']
3) 是 Aliases : www.youtube.com
也称为 CNAME?根据http://support.dnsimple.com/articles/cname-record/答案似乎是肯定的:
For example, if you have a server where you keep all of your documents online, it might normally be accessed through docs.example.com. You may also want to access it through documents.example.com. One way to make this possible is to add a CNAME record that points documents.example.com to docs.example.com. When someone visits documents.example.com they will see the exact same content as docs.example.com.
4) 如果确实如此,为什么我无法使用“youtube-ui.l.google.com”或“sa-in-f93.1e100.net”访问 YouTube?这是我通过直接访问主机名和 FQDN 得到的结果:
Google
404. That’s an error.
The requested URL / was not found on this server. That’s all we know.
编辑#1
抱歉回复缓慢,我仍在阅读那些 RFC 文档,并且我有一些新问题:
再次使用www.youtube.com
例如。
5)FQDN是如何生成的?每次我调用socket.getfqdn()
时,它都会查询父域直到root(动态生成)或host -t PTR
?或者它只是一个PTR记录?(好像查询FQDN依赖于反向查找)如果它是一个PTR记录,那么我如何确定它是一个FQDN,实际上它可以是FQDN,CNAME,别名,主机名或一些如果区域 dns 管理员想要这样设置,则可以使用其他名称。就像 David 和 Esa Jokinen 指出的那样(RFC 1912, 2.1),如果不执行这些规则,那么我如何确定我得到了什么?
所以我想也许查询父域直到 root 是获取 FQDN 的最可靠方法。但我怎样才能做到这一点呢?是否有可能在不使用PTR
的情况下获得FQDN? (因为它不可靠)
6)DNS查询是否可以倒退?
通常对 IP 的查询是缓存/递归服务器询问根,然后询问 TLD,然后询问子域,直到获得 IP。可以向后执行此操作吗?获得了 IP,然后以某种方式获得了子域,然后是 TLD,然后是 root,然后我获得了 FQDN?
7)FQDN和IP不是应该1对1映射吗?
这是我运行时得到的结果
host 216.58.193.78
输出:
78.193.58.216.in-addr.arpa domain name pointer sea15s07-in-f78.1e100.net.
78.193.58.216.in-addr.arpa domain name pointer sea15s07-in-f14.1e100.net.
如何将一个 IP 映射到两个 FQDN?一台机器两个FQDN,它是如何工作的?
最佳答案
无论术语 FQDN 的语义如何,我们都必须了解 Python 的 socket.getfqdn()
是什么。确实。
socket.getfqdn([name])
Return a fully qualified domain name for name. If name is omitted orempty, it is interpreted as the local host. To find the fullyqualified name, the hostname returned by
gethostbyaddr()
is checked,followed by aliases for the host, if available. The first name whichincludes a period is selected. In case no fully qualified domain nameis available, the hostname as returned bygethostname()
is returned.socket.gethostbyaddr(ip_address)
Return a triple
(hostname, aliaslist, ipaddrlist)
where hostname isthe primary host name responding to the given ip_address, aliaslist isa (possibly empty) list of alternative host names for the sameaddress, and ipaddrlist is a list of IPv4/v6 addresses for the sameinterface on the same host (most likely containing only a singleaddress).
换句话说,getfqdn()
寻找反向 PTR
不管什么,先记录一下A
或CNAME
记录首先就指出了这一点。它会查找完全限定域名 (FQDN),并简单地为您提供第一个合适的域名,即第一个以 .
结尾的域名。 ,根。
所以,FQDN : sa-in-f93.1e100.net
来自PTR
IP记录74.125.200.93
.
93.200.125.74.in-addr.arpa. 86400 IN PTR sa-in-f93.1e100.net.
此处为该主机名的 FQDN www
拥有域名youtube.com
实际上根据定义www.youtube.com.
,包括点。同样,sa-in-f93.1e100.net
不是 FQDN,因为它实际上应该是 sa-in-f93.1e100.net.
:
sa-in-f93
作为 1e100
的子域sa-in-f93.1e100
作为 net
的子域sa-in-f93.1e100.net
作为根的子域,.
.为什么sa-in-f93.1e100.net.
选择 www.youtube.com.
简单地来自socket.getfqdn()
旨在确定给定名称的 FQDN。
另一方面,规范名称 CNAME
record 按设计应该 ( RFC 1035, 3.2.2 ) 指向规范名称,但它通常被用作别名,因为它的工作方式就像一个。另外,PTR
记录应该( RFC 1912, 2.1 )给出相同的结果,因为它应该代表给定 IP 的规范名称。
只要遵守这一点,方法 socket.getfqdn()
用途是完全合适的。在这里,CNAME youtube-ui.l.google.com.
没有相应的PTR
记录( 93.200.125.74.in-addr.arpa. IN PTR youtube-ui.l.google.com.)
使这个假设错误。
关于dns - 主机名和完全限定域名 (FQDN) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45902840/
我想在 Vultr 裸机服务器中配置 oVirt。但我不知道如何配置 Engine VM FQDN。它总是告诉我 The address proposed for this host does not
完全限定的域名由socket.getfqdn() 返回. 但是:它与“hostname --fqdn”的作用不同。 下面问题的评论中有一些提示,但我想知道规范的答案。 How do I get my
我正在搜索有关如何向 Azure 中的主机提供自己的 FQDN 的文档,但似乎没有找到我需要的内容。你们如何设置 FQDN,以便可以通过该名称而不是 name.cloudapp.net 访问不同的主机
我在 http://gskinner.com/RegExr/ 找到了这个正则表达式验证 FQDN 域: (?=^.{1,254}$)(^(?:(?!\d+\.|-)[a-zA-Z0-9_\-]{1,6
我想将属性存储在 Map 中按其类,即映射应仅包含任何运行时类型的一个对象。当前已经有一个实现(它是一个现有项目),并且该机制是通过 Map 实现的。 . 当前实现: import com.foo.I
我在我的 Apache 系统上设置了一个 VirtualHost,它恰好与服务器的 FQDN 同名。这是 FQDN: root@mail:/etc/apache2/sites-available# h
给定一个主域,我尝试从字符串中提取它及其子域。 例如,对于主域 example.co 我想要: 仅提取主域名和子域名 - example.co、www.example.co、uat.smile.exa
我找到了这个 question获取本地主机的 FQDN。我的问题是,是否有任何方法可以获取与我们在 c# 中查询的主机不在同一域中的机器的 FQDN。 例如:在 machineA(在域 A 中)上运行
我有一个正则表达式来验证字符串是否为 FQDN: var fqdnRegExp = new RegExp("^([a-z0-9]+\\.)?[a-z0-9][a-z0-9-]*\\.[a-z]{2,6
情况是这样的,我正在从我的自定义广告服务器中获取广告 src = 'http://www.adserver.com/www/delivery/ajs.php?zoneid=1&cb=37930
我有一个包含三个字段的 mysql 表 host ipaddress date ---- --------- ----- ser
我正在尝试使用 https://library.linode.com/email/postfix/postfix2.9.6-dovecot2.0.19-mysql#sph_prerequisites
如何在 Go 中找到本地主机的 FQDN? 顺便说一句:net.LookupAddr() 在 Windows 上不起作用。所以这不是一个选择。 最佳答案 根据文档,函数 os.Hostname() 返
我是 Chef 和 Knife 的新手,我正在运行几个 ec2 实例并安装了 chef-client,我可以在 Chef 的节点列表中看到所有实例,但是其中有几个缺少 FQDN,这导致了很多问题,这是
我正在自动部署多个 Azure VM,并且我希望将 WinRM 添加到每个 VM 中以完成部署。如何从创建虚拟机的脚本中找到该虚拟机的 FQDN? 我正在寻找: $psVirtualMachine =
我很好奇 FQDN 是否在 Azure 中的虚拟机上持久存在,以及是否有人可以发布一个示例,它看起来如何。 即myhost-abc.vm.windows.net 我所说的持久是指它永远是一样的,永远不
问题:Cloudera Manager用FQDN名称打开Web UI链接,并且本地网络系统无法解析该名称。但是短名称和ip有效。 Hostfile: #::1 localhost lo
这是一个有点愚蠢的设置,但这是我现在正在查看的内容: 我正在学习 Kubernetes 我想将自定义代码推送到我的 Kubernetes 集群,这意味着代码必须作为 Docker 镜像提供,可从 获得
我正在使用 Apache2,当重新加载/重新启动服务器时,我收到此警告: apache2:无法可靠地确定服务器的完全限定域名,使用(我的 FQDN)作为 ServerName 一切正常,但我正在尝试找
首先,我在网站上搜索了类似的主题,并阅读了 RFC 1535 和 FQDN wiki,他们似乎没有回答问题。 让我使用www.youtube.com举个例子。我使用的Python脚本: import
我是一名优秀的程序员,十分优秀!