一.介绍
WireGuard是个新出的隧道程序,内核级的,所以数据处理能力以及资源消耗就会很理想,而且它可以工作于一方动态IP一方静态IP的环境下,这就能够很好的利用于内网穿透的环境下。当然,有几个大佬拿它做搭隧道来实现自己的全球大内网(x, 看得我也很是羡慕
具体的介绍我不提了,感兴趣的去它的官网看看就知道了,针对以往的隧道程序做了不少方面的对比,可以看出来优势还是挺大的。 ——> 传送门
二.安装
大部分系统在WireGuard官网上都介绍了包安装和编译安装的过程,但是,心疼我Centos6,没人写怎么装,这就很气。所以我研究了下怎么装,发现"怎么又是个坑(摔 !"
首先,WireGuard是工作在KernelSpace的,所以对内核版本有着一定要求,必须在3.10版本以上,要我说就直接上4.9,带BBR多好,美滋滋。
首先这边有个大坑,还是得注意,官方表示WireGurad源码需要使用4.7以上的GCC编译,嗯,我特么怎么就没看到啊魂淡(摔,然后我第一次全套使用Centos6默认的GCC编译,出现了如下的错误
/WireGuard/src/socket.c: In function ‘socket_init’: /WireGuard/src/socket.c:343: error: unknown field ‘local_ip’ specified in initializer
在更换高版本GCC编译后成功,但是发现无法加载wireguard.ko内核,dmesg查看后发现如下报错
wireguard: loading out-of-tree module taints kernel. wireguard: Unknown symbol __fentry__ (err 0)
经过研究WireGuard的官方邮件列表中他人的报错后终于发现了一个蛋疼的问题,就是如果内核使用了低版本GCC编译,那么程序必须也要低版本,但是程序默认无法通过低版本编译,需要修改代码。所以最好就是全部高版本。这儿主要还是因为内核用的是我自己的修改版,如果是官方版本的话……也许不会有问题?
具体可以查看邮件列表对话——>传送门
官方提供了一种把WireGuard直接patch到内核中的玩法,如下
cd /path/to/kernel/source/code /path/to/wireguard/contrib/kernel-tree/create-patch.sh | patch -p1
然后会多两个内核参数,可以自行调整
CONFIG_WIREGUARD CONFIG_WIREGUARD_DEBUG
但是我想了下还是不推荐这个方法,因为WireGuard目前还是比较频繁更新的,做到内核里不利于更新,以后稳定了或许不错
PS.总结一下,两个注意点
①.内核需要高版本GCC编译,且大于3.10版本
②.代码需要高版本GCC编译,使用前通过lsmod确认模块已经加载
三.使用方法
这部分不介绍了,官方真的详细,还有手把手动画演示以及测试服务器,命令全帮你写好了,照瓢画葫就行_(:з」∠)_ ——>传送门
文章评论
很高兴看到博主的文章。在这篇博客中你提到了全球大内网。请问可以进一步解释一下全球大内网的意义吗?
@我 额,对个人来说没啥意义,这是我认识的搞专线和VPS的朋友在折腾的,主要用途就是优化线路
欢迎交流 我写了一系列文章介绍 WireGuard一键安装教程图文版 https://since1989.org/wireguard/centos-ubuntu-linux-script-install.html
@wireguard WG安装上还是比较简单的,主要是配置可能部分小白可能摸不着头脑
我使用的是cpolar,它是安全的隧道穿透工具,在开发微信公众对接时用,很方便,它还能ssh远程树莓派,还是免费的。网址:https://cpolar.com
@probezy 网站都没法访问了。。。
@Senra cpolar网址:https://www.cpolar.com 可以访问
@Senra cpolar不是开源的
大佬,我有点关于wireguard组内网的问题请教,方便留一下qq或者微信吗?