Hau*_*ing 8 domain-name-system linux iptables ipv6 glibc
问题与目标
我们没有从我们的 ISP 获得 IPv6,因此我有一个 IPv6 隧道,它工作正常,但当然不是很快。而且不是很可靠。我喜欢“以防万一”提供 IPv6,但我希望某些主机(域)仅与 IPv4 连接。
默认协议
在我看来,所有应用程序都首先尝试 IPv6;这可能是 glibc 设置。如果这个默认值被反转(对于所有应用程序),我会很好。
网络过滤器
可以使用 Netfilter 阻止 IPv6 地址/网络,但有两个问题:
我只是注意到手册页ip route说的是路由类型unreachable:
本地发件人收到 EHOSTUNREACH 错误。
Netfilter DROP 或 REJECT 是否也会发生同样的情况?此类错误不应导致相关延迟。
DNS过滤
另一种解决方案(如果可能的话,相当简单)是过滤某些域的 AAAA 记录。如果这不是(很容易)可能:是否可以连接 DNS 服务器和 Netfilter,以便我知道“IP 地址 X 属于域 Y”,以便我可以将其添加到 Netfilter?有什么比记录所有内容和 grep 日志更优雅的事情吗?
要走的路?
有哪些(其他)可能性,什么是最简单的?
Mic*_*ton 17
您可以使用 控制地址选择/etc/gai.conf。配置文件有据可查,并且已经包含默认值,因此您可以开始调整。
这里有趣的默认值是:
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
Run Code Online (Sandbox Code Playgroud)
最后一行对所有 IPv4 地址的优先级最低。
如果您想对所有 IPv4 给予更高的优先级,您可以将其更改为:
precedence ::ffff:0:0/96 100
Run Code Online (Sandbox Code Playgroud)
If you only wanted to give higher preference to specific IPv4 addresses or blocks, you can specify them as well. Remember that you have to use an IPv4-mapped IPv6 in hex.
So, to give preference to 203.0.113.0/24 over all IPv6, you would add:
label ::ffff:cb00:7100/120 5
precedence ::ffff:cb00:7100/120 100
Run Code Online (Sandbox Code Playgroud)
Restart running applications to have them pick up changes you make.
On Debian derived systems, /etc/gai.conf is already present. On Red Hat derived systems, it is absent, but a sample file is located at /usr/share/doc/glibc-common-*/gai.conf; just copy it to /etc.
好吧,这是一个完全不同的答案。
将具有糟糕 IPv6 连接的违规主机/etc/hosts与其对应的 IPv4 地址放在一起。
例如:
199.7.53.74 whois.verisign-grs.com
Run Code Online (Sandbox Code Playgroud)
请记住在它们(在这种情况下)或您的 IPv6 连接改善时删除它们。
| 归档时间: |
|
| 查看次数: |
2048 次 |
| 最近记录: |