准备
curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
安装内核
wget https://www.cloudy.pub/down/files/kernel/centos7/kernel-ml-4.17.3-1.el7.elrepo.x86_64.rpm wget https://www.cloudy.pub/down/files/kernel/centos7/kernel-ml-devel-4.17.3-1.el7.elrepo.x86_64.rpm wget https://www.cloudy.pub/down/files/kernel/centos7/kernel-ml-headers-4.17.3-1.el7.elrepo.x86_64.rpm rpm -ivh kernel-ml-4.17.3-1.el7.elrepo.x86_64.rpm rpm -ivh kernel-ml-devel-4.17.3-1.el7.elrepo.x86_64.rpm rpm -ivh kernel-ml-headers-4.17.3-1.el7.elrepo.x86_64.rpm reboot
安装Wireguard
yum install epel-release yum install wireguard-dkms wireguard-tools echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p
配置服务端相关参数,创建并编辑配置服务端相关参数
mkdir /etc/wireguard cd /etc/wireguard wg genkey | tee privatekey | wg pubkey > publickey chmod 777 -R /etc/wireguard vi /etc/wireguard/wg0.conf [Interface] PrivateKey = <Private Key> #此处不是路径,直接输入私钥内容 Address = 10.200.200.1/24 ListenPort = 56660 SaveConfig = true
启动服务端
wg-quick up wg0
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.200.200.1/24 masquerade'
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT
firewall-cmd --reload
将-WireGuard-设置成开机启动”>将 WireGuard 设置成开机启动
systemctl enable wg-quick@wg0
配置客户端相关参数,创建并编辑 /etc/wireguard/wg0.conf ,内容如下:
[Interface] PrivateKey = <Private Key> Address = 10.200.200.3/24 DNS = 8.8.8.8 [Peer] PublicKey = xxxxxxxxxx Endpoint = <Server Public IP>:56660 AllowedIPs = 0.0.0.0/0 其中PrivateKey
也是通过命令wg genkey > privatekey
生成,Peer
的PublicKey
填入上面服务端wg
命令返回的public key
,Endpoint
的 IP 设置为服务端可访问的公网 IP 。
启动客户端 WireGuard
wg-quick up wg0
systemctl enable wg-quick@wg0
在服务端添加客户端信息
wg set wg0 peer <Public Key> allowed-ips 10.200.200.3/32
Public Key
是客户端的公钥。 如果在服务端配置信息里设置了 SaveConfig = true
那么刚才添加的客户端参数信息会在服务端关闭时自动保存到配置文件中。如果想立即存储刚设置的参数也可以执行命令 wg-quick save wg0 。
注:
能够提供类似 TCP keepalive 的功能,如果客户端在 NAT 子网可以考虑开启这一选项
WireGuard 目前仅实现了 Linux 内核模块版本,所以目前客户端仅支持部分 Linux 和 Android 。