是什么决定FQDN是解释为IPv6还是IPv4?


9

当我在URL栏中键入完全限定域名(FQDN)时,浏览器将连接到一些映射表(该表存储在哪里?服务提供商在其中?),该表确定了托管请求文件的位置。

因此,是否支持IPv6地址取决于服务提供商(我假设它具有转换表)。真的吗?

Answers:


7

由于这是标记为iptables的,因此我认为这是一个Linux问题。

在Linux上,由glibc决定针对给定主机名的程序是先查找IPv6地址(AAAA)还是查找IPv4地址(A)。使用glibc的程序使用getaddrinfo()函数。在/etc/gai.conf中配置了getaddrinfo()的行为。

在您的系统上,很可能将/etc/gai.conf中的所有内容都注释掉了。取消注释条目:

标签:: / 0 1

对我而言,它导致了AAAA优先查找的激活,因此优选查找IPv6地址。所以这可能就是您想要的。

更新以添加:正确的方法似乎是用0到7的值取消注释gai.conf中的整个“ label”块:

label ::1/128       0
label ::/0          1
label 2002::/16     2
label ::/96         3
label ::ffff:0:0/96 4
label fec0::/10     5
label fc00::/7      6
label 2001:0::/32   7

4

IPv4地址通过DNS(域名系统)中的A(地址)记录映射到域名。使用AAAA记录映射IPv6地址。看起来很奇怪?IPv4地址是32位,IPv6是128位。128/32 = 4,因此AAAA / A = 4。设计DNS中IPv6条目的人的聪明技巧。

DNS是遍布整个Internet的分层分布式系统。您的浏览器将调用系统库,从而启动查找链。它将首先检查其本地缓存,通常存储在内存中。接下来,它寻找磁盘并查看HOSTS文件(在大多数UNIXes / Linux上为/ etc / hosts,在Windows上为C:\ Windows \ System32 \ drivers \ etc \ HOSTS)。然后,如果仍然找不到答案,则会根据您的网络配置呼叫分配给您的DNS服务器。

DNS服务器会检查其缓存,该缓存要大得多。如果匹配,则返回答案。如果找不到答案,它将转过身,并询问由ISP的ISP运行的更高级别的DNS服务器。这个过程一直持续到您a.root-servers.net通过进入根名称服务器为止m.root-servers.net。大多数DNS查询都是在很久以前就解决了,但是有时一两个就可以了。但是,当找到答案时,它会直接从该链向下传递到您的浏览器。

但如何做您的浏览器知道哪些记录类型的请求?这取决于您的系统设置。如果已将其设置为IPv4堆栈的优先级,则浏览器将仅在其DNS查询中询问A记录。如果是IPv6,它将先请求AAAA记录,然后再请求A记录。

也有其他记录类型。MX记录定义域的邮件服务器的位置。NS记录定义域的名称服务器。SRV记录告诉您特定服务(例如SSH或Web)的位置。

DNS确实是互联网的字面意思。


2

查找将由您的DNS(可能还有本地主机文件)处理。是否将特定名称解析为IPv6或IPv4地址取决于浏览器的设置(它是否支持IPv6并发送IPv6 AAAA请求,您的操作系统(是否甚至还有IPv6堆栈)以及您的浏览器。 DNS提供程序(它们是否支持AAAA(IPv6)请求)。

由于一些(较旧的)浏览器从不发出AAAA查找请求,而某些浏览器可以配置为不发送它们(firefox具有此设置),但大多数现代浏览器会先发送AAAA请求并进行后续处理,从而使浏览器问题更加复杂。一个A请求。


在Windows Vista的哪里可以找到我的本地主机文件?
Lazer

好的,在这里找到它C:\Windows\System32\drivers\etc。但它是空的。
拉泽尔

%SYSTEMROOT%\ System32 \ drivers \
etc-

2
它通常是空的-如果绝对需要,则添加条目,您确实要将IPv6名称解析留给DNS。
赫尔维克
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.