基于 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测试,如果发现不通,但是各设备和中心服务器相通,请检查中心服务器转发服务是否正常。