IPv6 的 IP 规则

IPv6 的 IP 规则

当我尝试在 Linux 系统上添加 IPv6 的 IP 规则时,出现错误:

$ ip -6 rule add fwmark 0xfab lookup 0xf
RTNETLINK answers: Address family not supported by protocol

我查看了IP规则代码;它向内核发出一条 netlink 消息。可能我需要加载一些模块,但我不知道是哪个。我需要做什么来解决这个问题?

我正在使用从内核源代码构建的 linux 2.6.37.3

解决方案:默认情况下,linux 版本不支持 IPv6 的多个路由表。您需要启用 CONFIG_IPV6_MULTIPLE_TABLES 才能支持多个 IPv6 路由表。

答案1

IPv6 功能可通过 ipv6 内核模块提供给系统。要检查该模块当前是否已加载到您的系统中,请以 root 身份发出以下命令:

lsmod | grep ipv6

如果您在其输出中看到 ipv6,则表明该模块已加载。

检查 /etc/modprobe.conf 并查看 ipv6 是否已禁用。

alias ipv6 off
options ipv6 disable=1

它应该是

alias net-pf-10 ipv6

进一步检查接口特定的配置文件:(如果您使用的是 RedHat 风格的发行版,如 Fedora、CentOS 等)

/etc/sysconfig/network-scripts/ifcfg-eth0

IPV6INIT=yes
IPV6_AUTOCONF=yes

/etc/sysconfig/network文件中,如果存在:

NETWORKING_IPV6=yes

然后重新启动network服务并重新启动系统以干净地加载ipv6内核模块。

答案2

我不认为lookup这是任何对象的有效选项ip。规则的操作包括tablenatprohibit recjectunreachablerealms从你的命令形式来看我预计你想要的table。尝试

ip -6 rule add fwmark 0xfab table 0xf

相关内容