wireguard模块安装(CentOS8)
【摘要】 首先找一下wireguard内核模块的源码项目的地址,wireguard官方网站访问不到,github上可以访问,不过github只是镜像,实际的项目代码是可以访问的。下载最新的那个Tag:wireguard-linux-compat 是一个用于向后兼容的模块代码项目,这是因为WireGuard was merged into the Linux kernel for 5.6.This re...
首先找一下wireguard内核模块的源码项目的地址,wireguard官方网站访问不到,github上可以访问,不过github只是镜像,实际的项目代码是可以访问的。下载最新的那个Tag:
wireguard-linux-compat
是一个用于向后兼容的模块代码项目,这是因为
WireGuard was merged into the Linux kernel for 5.6.
This repository contains a backport of WireGuard for
kernels 3.10 to 5.5, as an out of tree module.
也就是说在内核版本5.6及之后,内核中已经包含了wireguard,而这个项目存在的意义,就是为了5.6之前的内核版本而存在。
而对于商业发行版,比如RHEL,RHEL9已经包含,而7、8则需要额外编译或获取内核模块。
而维护内核模块向后兼容的人员,对于Redhat也有些怨言,并会drop CentOS 8 Stream
support。(以后免费的CentOS也不会有了,这并不是坏事。)
So when Red Hat tells me, "sorry, why should we care about this? RHEL7
and 8 don't support WireGuard. Tell people to use RHEL9 for that. We're
not going to make your life easier in RHEL7 and 8. It's not supported,"
参照How to Create a VPN Tunnel with Wireguard来实际操作一下,文章里是ubuntu,我这里是在CentOS8上,回头再在鲲鹏的OpenEuler上也试一个对端
[root@ecs-d589 ~]# uname -r
4.18.0-240.10.1.el8_3.x86_64
#先安装kernel-devel开发包(这个我不确定是不是必须),但是这个小版本号和本机的发现版有区别:204 VS 408
Installed:
kernel-devel-4.18.0-408.el8.x86_64
[root@ecs-d589 ~]# ll /usr/src/kernels/
total 4
drwxr-xr-x 23 root root 4096 Aug 5 13:55 4.18.0-408.el8.x86_64
# 更新 kernel-headers。在ubuntu里是linux-headers
Upgraded:
kernel-headers-4.18.0-408.el8.x86_64
Installed:
kernel-4.18.0-408.el8.x86_64
kernel-core-4.18.0-408.el8.x86_64
kernel-modules-4.18.0-408.el8.x86_64
#编译。这里报错了,重启机器后就可以了
[root@ecs-d589 src]# make
make[1]: *** /lib/modules/4.18.0-240.10.1.el8_3.x86_64/build: No such file or directory. Stop.
#链接断链了
[root@ecs-d589 src]# ls /lib/modules/4.18.0-240.10.1.el8_3.x86_64/build -l
lrwxrwxrwx 1 root root 45 Jan 19 2021 /lib/modules/4.18.0-240.10.1.el8_3.x86_64/build -> /usr/src/kernels/4.18.0-240.10.1.el8_3.x86_64
reboot
Installed:
elfutils-libelf-devel-0.187-4.el8.x86_64
#这里有一个重复定义ktime_get_coarse_boottime_ns函数,通过注释linux自己的头文件timekeeping.h里定义的函数来解决
/usr/src/kernels/4.18.0-408.el8.x86_64/include/linux/timekeeping.h:
static inline u64 ktime_get_coarse_boottime_ns(void)
{
return ktime_to_ns(ktime_get_coarse_boottime());
}
compat/compat.h
static inline u64 ktime_get_coarse_boottime_ns(void)
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)
return ktime_to_ns(ktime_get_boottime());
#elif (LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 12) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)) || LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 53)
return ktime_to_ns(ktime_mono_to_any(ns_to_ktime(jiffies64_to_nsecs(get_jiffies_64())), TK_OFFS_BOOT));
#else
return ktime_to_ns(ktime_get_coarse_boottime());
#endif
}
编译好了之后,加载wireguard模块就可以了:
[root@ecs-d589 thirdtool]# lsmod|grep wire
wireguard 212992 0
ip6_udp_tunnel 16384 1 wireguard
udp_tunnel 20480 1 wireguard
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)