CentOS7全新安装WireGuard配置多用户

323

一 更新系统及内核(可选)

安装内核,注意:这里要安装对应你系统内核的版本

#Option 1

yum install kernel-headers-$(uname -r) kernel-devel-$(uname -r)

#Option 2

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重启一下。

-------------------我是用的CentOS7系统已经安装好了,直接从这里开始----------------------

我的系统连wget都没有,在执行上面的命令的时候提示

-bash: wget: command not found

这时候需要先安装一下wget,然后再执行上面的命令。

yum install wget

我在启动wg过程中发现错误:wireguard RTNETLINK answers: Operation not supported,需要更新一下系统的内核和软件。

yum -y update

然后reboot重启。

二 安装WireGuard

 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
 yum install wireguard-dkms wireguard-tools

完成后需要用modprobe wireguard && lsmod | grep wireguard检测一下,如果提示modprobe: FATAL: Module wireguard not found.则安装失败。

WireGuard依赖kernel-headers包,检测是否安装使用命令

dkms status

三 生成密钥

wg genkey | tee serverkey | wg pubkey >> serverkey

cat tempkey,可以看到两行密钥,第一行是privatekey,第二行是publickey

同样,如果有多个客户端你这里也可以照葫芦画瓢生成出几对Key

wg genkey | tee clientkey1 | wg pubkey >> clientkey1

四 配置文件

服务端

通过 vi /etc/wireguard/wg0.conf,添加以下内容

[Interface]
Address = 192.168.2.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820 #设置端口
PrivateKey = <!--Server PrivateKey-->

[Peer]
PublicKey = <!--Client1 PublicKey-->
AllowedIPs = 192.168.2.3/32

[Peer]
PublicKey = <!--Client2 PrivateKey-->
AllowedIPs = 192.168.2.5/32

客户端

[Interface]
Address = 192.168.2.3/24
DNS = 8.8.8.8
PrivateKey = <!--Client1 PrivateKey-->
[Peer]
AllowedIPs = 0.0.0.0/0
Endpoint = <!--Server Public IP-->:51820
PublicKey = <!--Server PrivateKey-->

五 网络及防火墙配置

端口转发

sysctl -w net.ipv4.ip_forward=1
sysctl -p

防火墙规则配置

创建wireguard服务:vi /etc/firewalld/services/wireguard.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>wireguard</short>
  <description>WireGuard (wg) custom installation</description>
  <port protocol="udp" port="51820"/>
</service>

设置规则

firewall-cmd --zone=public --add-service=wireguard --permanent
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --reload
firewall-cmd --list-all

五 WireGuard服务管理

wg-quick up wg0    #启动
wg-quick down wg0    #关闭
systemctl enable wg-quick@wg0    #自启动

Post Comment