1 在centos 8安装wireguard
1.1 安装kmod-wireguard wireguard-tools
最简单的办法就是使用 ELRepo的仓库安装. 其他方法比较复杂不推荐.
sudo yum install elrepo-release epel-release
sudo yum install kmod-wireguard wireguard-tools
安装完成后,检查wireguard 模块是否正常工作.
#modprobe wireguard
#lsmod | grep wireguard
wireguard 212992 0
ip6_udp_tunnel 16384 1 wireguard
udp_tunnel 20480 1 wireguard
启用ip转发功能
#sudo vi /etc/sysctl.conf
增加一句:
net.ipv4.ip_forward=1
#sudo sysctl -p
1.2 配置服务器端
生成密匙. 下面的命令,在 /et/wireguard/目录下,生成 privatekey 和 publickey两个密匙
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
创建 /etc/wireguard/wg0.conf 文件,可以配置多个客户端
[Interface]
Address = 192.168.10.1/24
ListenPort = 服务器端口
PrivateKey = 服务器生侧使用的 privatekey
PostUp = iptables -I FORWARD -i wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
[Peer]
PublicKey = 第一个客户端到的publickey
AllowedIPs = 192.168.10.2/32
[Peer]
PublicKey = 第二个客户端到的publickey
AllowedIPs = 192.168.10.3/32
....
如果使用iptables.service打开服务器监听端口
sudo iptables -I INPUT -p udp -m udp --dport server_listen_port -j ACCEPT
如果使用firewalld,对应命令为:
sudo firewall-cmd --zone=public --add-port=port/udp
为了保证私钥的安全,请将wg0.conf和privatekey文件对普通用户不可读。
sudo chmod 600 /etc/wireguard/privatekey
sudo chmod 600 /etc/wireguard/wg0.conf
1.3 配置客户端
生成密匙. 下面的命令,在 /et/wireguard/目录下,生成 privatekey 和 publickey两个密匙
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
创建 /etc/wireguard/wg0.conf 文件
[Interface]
Address = 192.168.10.2/24
PrivateKey = 客户端 privatekey
[Peer]
PublicKey = 服务器的publickey
Endpoint = 服务器的ip:port #这个端口和服务器的监听端口一致.
AllowedIPs = 192.168.10.0/24
1.4 调试和启动
在服务区和客户端上,都执行
sudo wg-quick up wg0
用 sudo wg show wg0 命令,查看状态
服务器的命令结果:
interface: wg0
public key: I5kyw3VgcYe0E9U9qdfsfsdL+/FT6I1gV70Q1ng=
private key: (hidden)
listening port: xxxx
peer: Rp7Gus0jhjpaTAHUNiphksdfsdfc/OCLOd3XpNxSYSAY=
endpoint: client1_ip:51448
allowed ips: 192.168.10.2/32
latest handshake: 2 hours, 47 minutes, 44 seconds ago
transfer: 103.87 KiB received, 759.56 KiB sent
peer: e6Omxk8D66xZAfasdfgi9HJpTrt64tXwm9zgYE8/1goV0=
endpoint: client2_ip:46428
allowed ips: 192.168.10.3/32
latest handshake: 3 hours, 10 minutes, 24 seconds ago
transfer: 1.55 KiB received, 1.46 KiB sent
客户端查询结果
interface: wg0
public key: e6Omxk8D66xZAfasdfgi9HJpTrt64tXwm9zgYE8/1goV0 =
private key: (hidden)
listening port: xxxx
peer: I5kyw3VgcYe0E9U9qdfsfsdL+/FT6I1gV70Q1ng=
endpoint: server_ip:xxxx
allowed ips: 192.168.10.0/24
latest handshake: 3 hours, 14 minutes, 7 seconds ago
transfer: 27.35 KiB received, 39.61 KiB sent
如果没有数据,可以 在客户端 ping 192.168.10.1 这个服务器地址,测试通不通.
一切顺利后,使用下面的命令,开机启动 wireguard
sudo systemctl enable wg-quick@wg0
另外一种启动和停止wireguard服务的命令为 (代替 sudo wg-quick up wg0是一次性命令)
sudo systemctl start wg-quick@wg0
sudo systemctl stop wg-quick@wg0
sudo systemctl restart wg-quick@wg0