基于 WireGuard 的内网组网教程:实现多设备间的安全互联

2024 年 10 月 29 日 星期二(已编辑)
/ ,
444
摘要
本文详细介绍了如何通过 WireGuard 建立内网组网,以实现多设备间的内网互通。相较于之前的将内网服务映射至公网的教程,本次主要讨论如何利用 WireGuard 将设备全部置于内网环境下,方便远程访问和个人数据共享。本文包括 WireGuard 的安装、服务器和设备端的配置细节,及各设备互联互通的测试步骤,旨在为个人用户提供安全、便捷的内网访问方案。
这篇文章上次修改于 2024 年 10 月 30 日 星期三,可能部分内容已经不适用,如有疑问可询问作者。

阅读此文章之前,你可能需要首先阅读以下的文章才能更好的理解上下文。

基于 WireGuard 的内网组网教程:实现多设备间的安全互联

前言

很久以前写了frp over wirguard这篇文章,里面主要讲述了如何通过wireguard打通通道,并通过frp将内部端口映射出去,主要作用为将无公网IP的服务器的服务通过有公网IP的服务器映射出去,达到网络可访问内网服务器服务的效果。本文主要讲解通过wireguard进行组网,达到所有设备内部访问的效果,与前文不同的是,前文将客户端置于该内网外部,本文将客户端置于内网内部。

应用

此方法搭建出来内网应当是面向个人使用,例如将自己的硬盘映射出来,自己在任何地方都可以访问;更方便地远程控制电脑等。

详细工作

准备

由于wireguard采用了interface(本端)和peer(对端)的方式,本文不区分各个客户端和服务端,但是为了方便区分,将有公网IP的服务器成为服务端。

首先,应当在各设备上安装wireguard,各设备应当参照wireguard官网安装,此处仅列举出一般设备:

  • Ubuntu:sudo apt install wireguard
  • Windows:下载安装软件并安装
  • IOS:使用美区icloud id登录app store,直接下载安装 ## 中心服务器基本配置搭建 ### 生成公私钥对 在此处我使用了Ubuntu作为我的服务器系统,其他设备自行查找配置文件位置。

首先,生成服务器端需要的公私钥

sudo mkdir -p /etc/wireguard && sudo chmod 0777 /etc/wireguard && cd /etc/wireguard
umask 077 
wg genkey | tee private.key | wg pubkey > public.key

创建公私钥后可以查看私钥内容,后面配置需要

cat public.key
cat private.ley

配置文件讲解

wireguard默认将配置文件放置于/etc/wireguard/中,可以使用wg0.conf/wg1.conf这样的方式进行命名,一个组网使用一个文件

以下为一个示例:

编辑一个配置文件/etc/wireguard/wg0.conf

nano /etc/wireguard/wg0.conf

由于服务器我们作为提供公共ip的服务器,同时还负责转发流量的服务,所以我们需要有PostUp和PostDown的设置,以及对于每个对端Peer(组网中其他设备),在每次添加设备的时候我们还需要额外添加,在后文也会有讲述。

wireguard的配置文件格式大概为

[Interface]
本机配置

[Peer]
对端配置

[Peer]
对端配置

......

因此我们分开配置两个部分进行讲解。

配置文件Interface部分配置

[Interface]
PrivateKey = 此处填写密钥内容
Address = 10.0.8.1/24
PostUp   = iptables -A FORWARD -i wg0 -o wg0 -j ACCEPT; iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT; iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -o wg0 -j ACCEPT; iptables -D FORWARD -i wg0 -o eth0 -j ACCEPT; iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 此处填写端口
MTU = 1420

其中密钥、端口以及内网地址可以更换为你所希望的配置,但是作为路由和网关的中心服务器,更简易使用/24地址,让中心服务器可以管理整个子网的流量和路由。

配置文件Peer部分配置

纵然在理论上,可以使用一个公钥文件和私钥文件添加多个对端,但是不推荐。因为 WireGuard 的设计要求每个peer都有其独立的公钥-私钥对,保持安全性和保证可用,中心服务器的配置文件需要根据每个Peer端来单独设置。

因此在添加任何一个新设备的时候,都应该在中心服务器对应组网的配置文件中添加一个Peer部分,以下是一个Peer部分的配置文件示例:

[Peer]
PublicKey = Peer端的公钥内容
AllowedIPs = 10.0.8.11/32

请修改对应公钥和允许的IP端。

组网各设备的配置

生成各设备的公私钥对

通过各设备自己的方式生成公私钥对,此处不再详细讲解。

各设备Interface配置

[Interface]
PrivateKey = 各设备生成的私钥内容
Address = 10.0.8.11/32
MTU = 1420

其中修改你希望该设备的内网地址

各设备Peer部分配置

[Peer]
PublicKey = 中心服务器公钥内容
AllowedIPs = 10.0.8.0/24
Endpoint = 中心服务器ip:端口
PersistentKeepalive = 30

注意此处AllowedIP端修改为了/24端,这样做可以形成一个10.0.8.0-10.0.8.255之间组网的设备,可以根据需要修改。

测试

各设备与中心服务器的连接测试

在首次搭建好中心服务器和组网中其他设备的wireguard后,应当先连接wireguard并进行测试

ping 10.0.8.1

替换为你的中心服务器地址,如果ping通,说明组网成功。

如果ping不通,请使用端口扫描工具检查中心服务器端口是否开放,如果开放请检查对应配置。

组网中各设备的连接测试

如果有此需求,搭建好组网中两个设备后应当进行Ping测试,如果发现不通,但是各设备和中心服务器相通,请检查中心服务器转发服务是否正常。

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...