PS:本文章用于帮助组建自己内网或者公司组网操作,该教程不涉及翻墙操作.

1. 前言

WireGuard 是由 Jason Donenfeld 等人用 C 语言编写的一个开源 威屁恩 协议,被视为下一代 威屁恩 协议,旨在解决许多困扰 IPSec/IKEv2、Open威屁恩 或 L2TP 等其他 威屁恩 协议的问题。它与 Tinc 和 MeshBird 等现代 威屁恩 产品有一些相似之处,即加密技术先进、配置简单。从 2020 年 1 月开始,它已经并入了 Linux 内核的 5.6 版本,这意味着大多数 Linux 发行版的用户将拥有一个开箱即用的 WireGuard。

2.安装检查

centos7 64位系统

  1. 检查centos内核版本

[root@qmm ~]# uname -r
3.10.0-514.el7.x86_64
  1. 更新内核

升级内核到5.6.x以上

linux升级内核
① 载入公钥
<p>$ rpm --import http://www.elrepo.org/RPM-GPG-KEY-elrepo.org
② 升级安装 elrepo
$ rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
③ 载入 elrepo-kernel 元数据
$ yum --disablerepo=* --enablerepo=elrepo-kernel repolist
④ 安装最新版本的内核
$ yum --disablerepo=* --enablerepo=elrepo-kernel install  kernel-ml.x86_64  -y
⑤ 删除旧版本工具包
$ yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64  -y
⑥ 安装新版本工具包
$ yum --disablerepo=* --enablerepo=elrepo-kernel install kernel-ml-tools kernel-ml-devel kernel-ml-headers -y
⑦ 查看内核插入顺序
$ 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 开始。
⑧ 查看当前实际启动顺序
$ grub2-editenv list
saved_entry=CentOS Linux (3.10.0-1127.10.1.el7.x86_64) 7 (Core)
⑨ 设置默认启动(注意复制更新后的内核替换单引号的内容)
$ grub2-set-default 'CentOS Linux (5.7.2-1.el7.elrepo.x86_64) 7 (Core)'
最后重启检查:
$ reboot
查看当前实际启动顺序
$ grub2-editenv list

3.安装docker

使用一键安装脚本,会自动设置docker阿里镜像

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

4.安装Docker版Wireguard

docker run -d <br />
--name=wg-easy <br />
-e WG_HOST=192.168.1.149 <br />
-e PASSWORD=password <br />
-e WG_DEFAULT_ADDRESS=10.0.0.x <br />
-e WG_DEFAULT_DNS=114.114.114.114 <br />
-e WG_PERSISTENT_KEEPALIVE=30 <br />
-e WG_ALLOWED_IPS=0.0.0.0/0 <br />
-v ~/.wg-easy:/etc/wireguard <br />
-p 51820:51820/udp <br />
-p 51821:51821/tcp <br />
--cap-add=NET_ADMIN <br />
--cap-add=SYS_MODULE <br />
--sysctl="net.ipv4.conf.all.src_valid_mark=1" <br />
--sysctl="net.ipv4.ip_forward=1" <br />
--restart=always <br />
weejewel/wg-easy

注解:

  1. -e WG_HOST=YOUR_SERVER_IP: 这个环境变量用于指定 WireGuard VPN 服务器的主机IP地址。

  2. -e PASSWORD=YOUR_ADMIN_PASSWORD: 这个环境变量用于设置管理员密码,用于访问可视化管理界面。

  3. -e WG_DEFAULT_ADDRESS=10.0.0.x: 这个环境变量用于指定 WireGuard VPN 的默认地址范围。x 应该是一个特定的数字,例如,如果你希望默认地址为 10.0.0.1,那么就设置为 10.0.0.1

  4. -e WG_DEFAULT_DNS=114.114.114.114: 这个环境变量用于设置 WireGuard VPN 的默认 DNS 服务器。在这里,它被设置为 114.114.114.114

  5. -e WG_PERSISTENT_KEEPALIVE=30: 这个环境变量用于设置 WireGuard VPN 连接的持久保持活跃时间(单位为秒)。在这里,它被设置为 30 秒。

  6. -e WG_ALLOWED_IPS=10.0.0.0/24: 这个环境变量用于指定允许通过 WireGuard VPN 连接访问的 IP 地址范围。在这里,它被设置为 10.0.0.0/24,表示允许 10.0.0.010.0.0.255 之间的所有 IP 地址。这里我们设置0.0.0.0/0允许Wireguard所在服务器的所有网段

5.通过iptablesg管理防火墙并启用转发

  1. 停止并禁用 firewalld

  2. 安装并启用 iptables

  3. 配置 iptables 允许所有流量。

  4. 启用并永久保存 IPv4 转发功能。

systemctl stop firewalld
systemctl disable firewalld
yum install -y iptables-services
systemctl enable iptables
systemctl start iptables
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
service iptables save
service iptables restart
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

6.添加新网卡测试

  1. 访问配置ip的51281端口

使用password登录后添加客户端

  1. 添加新网段网卡

  1. 下载wireguard的windows客户端

https://www.wireguard.com/install/

  1. 导入配置

  1. 测试联通情况

其他:一键脚本(非docker)

wireguard_install.sh

https://blog.csdn.net/qq_41988504/article/details/133216780

注意

如果异地组网穿透udp流量的话运营商可能会对udp带宽其进行特殊处理,可能会降低其优先级或限制其带宽.

可以使用openvpn搭建tcp异地组网: