Linux:阻止某些应用程序/主机名的IPv6

前端之家收集整理的这篇文章主要介绍了Linux:阻止某些应用程序/主机名的IPv6前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题和目标

我们没有从我们的ISP获得IPv6,因此我有一个IPv6隧道工作正常但当然不是很快.并不是真的可靠.我希望“以防万一”提供IPv6,但我希望某些主机(域)仅与IPv4连接.

默认协议

在我看来,所有应用程序都首先尝试IPv6;这可能是一个glibc设置.如果违反此默认值(对于所有应用程序),我会没事的.

Netfilter的

使用Netfilter阻止IPv6地址/网络是可能的,但有两个问题:

>当应用程序在尝试IPv4之前等待IPv6超时时,是否会导致延迟?
>有些域似乎是混乱的,看起来像混乱.如果可以避免,将google.com和youtube.com分开似乎是你不想做的事情.

我只是注意到ip route的手册页说的路由类型无法访问:

The local senders get an EHOSTUNREACH error.

Netfilter DROPs或REJECTs会发生同样的情况吗?这样的错误不应导致相关的延迟.

DNS过滤

另一种解决方案(如果可能的话,相当简单)可以过滤某些域的AAAA记录.如果这不是(轻松)可能:是否可以连接DNS服务器和Netfilter,以便我知道“IP地址X属于域Y”,以便我可以将其添加到Netfilter?还有什么比记录所有东西和点击日志更优雅?

要走的路?

有哪些(其他)可能性,最简单的是什么?

解决方法

您可以使用 /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

最后一行给出了所有IPv4地址的最低优先级.

如果要为所有IPv4提供更高的首选项,可以将其更改为:

precedence ::ffff:0:0/96  100

如果您只想对特定的IPv4地址或块提供更高的优先级,您也可以指定它们.请记住,您必须使用十六进制的IPv4映射IPv6.

因此,要优先考虑所有IPv6的203.0.113.0/24,您需要添加

label ::ffff:cb00:7100/120 5
precedence ::ffff:cb00:7100/120 100

重新启动运行的应用程序,让他们获取您所做的更改.

在Debian派生系统上,/ etc / gai.conf已经存在.在Red Hat派生系统上,它不存在,但是示例文件位于/usr/share/doc/glibc-common-*/gai.conf;只需将其复制到/ etc.

猜你在找的Linux相关文章