问题和目标
我们没有从ISP获得IPv6,因此我有一个IPv6隧道,工作正常,但当然不是很快。 并不是很可靠。 我喜欢有“IPv6以防万一”,但我希望某些主机(域)只能与IPv4连接。
默认协议
在我看来,所有的应用程序都首先尝试IPv6。 这可能是一个glibc设置。 如果这个默认值将被颠倒(对于所有的应用程序),我会好起来的。
Netfilter的
使用Netfilter可以阻止IPv6地址/networking,但有两个问题:
我只是注意到ip route的手册页说路由typesunreachable :
本地发件人收到EHOSTUNREACH错误。
Netfilter DROPs或REJECTs是否也发生同样的情况? 这样的错误不应该造成相关的延误。
DNS过滤
另一个解决scheme(如果可能的话,相当容易)将过滤某些域的AAAAlogging。 如果这不是(很容易):是否有可能连接DNS服务器和Netfilter,以便我知道“IP地址X属于域Y”,以便我可以将它添加到Netfilter? 比logging所有内容更精美并且logging日志?
要走的路?
哪些(其他)的可能性在那里,什么是最简单的?
您可以使用/etc/gai.conf来控制地址select。 configuration文件已经很好的logging了,并且已经包含了默认值,所以你可以开始调整。
这里有趣的默认值是:
label ::1/128 0 label ::/0 1 label 2002::/16 2 label ::/96 3 label ::ffff:0:0/96 4 precedence ::1/128 50 precedence ::/0 40 precedence 2002::/16 30 precedence ::/96 20 precedence ::ffff:0:0/96 10
最后一行给出了所有IPv4地址的最低优先级。
如果您想要给所有IPv4更高的优先级,可以将其更改为:
precedence ::ffff:0:0/96 100
如果您只想给予特定IPv4地址或块更高的优先级,则也可以指定它们。 请记住,您必须在hex中使用IPv4映射的IPv6。
因此,要优先考虑所有IPv6的203.0.113.0/24,您应该添加:
label ::ffff:cb00:7100/120 5 precedence ::ffff:cb00:7100/120 100
重新启动正在运行的应用程序,让他们select您所做的更改。
在Debian派生的系统上,/ /etc/gai.conf已经存在。 在Red Hat派生的系统上,它不存在,但示例文件位于/usr/share/doc/glibc-common-*/gai.conf ; 只是复制到/etc
好的,这是一个完全不同的答案。
将具有蹩脚IPv6连接的违规主机放置在/etc/hosts ,并将其相应的IPv4地址。
例如:
199.7.53.74 whois.verisign-grs.com
请记住在他们(在这种情况下)或您的IPv6连接改善时删除它们。