CentOS7全新安装WireGuard配置多用户
一 更新系统及内核(可选)
安装内核,注意:这里要安装对应你系统内核的版本
#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 #自启动