[实践]wireguard安装和配置
什么是WireGuard
WireGuard 是一种现代的、简单易用、性能高效的虚拟私人网络协议,可提供更好的安全性和更快的速度。
WireGuard的主要特点包括:
- 简洁性:设计简单,代码量小,便于审计和维护。
- 性能高效:相较于其他虚拟私人网络协议,WireGuard具有更低的延迟和更高的数据传输速率。
- 安全性:使用了最新的加密技术,提供了强大的安全保证。
- 易于配置:配置文件简单易懂,易于设置和管理。
- 跨平台兼容性:支持多种操作系统,包括Linux、Windows、macOS、Android和iOS。
- 移动友好:特别适合在移动设备上使用,因为它对电池寿命的影响较小。
- 网络穿透能力强:能够较好地处理NAT(网络地址转换)和防火墙穿透问题。
- 模块化设计:可以作为内核模块或用户空间应用程序运行,灵活适应不同的使用场景。
- 动态密钥旋转:支持密钥的动态生成和更新,增强了安全性。
- 多路复用:单个虚拟私人网络隧道可以同时处理多个数据流,提高了效率。
Server Install & Config
Ubuntu 20.04.2 install wireguard
系统版本
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
sudo apt install wireguard
生成私钥&公钥
WireGuard通过wg genkey
生产私钥,然后在通过wg pubkey
生成公钥。
wg genkey > privatekey
wg pubkey < privatekey > publickey
mv privatekey publickey /etc/wireguard
开启内核IP转发
WireGuard
通过系统内核进行数据包转发,需要打开IPV4
地址转发功能
echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
/etc/init.d/procps restart
配置文件
切换进WireGuard
目录下(/etc/wireguard
),创建一个配置文件wg0.conf
cd /etc/wireguard
vim wg0.conf
wg0.conf
文件内容如下:
[Interface]
# 本机密钥
PrivateKey = fOqpewDm2F4rMS0aW5DQW2S9ixnc= # 上一步生成的publickey
# 本机地址
Address = 192.168.1.1/24 # 定义wg网络的网管地址
# 监听端口
ListenPort = 9993 # 定义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
# 以下两个可选
DNS = 1.1.1.1
MTU = 1420
# 客户端配置
# Client1_192.168.1.11
[Peer]
PublicKey = Client1公钥,在客户端可看到
AllowedIPs = 192.168.1.11/32
# Client2_192.168.1.12
[Peer]
PublicKey = Client2公钥,在客户端可看到
AllowedIPs = 192.168.1.12/32
**注意:PostUp
和PostDown
中的ens0
这个网卡要根据自己的实际来
目录结构:
├── etc
│ └─ wireguard
│ ├─ down_wg.sh
│ ├─ privatekey
│ ├─ publickey
│ ├─ up_wg.sh
│ └─ wg0.conf
启动&停止
wg-quick
cd /etc/wireguard
# 启动
wg-quick up wg0
# 停止
wg-quick down wg0
systemctl
# 启动
systemctl start wg-quick@wg0
# 设置开机自启动
systemctl enable wg-quick@wg0
# 停止
systemctl stop wg-quick@wg0
# 关闭开机自启动
systemctl disable wg-quick@wg0
使用wg命令查看当前Wireguard链接情况
root@local:/# wg
interface: wg0
public key: yX5gFNzlcgtHVG4DGeJJ5AoHWddpv8HA4J7hhCPj1ks=
private key: (hidden)
listening port: 9993
peer: yX5gFNzlcgtHVG4DGeJJ5AoHWddpv8HA4J7hhCPjYx9ik=
endpoint: 1.1.1.1:35935
allowed ips: 192.168.1.12/32
latest handshake: 1 minute, 25 seconds ago
transfer: 15.69 KiB received, 12.02 KiB sent
Client Install & Config
下载
访问 https://www.wireguard.com/install/ 根据操作系统选择合适的客户端。
Config
Windows & macOS Client GUI Config
打开WireGuard
客户端,点击添加空隧道
这里需要注意这个 公钥(publickey) 和 私钥(privatekey)
公钥需要放在服务器wg0.conf
[Peer]PublicKey = <client privatekey>
你的客户端配置看起来应该是这样的
# 示例
[Interface]
# 这里的PrivateKey不要动,是你本地的
PrivateKey = 4Fg7VJJnvt3iZwu5bYrmeDZoAz3BD7y1hq0+jFACMmo=
# IP地址,这是你要给这个客户端分配的ip
Address = 192.168.1.12/24
# 以下两个可选
DNS = 1.1.1.1
MTU = 1420
[Peer]
# 这是服务器那边的PublicKey可以看服务器上生成的PublicKey
PublicKey = hZyrKY1pQ+0Y45okw+IwTAOENA9pIhJ2dRJUubxCpDo=
# 属于哪个IP段,也可以配置成:AllowedIPs = 0.0.0.0/0,::0/0
AllowedIPs = 192.168.1.0/24
# 对应的WireGuard服务器地址与端口
Endpoint = xxx.xxx.xxx.xxx:9993
# 心跳频率
PersistentKeepalive = 25
配置完成后点击保存即可。
**提示:配置完成记得重启服务端
Linux
参考WireGuard install页面安装WireGuard,总体上和服务端的安装是一致的。安装好后,将配置文件放入对应目录,使用与服务端相同命令启停
其它客户端设置
其它客户端设置可以参考:写的很详细https://cn.linux-console.net/?p=31334
wireguard-ui Install & Config
使用图形化界面使用WireGuard
从github下载wireguard-ui-vx.x.x-linux-amd64.tar.gz
root@ztncui:/etc/wireguard/wg_gui# wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/v0.6.2/wireguard-ui-v0.6.2
-linux-amd64.tar.gz
--2024-08-01 13:44:18-- https://github.com/ngoduykhanh/wireguard-ui/releases/download/v0.6.2/wireguard-ui-v0.6.2-linux-amd64.tar.gz
Resolving github.com (github.com)... 172.67.207.252, 104.21.61.90, 2606:4700:3036::ac43:cffc, ...
Connecting to github.com (github.com)|172.67.207.252|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10604455 (10M) [application/octet-stream]
Saving to: ‘wireguard-ui-v0.6.2-linux-amd64.tar.gz’
wireguard-ui-v0.6.2-linux-amd64.t 100%[============================================================>] 10.11M 1.17MB/s in 9.3s
2024-08-01 13:44:29 (1.09 MB/s) - ‘wireguard-ui-v0.6.2-linux-amd64.tar.gz’ saved [10604455/10604455]
解压
tar -zxvf wireguard-ui-v0.6.2-linux-amd64.tar.gz
使用./wireguard-ui
运行wireguard-ui
root@ztncui:/etc/wireguard/wg_gui# ./wireguard-ui
Wireguard UI
App Version : v0.6.2
Git Commit : 99104e429557a4cd6bda4b0c2550a656cdfe9bb7
Git Ref : refs/tags/v0.6.2
Build Time : 08-01-2024 05:47:55
Git Repo : https://github.com/ngoduykhanh/wireguard-ui
Authentication : true
Bind address : 0.0.0.0:5000
Email from :
Email from name : WireGuard UI
Custom wg.conf :
Base path : /
Subnet ranges :
Valid subnet ranges:
⇨ http server started on [::]:5000
通过web访问IP:5000 初始用户名和密码是admin
请及时修改
自动重启 WireGuard 守护进程
WireGuard-UI只负责配置生成。您可以使用 systemd 来监视更改并重新启动服务。
下面是一个示例:
使用 systemd
创建 /etc/systemd/system/wgui.service
cd /etc/systemd/system/
cat << EOF > wgui.service
[Unit]
Description=Restart WireGuard
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart wg-quick@wg0.service
[Install]
RequiredBy=wgui.path
EOF
创建 /etc/systemd/system/wgui.path
cd /etc/systemd/system/
cat << EOF > wgui.path
[Unit]
Description=Watch /etc/wireguard/wg0.conf for changes
[Path]
PathModified=/etc/wireguard/wg0.conf
[Install]
WantedBy=multi-user.target
EOF
应用
systemctl enable wgui.{path,service}
systemctl start wgui.{path,service}
使用 openrc
创建 /usr/local/bin/wgui
文件并赋予执行权
cd /usr/local/bin/
cat << EOF > wgui
#!/bin/sh
wg-quick down wg0
wg-quick up wg0
EOF
chmod +x wgui
创建 /etc/init.d/wgui
文件并赋予执行权
cd /etc/init.d/
cat << EOF > wgui
#!/sbin/openrc-run
command=/sbin/inotifyd
command_args="/usr/local/bin/wgui /etc/wireguard/wg0.conf:w"
pidfile=/run/${RC_SVCNAME}.pid
command_background=yes
EOF
chmod +x wgui
应用
rc-service wgui start
rc-update add wgui default
Wiki
更多使用说明 请查阅项目官方wiki 👉 https://github.com/ngoduykhanh/wireguard-ui/blob/master/README.md
附加题
麒麟V10(Kylin V10)安装wireguard
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Lance)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Lance)"
ANSI_COLOR="0;31"
4.19.90-52.22.v2207.ky10.x86_64
开启内核IP转发
echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
不重启系统立即生效,使用sysctl重新加载配置:
sudo sysctl -p
wireguard-dkms
dnf install https://download.copr.fedorainfracloud.org/results/fcsm/wireguard/centos-stream-8-x86_64/06141888-wireguard-dkms/wireguard-dkms-1.0.20220627-3.el8.noarch.rpm -y
wireguard-tools
dnf install https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/w/wireguard-tools-1.0.20210914-1.el8.x86_64.rpm -y
转载请注明出处
Copyright © 豆子林克 DOUZI.LINK 版权所有
除特别申明外,本内容版权遵循CC-BY-NC-SA协议规定