CentOS 利用 Wireguard 搭建内网隧道

date
Dec 2, 2019
slug
centos-create-pipeline-with-wireguard
status
Published
tags
折腾
summary
随着每况愈下的网络环境,最近“隧道”这个名词好像提及频率很高。经过网上的搜索后发现,Wireguard好像是最近不久才出来的隧道技术,因为是内核级的运行机制所以效率很高,看到官方的性能描述甚至比OpenVPN高了几个维度,于是便打算尝试
type
Post
随着每况愈下的网络环境,最近“隧道”这个名词好像提及频率很高。经过网上的搜索后发现,Wireguard好像是最近不久才出来的隧道技术,因为是内核级的运行机制所以效率很高,看到官方的性能描述甚至比OpenVPN高了几个维度,于是便打算尝试。 官方的文档暂时都是英文的,网上相关的操作centos上的也比较少,很多解释的地方也不够多。自己摸着石头过河,把服务基本调通了,用文档来记录一下踩过的坑。

安装

根据官方的文档,安装只需要执行几个命令,用yum可以全部搞定。直接按照官网的方式安装 yum update -y reboot # unless there were no updates curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo yum install epel-release -y yum install wireguard-dkms wireguard-tools -y
因为Wireguard对内核的版本有要求,部分操作也需要自定义内核做支持,所以部分bbr内核不支持自定义的是没法安装了。利用yum安装的时候会把内核升级到最低版本要求(如果比最低版本低的话),所以常规安装后不需要再去特定调整内核,但是不要在日后的软件安装中进行内核的更换就好了。

生成秘钥

Wireguard默认的配置目录在/etc/wireguard,好像Ubuntu和Debian利用管理包安装后都会自动创建这个目录(看别的文档好像是这样的,未实践)。在centos上用yum安装后没有创建这个目录,于是我们需要手动创建一个 mkdir /etc/wireguard cd /etc/wireguard Wireguard通信依靠公钥和私钥进行相互鉴权,在程序里已经提供了秘钥生成的接口,直接调用就可以 wg genkey | tee privatekey | wg pubkey > publickey chmod 777 -R /etc/wireguard 这时候,文件夹里就会有publickeyprivatekey两个文件了,这个就是程序自动生成的公钥和私钥文件,可以直接使用。

配置客户端

这里说的客户端和服务端其实没有一个绝对的概念,连接以后就是双端对等的了,但是为了方便就还是假定一个主从的关系。 每个虚拟的网卡都会读取以名字命名、保存在配置目录的conf文件,假设执行设置wg0网卡,程序会自动寻找/etc/wireguard/wg0.conf的配置文件,并读取相应的配置。让我们自己创建一个: vi wg0.conf 这个配置文件在服务端和客户端都要相应创建,名字可以是一样的,但是配置的信息稍有差别 服务端上的wg0.conf [Interface] Address = 192.168.1.1/24 ListenPort = 51820 PrivateKey = < 这里填写 Server 上 privatekey 的内容 > DNS = 1.0.0.1 MTU = 1300 # Client [Peer] PublicKey = < 这里填写 Client 上 publickey 的内容 > AllowedIPs = 192.168.1.1/24 客户端上的wg0.conf [Interface] PrivateKey = < 这里填写 Client 上 privatekey 的内容 > Address = 192.168.1.2/24 DNS = 1.0.0.1 MTU = 1300 # Server [Peer] PublicKey = < 这里填写 Server 上 publickey 的内容 > Endpoint = 1.1.1.1:51820 AllowedIPs = 192.168.1.1/24 PersistentKeepalive = 25 操作完后,保存,就已经相当于配置好了

启动服务及设置开机自启

在设置好后,主从端都直接执行 wg-quick up wg0 服务就可以自动运行了。根据之前的配置,服务端和客户端的IP分别为192.168.1.1192.168.1.2,相互应该是可以直接利用这个内网地址ping通的了。 利用wg-quick的工具还可以设置这个虚拟内网的开机自启动 systemctl enable wg-quick@wg0
相应的常用操作还有: wg-quick down wg0 #关闭网络 wg #查看当前的运行情况

© Krist 2016 - 2024

|