Answers:
由于这是标记为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
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确实是互联网的字面意思。
查找将由您的DNS(可能还有本地主机文件)处理。是否将特定名称解析为IPv6或IPv4地址取决于浏览器的设置(它是否支持IPv6并发送IPv6 AAAA请求,您的操作系统(是否甚至还有IPv6堆栈)以及您的浏览器。 DNS提供程序(它们是否支持AAAA(IPv6)请求)。
由于一些(较旧的)浏览器从不发出AAAA查找请求,而某些浏览器可以配置为不发送它们(firefox具有此设置),但大多数现代浏览器会先发送AAAA请求并进行后续处理,从而使浏览器问题更加复杂。一个A请求。
C:\Windows\System32\drivers\etc
。但它是空的。