IP/GRE 在内核中编译,但 gre0 接口不存在

IP/GRE 在内核中编译,但 gre0 接口不存在

我正在尝试创建 IP over GRE 隧道,但是没有这样的设备:

ip tunnel add gre0 mode gre remote 192.168.152.22 local 192.168.152.21 ttl 255
ioctl: No such device

我已经在我的内核中编译了 GRE 支持:

CONFIG_NET_IPGRE_DEMUX=y
CONFIG_NET_IPGRE=y
CONFIG_NET_IPGRE_BROADCAST=y

虽然我看到了所有可用的网络接口(包括尚未升级的接口),但gre0通过显示接口时却没有接口。ifconfig -a

我的内核版本是2.6.30.9iproute2版本是2-2.6.33

编辑: ip tunnel show显示:

ip tunnel show
ioctl: Invalid argument
tunl0: ip/ip  remote any  local any  ttl inherit  nopmtudisc
sit0: ipv6/ip  remote any  local any  ttl 64  nopmtudisc 6rd-prefix 2002::/16

答案1

问题在于 ip_gre 所需的 GRE 解复用器模块。当内核加载 GRE 解复用器驱动程序时,会注册协议 47 句柄,因此当 ip_gre.c 尝试执行相同操作时会失败,因为它之前已注册过。通过修改 ip_gre.c 以不注册协议 GRE 句柄,可以解决这个问题。

相关内容