docker搭建Wireguard异地组网
📝 笔记摘要:WireGuard 简介
1. WireGuard 是什么? WireGuard 是一种极简、高速且现代化的 VPN(虚拟专用网络)协议。它不像传统的 OpenVPN 那样臃肿,而是直接集成在 Linux 内核中,旨在通过最简单的代码实现最安全的加密隧道。
2. 核心特点:
极速性能: 由于运行在内核态,它的处理速度极快,延迟极低,几乎不会占用额外的 CPU 资源,非常适合对网速要求高的场景。
极简配置: 整个配置文件通常只有几行代码,没有复杂的证书交换过程,部署和维护都非常简单。
顶级安全: 采用了最新的加密算法(如 Noise 协议框架),代码量极少(仅约 4000 行),这意味着漏洞更少,更容易被审计。
漫游支持: 能够自动检测网络变化(比如从 WiFi 切换到 4G),保持连接不中断。
3. 与 ZeroTier 的区别:
ZeroTier 更像是一个“虚拟交换机”,侧重于组建局域网,配置傻瓜化,适合小白。
WireGuard 更像是一条“点对点加密专线”,侧重于高效的数据传输和穿透,需要手动配置密钥和 IP,灵活性更高,适合有一定技术基础的用户。
💡 适用场景:
远程安全访问家庭或公司的内网服务器(如你的 Halo 博客、Nextcloud)。
在不信任的公共 WiFi 环境下保护上网隐私。
作为 VPS 之间的安全通信通道,用于分布式任务协同。
WireGuard 安装与配置笔记
相关资源链接
WireGuard Gitee 仓库
官方安装文档
WireGuard Docker 一键部署脚本示例
以下为常用的 WireGuard 容器部署脚本,支持快速启动和配置:
NAME=wg-easy
IMAGE=weejewel/wg-easy
docker stop $NAME
docker rm $NAME
docker run -d
--name=wg-easy
-e WG_HOST=110.40.33.192
-e PASSWORD=zxcasdqwe
-e WG_DEFAULT_ADDRESS=10.0.8.x
-e WG_DEFAULT_DNS=114.114.114.114
-e WG_ALLOWED_IPS=10.0.8.0/24
-e WG_PERSISTENT_KEEPALIVE=25
-v ~/.wg-easy:/etc/wireguard
-p 51820:51820/udp
-p 51821:51821/tcp
--cap-add=NET_ADMIN
--cap-add=SYS_MODULE
--sysctl="net.ipv4.conf.all.src_valid_mark=1"
--sysctl="net.ipv4.ip_forward=1"
--restart unless-stopped
weejewel/wg-easy
docker run -d --name=wg-easy -e WG_HOST=59.110.163.126 -e PASSWORD=zxcasdqwe -e WG_DEFAULT_ADDRESS=172.0.8.x -e WG_DEFAULT_DNS=114.114.114.114 -e WG_ALLOWED_IPS=172.0.8.0/24 -e WG_PERSISTENT_KEEPALIVE=25 -v ~/.wg-easy:/etc/wireguard -p 51820:51820/udp -p 51821:51821/tcp --cap-add=NET_ADMIN --cap-add=SYS_MODULE --sysctl="net.ipv4.conf.all.src_valid_mark=1" --sysctl="net.ipv4.ip_forward=1" --restart unless-stopped weejewel/wg-easy
docker run -d
--name=wg-easy
-e WG_HOST=59.110.163.126
-e PASSWORD=cyx18839858671
-v /root/data/wg:/etc/wireguard
-p 51820:51820/udp
-p 51821:51821/tcp
--cap-add=NET_ADMIN
--cap-add=SYS_MODULE
--sysctl="net.ipv4.conf.all.src_valid_mark=1"
--sysctl="net.ipv4.ip_forward=1"
--restart unless-stopped
ghcr.io/wg-easy/wg-easy说明:可根据实际服务器 IP 和需求调整环境变量。
按需修改挂载目录及端口映射。
支持自动重启和内核权限配置。
Linux 内核升级步骤(适用于 WireGuard 环境)
1. 导入公钥
rpm --import http://www.elrepo.org/RPM-GPG-KEY-elrepo.org 2. 安装 elrepo 源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 3. 载入 elrepo-kernel 元数据
yum --disablerepo=* --enablerepo=elrepo-kernel repolist 4. 安装最新内核
yum --disablerepo=* --enablerepo=elrepo-kernel install kernel-ml.x86_64 -y 5. 删除旧版本工具包
yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64 -y 6. 安装新版本工具包
yum --disablerepo=* --enablerepo=elrepo-kernel install kernel-ml-tools kernel-ml-devel kernel-ml-headers -y 7. 查看内核插入顺序
grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2 示例输出:
CentOS Linux (3.10.0-1127.10.1.el7.x86_64) 7 (Core)
CentOS Linux (5.7.2-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (0-rescue-96820b9851c24560b5f942f2496b9aeb) 7 (Core)
默认新内核是从头插入,启动顺序从 0 开始。
8. 查看当前实际启动顺序
grub2-editenv list 示例输出:
saved_entry=CentOS Linux (3.10.0-1127.10.1.el7.x86_64) 7 (Core)
9. 设置默认启动内核
grub2-set-default 'CentOS Linux (5.7.2-1.el7.elrepo.x86_64) 7 (Core)' 10. 重启并检查
reboot 重启后再次查看启动顺序:
grub2-editenv list 