Wireguard虚拟局域网配置

Wireguard虚拟局域网配置

记录一下防止下次又忘了怎么配了

安装Wireguard

在Debian/Ubuntu系统上,使用

sudo apt install wireguard

来安装Wireguard。这个不需要翻墙,一般的中央仓库都有。

Windows则可访问官网Wireguard官网来下载桌面端。(需要翻墙)
MacOS则需要能访问外区的AppStore账户才能下载Wireguard。

我这里准备了一份Windows版本的下载链接,以方便各位没有翻墙能力的朋友~

密钥配置

无论服务端和客户端都需要一组密钥配置。Windows/MacOS桌面端会在创建隧道时,就提供给你它生成的公钥和私钥。

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:<局域网开放端口>就可以一起游戏了~

在主机少的时候这是个非常简单实用的虚拟局域网机制。