我正在尝试创建 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.9
,iproute2
版本是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 句柄,可以解决这个问题。