2
0
0

docker搭建Wireguard异地组网

2026-06-30
2026-06-30

📝 笔记摘要:WireGuard 简介

1. WireGuard 是什么? WireGuard 是一种极简、高速且现代化的 VPN(虚拟专用网络)协议。它不像传统的 OpenVPN 那样臃肿,而是直接集成在 Linux 内核中,旨在通过最简单的代码实现最安全的加密隧道。

2. 核心特点:

  • 极速性能: 由于运行在内核态,它的处理速度极快,延迟极低,几乎不会占用额外的 CPU 资源,非常适合对网速要求高的场景。

  • 极简配置: 整个配置文件通常只有几行代码,没有复杂的证书交换过程,部署和维护都非常简单。

  • 顶级安全: 采用了最新的加密算法(如 Noise 协议框架),代码量极少(仅约 4000 行),这意味着漏洞更少,更容易被审计。

  • 漫游支持: 能够自动检测网络变化(比如从 WiFi 切换到 4G),保持连接不中断。

3. 与 ZeroTier 的区别:

  • ZeroTier 更像是一个“虚拟交换机”,侧重于组建局域网,配置傻瓜化,适合小白。

  • WireGuard 更像是一条“点对点加密专线”,侧重于高效的数据传输和穿透,需要手动配置密钥和 IP,灵活性更高,适合有一定技术基础的用户。

💡 适用场景:

  • 远程安全访问家庭或公司的内网服务器(如你的 Halo 博客、Nextcloud)。

  • 在不信任的公共 WiFi 环境下保护上网隐私。

  • 作为 VPS 之间的安全通信通道,用于分布式任务协同。

WireGuard 安装与配置笔记

相关资源链接


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 

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!