风云资源站

Centos 7搭建Wireguard

准备

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 。



				

我要评论