
简单介绍:
WireGuard 是新一代的虚拟专用网内核模块,它以代码极简、性能极高、配置简单著称。
它被直接集成在 Linux 内核中(5.6 版本以上),因此运行效率非常高,非常适合用于异地组网、内网穿透等使用场景。
操作系统:
Rocky Linux 10.1
WireGuard 已经内置于新版内核中,Rocky Linux 10 默认使用的是较新的内核(通常是 6.x 版本),而 WireGuard 在 Linux 内核 5.6 版本之后就已经正式合并到主线内核了。
安装配置:
1、关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
getenforce #查看 SELinux 当前运行模式
2、防火墙端口配置
Rocky Linux 10.1默认使用的是firewall作为防火墙
firewall-cmd --list-all #显示所有规则(含服务、端口、区域)
systemctl status firewalld #检查 firewalld 状态
WireGuard 服务的默认监听端口是UDP 51820
#开放端口
firewall-cmd --permanent --add-port=51820/udp
firewall-cmd --reload #重新加载防火墙配置
firewall-cmd --list-all #显示所有规则
3 开启IPV4流量转发功能
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.proxy_arp = 1" >> /etc/sysctl.conf
sysctl -p
4、安装wireguard
yum install wireguard-tools
modprobe wireguard #手动加载模块,如果没有报错(直接返回命令行),说明模块已存在且加载成功。
5、生成服务端密钥对
#创建一个目录用于存放生成的密钥对
mkdir -p /etc/wireguard/cert
cd /etc/wireguard/cert
# 生成服务端私钥server.key
wg genkey > server.key
# 使用上一步的服务端私钥生成公钥server.key.pub
wg pubkey < server.key >server.key.pub
# 查看生成的密钥对
[root@localhost cert]# cat server.key server.key.pub
uPdVDbrCYfU9l4AxVhdxEYiiDj6Ourut6x2hFG6+rlU=
21BHMnZyC/qLnpN/5eepey6VsRfCpMJpDgt0vwmehDM=
6、生成客户端的密钥对
# 客户端1私钥
wg genkey > client1.key
# 客户端1公钥
wg genkey < client1.key > client1.key.pub
# 查看生成的密钥对
cat client1.key client1.key.pub
[root@localhost cert]# cat client1.key client1.key.pub
iDj9Jq/zMs3L5QKEZOJytGalyTOjk8KWcjqkohj3VFw=
kNNmyu3ZYDirSBIWT2bB0fHHsb7NiPKt7FkDeUwJ7Gs=
[root@localhost cert]#
# 客户端2私钥
wg genkey > client2.key
# 客户端2公钥
wg genkey < client2.key > client2.key.pub
# 查看生成的密钥对
cat client2.key client2.key.pub
[root@localhost cert]# cat client2.key client2.key.pub
yDbxZkSWZhNi3M0hAuGLCIcse+lI+hoRlZ6eAwkcT0Y=
4NDqtOWzNFjmP8eu8htyWIXU954H1rA+nRY4yMCfzm0=
7、配置服务端
vi /etc/wireguard/wg0.conf
[Interface]
PrivateKey = uPdVDbrCYfU9l4AxVhdxEYiiDj6Ourut6x2hFG6+rlU= #服务端私钥server.key
Address = 10.0.188.1/32 #设置本机虚拟局域网IP,这个自己设置即可,不要与现有网段冲突就可以
#使用 %i 作为接口名占位符,确保 FORWARD 和 NAT 规则都正确配置
#注意ens160为本机网卡名称
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens160 -j MASQUERADE
ListenPort = 51820 #注意该端口是UDP端口
MTU = 1420
[Peer]
PublicKey = kNNmyu3ZYDirSBIWT2bB0fHHsb7NiPKt7FkDeUwJ7Gs= #client1的公钥client1.key.pub,后面需要修改为客户端生成的公钥
AllowedIPs = 10.0.188.2/32 #客户端所使用的IP
[Peer]
PublicKey = 4NDqtOWzNFjmP8eu8htyWIXU954H1rA+nRY4yMCfzm0= #client2的公钥client2.key.pub,后面需要修改为客户端生成的公钥
AllowedIPs = 10.0.188.3/32
:wq! #保存退出
wg-quick up wg0 # 启动命令
wg show #查看连接状态
ip a #可以看到服务器多了一个wg0网卡
wg-quick down wg0 #停止命令
8、客户端连接:
客户端下载地址:https://www.wireguard.com/install/
Windows客户端:
https://download.wireguard.com/windows-client/
https://download.wireguard.com/windows-client/wireguard-installer.exe
客户端安装完成后,新建隧道-新建空隧道
名称:client1
[Interface]
PrivateKey = iDj9Jq/zMs3L5QKEZOJytGalyTOjk8KWcjqkohj3VFw= #此处为client1的私钥client1.key
Address = 10.0.188.10/32 #此处为peer规定的客户端IP
MTU = 1420
DNS = 8.8.8.8, 8.8.4.4
[Peer]
PublicKey = y+3tI6KJ+zede+uwr8LQnCZ3jR+AjdsnkXu8q2ows2A= #此处为server的公钥server.key.pub
AllowedIPs = 0.0.0.0/1, 128.0.0.0/1, ::/1, 8000::/1 #此处为允许的服务器IP,接管所有流量
#AllowedIPs = 10.189.189.0/24 #改为仅内网/特定IP,假设你只想访问服务器内网
Endpoint = 192.168.21.11:51820 #服务端地址:公网IP:端口
PersistentKeepalive = 25 #保持心跳
#这里是win客户端,点击创建新隧道之后win客户端会自动创建公钥与私钥
#编辑配置文件vi /etc/wireguard/wg0.conf,替换client1的公钥client1.key.pub为客户端自动生成的公钥:J800QHjvsiaFoiTp0cjuLu3jratU+iZnKhECkLR6T34=
客户端的公钥必须要和服务器配置文件里面的公钥一致
wg-quick down wg0 #停止命令
wg-quick up wg0 # 启动命令
systemctl enable wg-quick@wg0 #设置开机启动wireguard
win客户端连接成功之后验证ping 服务端的ip地址10.0.188.1要能ping通
以后每次有客户端(无论是 Windows、手机还是 Linux)重装系统或重新生成密钥,都需要复制客户端生成的新公钥。
粘贴到服务端的 wg0.conf 中,覆盖旧的 PublicKey。
执行 wg-quick down wg0 和 wg-quick up wg0 重启服务,不需要修改 IP 或其他设置,只要公钥对上了,连接就能恢复。
Linux下安装配置WireGuard完成。
扩展阅读:离线安装WireGuard
#####################################
dnf install -y dnf-utils #安装工具包
mkdir -p /tmp/fake #创建临时目录
mkdir -p /root/yum-rpm-full-x86 #创建存储目录
dnf install --installroot=/tmp/fake --releasever=10 --downloadonly --downloaddir=/root/yum-rpm-full-x86 \
wireguard-tools \
-y
执行完成之后,所有的包都在/root/yum-rpm-full-x86目录,把这个目录打包yum-rpm-full-x86.tar.gz拷贝到需要安装的服务器上
#解压
tar -zxvf yum-rpm-full-x86.tar.gz
cd yum-rpm-full-x86
#只安装本地没有的包(跳过冲突),临时禁用所有已配置的远程仓库,只从本地目录安装
yum localinstall ./*.rpm -y --nogpgcheck --disablerepo="*" --skip-broken
#####################################

②190706903
③203744115



