娃哈哈好喝-真的!
技术够用就行,吃好喝好睡好!

centos7上部署wireguard vpn

1、系统环境准备

需要装个kernel-plus的内核

yum源可以使用阿里的
yum install -y yum-utils epel-release
yum-config-manager --setopt=centosplus.includepkgs=kernel-plus --enablerepo=centosplus --save
sed -e 's/^DEFAULTKERNEL=kernel$/DEFAULTKERNEL=kernel-plus/' -i /etc/sysconfig/kernel
yum install -y kernel-plus wireguard-tools
# 装完重启
reboot
2、配置密钥

wireguard是需要每个用户配置一个密钥对,当然也可以共用一个,这里以2个用户为例

wireguard的配置文件在/etc/wireguard/,所以我们生成的密钥也可以放在这里

# 先设置目录的umask
[root@centos wireguard]# umask 077
# 创建服务器的公钥和私钥
[root@centos wireguard]# wg genkey | tee server_private.key| wg pubkey > server_public.key
# 创建用户1的
[root@centos wireguard]# wg genkey | tee user1_private.key| wg pubkey > user1_public.key
# 创建用户2的
[root@centos wireguard]# wg genkey | tee user2_private.key| wg pubkey > user2_public.key

生产的这些密钥文件就是个文本文件,可以cat查看内容

[root@centos wireguard]# ll
total 28
-rw------- 1 root root  45 Feb 20 22:49 user1_private.key
-rw------- 1 root root  45 Feb 20 22:49 user1_public.key
-rw------- 1 root root  45 Feb 20 22:49 user2_private.key
-rw------- 1 root root  45 Feb 20 22:49 user2_public.key
-rw------- 1 root root  45 Feb 20 16:14 server_private.key
-rw------- 1 root root  45 Feb 20 21:44 server_public.key
[root@centos wireguard]# cat server_public.key
PmY+ZwPpdbtazptXq8nymRMVQ0soxSSge95JTo9jUDU=
[root@centos wireguard]# 
3、配置服务端

手动创建一个配置文件,这里以wg0.conf为例,还是在/etc/wireguard/目录

先看一下你的网卡名称叫什么,大部分是eth0,这里以eth0为例

# 服务端配置
[Interface]
# 服务器的私钥,也就是上面生成的server_private.key里的内容
PrivateKey = MDGqXpcIilqRSQKppqGYRJH0cd2tCPTkfDqoXn7o1mM=
# 服务器的内网地址,就算有公网ip的也写内网
Address = 192.168.100.1
# 监听端口,这里是udp协议
ListenPort = 12345
# 服务端的dns可以根据实际情况自己设定
DNS = 8.8.8.8
MTU = 1420

# 这是服务启动时设置的iptables规则,如果你不希望客户端访问外网可以不用配置
# 这里网卡名称为eth0,根据实际情况修改
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 服务停止时删除的iptables规则,注意网卡名称
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

########### 以下为各个客户端信息 ###########
# 客户端-1
[Peer]
# user1_private.key的文件内容
PublicKey =  MH1cnsaiWcxn9yf1xN7d9lNO7gCh4Nad7fpXV3SGS2Y=
这里的ip是手动给用户分配的虚拟ip,可以自定义
AllowedIPs = 10.0.10.201/32

# 客户端-2
[Peer]
# user2_private.key的文件内容
PublicKey =  MBIthdDuDVfqakEPamx2DZESrvQZHCmrag5nWVEmRmE=
AllowedIPs = 10.0.10.202/32

配置文件保存后可以直接启动服务了

[root@centos wireguard]# wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 192.168.100.1 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] mount `8.8.8.8' /etc/resolv.conf
[#] ip -4 route add 10.0.10.2/32 dev wg0
[#] ip -4 route add 10.0.10.1/32 dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE
# 使用wg可以查看服务状态
[root@centos wireguard]# wg
interface: wg0
  public key: PmY+ZwPpdbtazptXq8nymRMVQ0soxSSge95JTo9jUDU=
  private key: (hidden)
  listening port: 12345

peer: ZsHur/JuetvICTQzHg5jozIDAA2cgXFeOXc90sb6rF4=
  allowed ips: 10.0.10.1/32

peer: IishBtOOmrXZOuma9NxKGkfnwNb/V5N/kJNV/Eh91Dg=
[root@centos wireguard]# 

出现上面的信息说明启动完成

也可以设置开机自动启动

[root@centos wireguard]# systemctl enable wg-quick@wg0
4、客户端配置

首先下载客户端,下载地址:https://www.wireguard.com/install/

这里以macos为例,macos需要在apple的商店下载,其他地方下载的dmg文件的方式还没找到,等找到再补充

客户端下载好之后可以将下面的配置保存成文件导入到客户端中,这里以用户1的配置为例

[Interface]
# 服务器分给本客户端的ip
Address = 10.0.10.201/32
# 服务端生成的用户1的user1_private.key
PrivateKey = MH1cnsaiWcxn9yf1xN7d9lNO7gCh4Nad7fpXV3SGS2Y=
DNS = 8.8.8.8

[Peer]
# 这里写服务器的公钥,server_public.key
PublicKey = PmY+ZwPpdbtazptXq8nymRMVQ0soxSSge95JTo9jUDU=
# 服务器的公网ip地址和端口
Endpoint = 100.200.100.200:12345
# 这个代表允许本机所有流量可以经过vpn
AllowedIPs = 0.0.0.0/0
# 检测连接的间隔时间,单位是秒
PersistentKeepalive = 25

导入客户端就可以连接了

赞(0)
未经允许不得转载:娃哈哈好喝 » centos7上部署wireguard vpn
分享到: 更多 (0)