WireGuard是一个极简而快速的加密VPN实现,以Linux内核模块的形式运行,比起传统的 IPSec、OpenVN 等,效率更高、搭建更便捷,通过UDP协议进行数据传输,即使IP被墙也能使用。通过在两台服务器之间组建WireGuard隧道,变成伪 IPLC专线,这种利用软件手段实现的也叫做MPLS专线。
安装WireGuard
yum update -y && yum install curl -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目录,由于Wireguard通信需要依靠公钥和私钥进行相互鉴权,所以我们需要在服务器上生成公钥和私钥文件,执行下列命令:
cd /etc/wireguard
wg genkey | tee privatekey | wg pubkey > publickey
chmod 777 -R /etc/wireguard
配置服务端/客户端
这里的服务端和客户端是对等的,服务器既可叫客户端也可叫服务端(意思就是可以相互连接),我们这里为了区分定义为:国内机为客户端,国外机为服务端;文章源自技术白-https://jishubai.com/112.html
1、在服务端和客户端的/etc/wireguard目录下分别创建一个名称为wg0.conf的文件,直接命令行输入下列命令:
在服务端也就是国外机的wg0.conf文件输入以下内容,在命令行输入cat privatekey和cat publickey命令可分别查看内容,##号及后面为注释内容,不用复制粘贴这个内容;
[Interface]
Address = 192.168.1.1/24 ##这里是自定义的服务端内网IP
[Interface]
Address = 192.168.1.1/24
ListenPort = 51820
PrivateKey = < 这里填写 服务端 上 privatekey 的内容 >
DNS = 1.0.0.1
MTU = 1300
# Client
[Peer]
PublicKey = < 这里填写 客户端 上 publickey 的内容 >
AllowedIPs = 192.168.1.1/24
在客户端的也就是国内机的wg0.conf文件内容如下:
[Interface]
PrivateKey = < 这里填写 客户端 上 privatekey 的内容 >
Address = 192.168.1.2/24
DNS = 1.0.0.1
MTU = 1300
# Server
[Peer]
PublicKey = < 这里填写 服务端 上 publickey 的内容 >
Endpoint = <填写服务端公网IP>:51820
AllowedIPs = 192.168.1.1/24
PersistentKeepalive = 25
最后在两台服务器上分别输入下方启动命令启动服务:
wg-quick up wg0 ##启动wg0虚拟网卡
wg-quick down wg0 ##关闭wg0网络
wg ##查看当前的运行情况
5、输入wg命令可以查看到隧道已建立,可以互相在服务器上ping对方的内网IP查看是否有延时数据,比如在192.168.1.1服务器上输入:ping 192.168.1.2
隧道中转:此时在国外服务器中,搭建各类服务或转发流量到其它机器,通过国内机公网IP连接,流量就会通过WG内网隧道传输。