Wireguard虚拟局域网配置
记录一下防止下次又忘了怎么配了
安装Wireguard
在Debian/Ubuntu系统上,使用
sudo apt install wireguard来安装Wireguard。这个不需要翻墙,一般的中央仓库都有。
Windows则可访问官网Wireguard官网来下载桌面端。(需要翻墙)
MacOS则需要能访问外区的AppStore账户才能下载Wireguard。
我这里准备了一份Windows版本的下载链接,以方便各位没有翻墙能力的朋友~
密钥配置
无论服务端和客户端都需要一组密钥配置。Windows/MacOS桌面端会在创建隧道时,就提供给你它生成的公钥和私钥。

Debian/Ubuntu会比较麻烦,需要手动生成。
在任意一个目录下执行这段代码,会在该目录下创建一个private.key和public.key文件,其内容就分别是公钥和私钥。
wg genkey | tee private.key | wg pubkey > public.key服务器配置
Wireguard根据配置文件内容不同,来区分是服务器还是客户端。下面介绍服务器(Debian/Ubuntu)的配置方法。
Wirerguard组建的虚拟网,是以中心服务器来转发相关网络流量到各个主机的。作为中介,它必须被每个主机直接访问,因此服务器必须有一个公网IP地址。最简单的获取服务器的方式就是去各大云服务器提供商(腾讯云、阿里云)租一台比较便宜的,网络带宽比较大的。
服务器中,执行以下指令,创建一个新的配置文件wg0。
(当然也可以使用nano等文本编辑器)
sudo vim /etc/wireguard/wg0.conf在文件中输入这些内容。
[Interface]
Address = 192.168.150.1/24 #服务器在虚拟网中的地址以及子网掩码
ListenPort = 50814 #使用的端口,如果使用云服务器,记得在安全组里放行此端口的TCP/UDP
PrivateKey = [服务端的私钥内容]
# 客户端1号
[Peer]
PublicKey = [客户端1号的公钥内容]
AllowedIPs = 192.168.150.2/32 #为客户端1号分配的IP地址
# 客户端2号
[Peer]
PublicKey = [客户端2号的公钥内容]
AllowedIPs = 192.168.150.3/32。 #为客户端2号分配的IP地址
# 客户端3号
[Peer]
PublicKey = [客户端3号的公钥内容]
AllowedIPs = 192.168.150.150/32 #为客户端3号分配的IP地址
当添加完所有你需要的客户端后,就可以使用以下两行代码启动服务端的Wireguard服务了。当然,记得要放开端口。
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0如果之后需要新添加客户端,也很简单,只需要再加一行,输入客户端的公钥并为其分配一个IP地址,随后使用
sudo systemctl restart wg-quick@wg0来重启Wireguard服务。
客户端配置
客户端的配置文件在Windows/MacOS桌面端可以直接修改,先前看到的窗口里面就是配置文件内容,并已经生成了公钥和私钥。如果你使用的是桌面端,请直接跳到下面配置文件内容,正确填写保存即可。
如果是Debian/Ubuntu等端,仍然需要通过
sudo vim /etc/wireguard/wg0.conf手动生成配置文件。客户端的配置文件是以下内容:
[Interface]
PrivateKey = [客户端的私钥内容]
Address = 192.168.150.2/32 #客户端使用的IP地址,必须和服务器里配置的地址是一样的
[Peer]
PublicKey = [服务器的公钥内容]
AllowedIPs = 192.168.150.0/24 #要转发哪些流量,这样写只会转发该子网的流量
Endpoint = xxx.xxx.xxx.xxx:50814 #服务器的公网IP地址以及使用的端口,记得和服务器配置的一样
PersistentKeepalive = 25 #保活时间,长时间开启虚拟局域网请务必设置这一项
这样就配置好了!如果你是Windows/MacOS桌面端,你可以直接点击保存,然后连接,就可以连接到服务器了。如果你是Debian/Ubuntu用户,你就再执行下面的代码来启动Wireguard:
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0只要能与服务器成功握手,就已经成功连接了。

如果配置成功,假设服务端是192.168.150.1,客户端是192.168.150.2,现在就已经可以互相ping通了!(前提是服务器开放了ICMP端口)
IP转发设置
为了在有多个客户端的情况下,客户端之间能互相ping通,在服务器上还需要开启IP转发设置:
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-wireguard.conf
这么做会允许服务器转发IPv4流量,这样客户端之间就可以通过服务器中转,互相访问了。
以上命令执行完后,还需要执行下面的命令重启配置。(有时可能还要重启服务器系统)
sudo sysctl --system 快乐的玩耍吧~
这些都配置好后,支持局域网联机的游戏或软件都可以正常使用了。
你可以通过IP直接使用Windows远程桌面来操作电脑。
游戏的话,拿Minecraft举例子,在某个玩家将自己的存档对局域网开放后,你就可以用虚拟局域网的IP以及端口直接和他一起联机玩耍了~
例如,存档在客户端1(192.168.150.2),客户端2的小伙伴(192.168.150.3)想加入存档,小伙伴只需要直接连接192.168.150.2:<局域网开放端口>就可以一起游戏了~
在主机少的时候这是个非常简单实用的虚拟局域网机制。