Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

1 前言

1.1 背景

随着技术的不断革新,个人服务器算力和性能越来越强大,在家部署一台性能不错的主机,然后使用轻薄本远程办公逐渐成为一种解决方案。
奈何ip受限,稀少的ipv4地址,复杂的NAT网关,使得公网对局域网的访问难上加难。就算使用Natter加上DDNS临时动态拿到公网ip,难道你想你的电脑远程端口或者ssh端口直接暴露在公网上吗?对此SakuraFRP向日葵ToDesk各自给出了不同的解决方案。

这里重点推荐SakuraFrp,通过内网穿透和端口加密给出了不错的解决方案,对公网暴露设备端口并加密,而且不受NAT限制。另外两款远程软件适合临时控制或者备用检修通道,商用型强广告多,不适合长期使用

虽然SakuraFrp功能强大而且价格便宜(临时使用基本免费),但是所有流量都要到Sakura服务器转发,带宽受限。而且随着设备的变多,错综复杂的穿透隧道让配置和部署变得极其麻烦,点对点的穿透解决方案是不可行的。

这时,完美的解决方案出现了 —> Wireguard

1.2 Wireguard介绍

WireGuard 是一种现代化的、简化的、安全的VPN(虚拟私人网络)协议。以下是对其特点及工作原理的详细介绍:

  • 简洁性:WireGuard 的设计目标之一是简化配置和部署,其代码库远小于其他如 OpenVPN 和 IPSec 等解决方案。
  • 性能:由于其精简的设计和对最新加密技术的应用,WireGuard 速度更快、延迟更低。
  • WireGuard 使用最先进的加密算法,确保数据传输的安全性。
  • WireGuard 可以在多种平台上运行,包括 Linux、Windows、macOS、iOS、Android 等,支持跨平台使用,同时其简单的配置流程也降低了用户的使用门槛。
  • 通过 UDP 协议进行通信,WireGuard 能够更好地适应网络条件的变化,并且具有自动重连功能,保证连接的稳定性和可靠性。
  • 与传统VPN不同的是,WireGuard 支持客户端使用动态IP地址,无需固定IP地址即可建立稳定的连接,且兼容ipv4ipv6

使用WireGuard,我们可以将所有想要直接关联的设备通过安全隧道连接起来,形成一个虚拟的专用网络,可以像局域网一样轻松访问和管理内网设备。

1.3 为什么我选择Windows作为终端server?

最主要原因,是因为我的NAS(网络附属存储)不支持docker(轻量级容器技术),它也就变相的不支持部署Wireguard。作为家里的第二大常驻设备,我把目光瞄准到了我的PC。虽然Windows的系统使它注定无法24小时开机,但是Wake On LAN(局域网唤醒)完美的弥补了这一点。想要组网时,我远程唤醒PC开机即可。
至于为什么不把设备刷成Linux,我只能说它不止是一台server,还有别的作用(剪辑、设计、游戏)。而且使用wsl2+docker,上面完全可以部署我的服务,充当服务器的作用。

2 部署

2.1 网络环境

  • 对于有公网ip地址的,配置路由器的端口转发即可。
  • 对于ipv4,在NAT1的环境下,邪修使用Natter可以拿到临时公网ip。(UDP在ipv4环境跨区丢包很严重,这里不推荐没有公网ip的使用)
  • 对于ipv6,尽量保证server环境处于NAT1,使用DDNS-GO可以将拿到的动态ipv6通过域名解析绑定到某个域名,从而实现稳定的使用。点我传送到DDNS-GO

请注意:用路由器给server分配固定ip并开启DMZ主机,确保网络环境的稳定性。

2.2 一键部署

Windows下想要完全启用Wireguard的功能,需要更改众多配置。好在已经有前人帮我们早好了轮子Wg Server for Windows,我们直接拿来用即可。

1.工具下载

releases下载WS4W最新版本。我的版本是2.1.4。
安装完成后得到如下界面:

WS4W界面图
WS4W界面图

2.下载Wireguard

点击Download and install Wireguard,根据指引一键自动下载安装。

3.配置Server

点击Edit server configuration,进入server配置页面。

server配置页
server配置页

其中Endpoint填写ip:端口(和Listen Port一致),ip全面支持ipv4,ipv6,域名。两个Key点击Generate自动生成。其余配置照抄即可,这里不过多赘述。

3.配置clients(Server端)

点击Configure client,进入client配置页面。

client配置页
client配置页
  1. 点击Add Client,会弹出类似上图的界面。
  2. 配置客户端信息,大部分可以直接Generate自动生成。要注意的是Allowed IPs配置每个客户端通过Wireguard的流量。在这里配置的所有ip段的流量都会被导向Wireguard server。比如我的配置中,除了Address流量,还有192.168.0网段的所有流量都会导向Wireguard Server转发。我这样配置不仅可以让虚拟局域网内设备相互关联,还可以从Client访问Server所在局域网。
  3. 点击Export configuration File可以生成一个文件供客户端使用。手机端还可以直接生成二维码。
  4. 点击Save保存。

4.配置clients(客户端)

客户端下载Wireguard,导入生成的那个文件直接应用配置即可。

以Windows为例,配置文件应该如下所示:

Windows配置
Windows配置

注意:将AllowedIPs中的10.8.0.X/32修改成整个网段,即10.8.0.0/24

5.Server剩余配置

依次点击Install tunnel serviceMake privateEnable NAT,完成剩余配置。成功后界面如下:

成功配置
成功配置

不出意外的话到这里为止部署就成功了。WS4W只是一个配置工具,关闭即可,真正的配置已经落实到Windows的各个角落。

3 一些细节收尾

3.1 在 Windows 上启用路由功能

  • 启用路由功能模拟端口转发,实现节点间通信
powershell
1
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -Name "IPEnableRouter" -Value 1
  • 服务中找到Routing and Remote Access,设置启动类型为自动,然后启动这个服务。

3.2 配置 Windows 防火墙

  • 允许 ICMP 回显请求(即 ping 请求)
powershell
1
New-NetFirewallRule -DisplayName "Allow ICMPv4-In" -Protocol ICMPv4 -IcmpType 8 -Enabled True -Action Allow -Profile Any
  • 视情况开放Server的51820端口(如果Client不能连接)
到这里你的Windows已经成为Wireguard Server啦!

评论