WireGuard 是一种现代化、简单易用且性能高效的虚拟私人网络(VPN)协议,以其卓越的安全性和快速的连接速度而备受瞩目。它设计简洁,代码量少,便于审计和维护,同时以最新的加密技术提供强大的安全保证。WireGuard 的高效性表现为更低的延迟和更快的数据传输速率,而简单易懂的配置文件使其易于设置和管理。它支持多种操作系统,包括 Linux、Windows、macOS、Android 和 iOS,特别适合移动设备使用,对电池寿命的影响较小。此外,WireGuard 具有出色的 NAT 穿透和防火墙兼容能力,支持动态密钥旋转和多路复用,并以模块化设计灵活适应不同场景,是实现高效、安全网络连接的理想选择。
安装wireguard
rh系,centos/almalinux使用以下命令安装
yum install wireguard
生成私钥和公钥
使用wg genkey
命令生产私钥,使用wg pubkey
生成公钥。
wg genkey > privatekey
wg pubkey < privatekey > publickey
mv privatekey publickey /etc/wireguard
手动设置wg配置文件
切换到目录下/etc/wireguard
,创建配置文件wg0.conf
cd /etc/wireguard
vim wg0.conf
[Interface]
# 本机密钥
PrivateKey = xxxxxxxxxxxxxxxxxxx= # 上一步生成的publickey
# 本机地址
Address = 10.252.1.1/24 # 定义wg网络的网管地址
# 监听端口
ListenPort = 25180 # 定义wg对外的端口,可修改
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens0 -j MASQUERADE
# 客户端配置(以此类推)
[Peer]
PublicKey = Client1公钥,在客户端可看到
AllowedIPs = 10.252.1.1/32
启用IPv4路由转发
WireGuard
自己并不会转发流量,需要让系统进行路由,大多系统默认不开启ipv4转发功能需要手动添加或取消注释以下配置
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 #添加或取消注释
sysctl -p /etc/sysctl.conf #使配置生效
安装wireguard-ui(可选内容)
mkdir -p /opt/wireguard-ui && cd /opt/wireguard-ui && wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/v0.5.2/wireguard-ui-v0.5.2-linux-amd64.tar.gz && tar -zxvf wireguard-ui-v*.tar.gz -C .
创建web-ui配置文件
vim /opt/wireguard-ui/.env
BIND_ADDRESS=0.0.0.0:5000
# 配置绑定IP和端口,默认为5000
[email protected]
EMAIL_FROM_NAME=admin
SMTP_HOSTNAME=smtp.exmail.qq.com
SMTP_PORT=465
[email protected]
SMTP_PASSWORD=password
SMTP_AUTH_TYPE=LOGIN
SMTP_ENCRYPTION=
# 加密方式,可以使用SSL,若只http访问请留空
创建服务脚本
web-ui启动服务
vim /etc/systemd/system/wireguard-ui.service
[Unit]
Description=WireGuard UI Daemon
Wants=network-online.target
After=network-online.target
[Service]
User=root
Group=root
Type=simple
WorkingDirectory=/opt/wireguard-ui
EnvironmentFile=/opt/wireguard-ui/.env
ExecStart=/opt/wireguard-ui/wireguard-ui
[Install]
WantedBy=multi-user.target
监听重载配置服务
vim /etc/systemd/system/wgui.service
[Unit]
Description=Restart WireGuard
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl reload [email protected]
[Install]
RequiredBy=wgui.path
vim /etc/systemd/system/wgui.path
[Unit]
Description=Watch /etc/wireguard/wg0.conf for changes
[Path]
PathModified=/etc/wireguard/wg0.conf
[Install]
WantedBy=multi-user.target
启动并激活服务
systemctl daemon-reload
systemctl start wireguard-ui.service
systemctl enable wireguard-ui.service
systemctl enable wgui.{path,service}
systemctl start wgui.{path,service}
systemctl restart [email protected]
访问并配置web-ui
访问ip:5000
默认账户密码admin,建议登陆后自行更改管理员密码
首先进入全局设置。修改端点为服务器ip或你想用的域名,然后进入服务配置设置服务端配置,配置客户端IP池,服务器端端口,可选shell脚本,和生成私钥公钥,设置好全部内容后切记一定要点击右上角的保存配置,否则不会推送到wg,无法生效
然后进入首页生成客户端配置,填入名称,输入你想要分配给该设备的ip地址,可选择使用或不使用服务器dns,设置好后再次保存配置,就可以把配置导入到客户端使用了
客户端连接
安装并打开客户端,新建隧道,将wg0.conf中设好的Interface参数和peer参数填入即可,也可以使用.conf
文件或二维码导入隧道配置
这里有一个坑点,wg以及面板默认的规则allow ip是0.0.0.0/0
会监听和拦截所有流量,配置不对会导致无法访问互联网,建议将客户端allow ip修改为你分配的ip段,实现分流,只允许指定ip段可以访问虚拟网络比如本文中配置的10.252.1.0/24
即可
Comments NOTHING