Wireguard

【译文】使用 WireGuard 远程接入局域网

原文地址:https://www.laroberto.com/remote-lan-access-with-wireguard/

本文中,让我们来看看如何使用WireGuard建立一个简单而安全的隧道(VPN)到你的本地局域网(homelab)。我们将采用VPS的方式,这样我们就不必向互联网暴露任何端口。

我们将模拟以下设置

角色:

  • Router - 将作为你的局域网网关(向内)的机器。
  • Server - 具有公网IP的机器,所有客户将连接到它,也被称为Bounce Server。
  • Client - 你,试图在某个地方远程连接到局域网。

配置 #

注意:所有的机器都基于 Ubuntu,根据你选择的 Linux 发行版调整设置

Server 和 Router #

对于Server 和Router执行以下操作

sudo apt update && sudo apt upgrade
sudo apt install wireguard
wg genkey | tee privatekey | wg pubkey > publickey
sudo sysctl net.ipv4.ip_forward=1

注意:要持久化 IP 转发,编辑 /etc/sysctl.conf,添加 net.ipv4.ip_forward=1

对于Server,创建 /etc/wireguard/wg0.conf:

[Interface]
Address = 192.168.10.1/32
ListenPort = 51820
PrivateKey = <Server's Private Key>

# Router Peer
[Peer]
PublicKey = <Router's Public Key>
AllowedIPs = 192.168.10.0/24, 10.0.20.0/24

对于Router,创建 /etc/wireguard/wg0.conf:

...

如何进行内网穿透

内网穿透,又称 NAT 穿透,主要目的是为了访问位于 NAT 后的计算机。我的使用场景是访问位于实验室的机器,实验室网络环境为中国联通的 4G,这种情况下端口映射之类的方法是无能为力的,下面主要回顾一下自己用过的几种内网穿透方法。

SSH 端口转发 #

花样繁多,暂时没有搞清楚,待补充。

Zerotier #

https://www.zerotier.com/

不需要公网服务器。

商业服务,免费用户有一定限制,但是可用。有跨平台的客户端,非常适合懒得自己动手的人。但是速度一般。

frp #

https://github.com/fatedier/frp

需要公网服务器。

配置简单,样例丰富,稳定。个人使用体验非常不错,适合两个节点之间的连接。

WireGuard #

https://www.wireguard.com/

需要公网服务器

开源,现代。组建好个人虚拟局域子网后,在此子网内的设备可以相互进行无感的连接,非常方便。

tinc #

tailscale #

基于 wireguard 的 mesh vpn 服务 magic dns

nebula #

【译文】如何轻松配置 WireGuard

在网上搜索 WireGuard 时机缘巧合发现的一篇非常不错的教程,之所以说机缘巧合,是先在知乎专栏发现了一篇机翻的文章,虽然机翻质量很差,但浏览发现确实是我需要的资料,遂找到原文翻译,光荣属于原作者 Stavros Korokithakis,glory belongs to Stavros Korokithakis :)。原文链接 How to easily configure WireGuard 以下是译文。

WireGuard非常棒!

最近你可能注意到了网络上关于 WireGuard 的口碑谈论。WireGuard 是一个非常简单的VPN,它使用最先进的密码技术。其口碑既来自于 WireGuard 本身的简单好用,也来自它将默认包含于 Linux 内核。Linus Torvalds 本人说他很喜欢 WireGuard,这在软件社区风靡一时,因为我们并不知道 Linus 居然能够表达爱或者除了憎恶之外的任何情感。

我在 WireGuard 使用中遇到的唯一问题是缺少文档,更准确地说是缺少预期的文档。快速入门指南提到了一个配置文件,但它从未告诉你应该如何编写这个配置文件,而且它还假设你比我更熟悉网络知识。

因为宇宙形成的初始条件决定了一切,所以 WireGuard 的文档终将不足,我将违背造物主向你展示如何轻松配置和运行它。我们开始吧!

简短概述 #

![[Pasted image 20241118205757.png]] 一个看起来有点结实的守卫,确保你不会下意识地觉得这个帖子干燥无聊。

WireGuard 的核心是创建从一台计算机到另一台计算机的接口。它实际上不能让你访问网络任何一端的其他计算机或通过 VPN 服务器转发所有流量,或类似的任何内容。它只是直接、快速且安全地连接两台计算机。

要做除此之外的任何事情,你需要为它配置网络,而这并不再 WireGuard 文档的范围内,但就 VPN 来说这很重要。幸运的是,WireGuard 附带了一个帮助脚本wg-quick,几乎可以满足普通用户的所有需求。注意 wg-quick的配置文件与wg可执行文件不兼容,但我们只需要wg-quick,所以不用担心这个。

让我们开始设置一切。

安装和设置 #

要安装 WireGuard,请参阅安装页面,它应该非常简单。安装后,你需要为访问 VPN 的每台计算机生成一个私钥和一个公钥。由于 WireGuard 的设计,一个链接两端的计算机都需要拥有对方的公钥。

让我们生成这些密钥。在位于 VPN 中的每台计算机上,创建目录 /etc/wireguard/,并在每台计算机上刚刚创建的目录中,执行这些命令:

$ umask 077  # This makes sure credentials don't leak in a race condition.
$ wg genkey | tee privatekey | wg pubkey> publickey

这将在每台计算机上生成两个文件privatekeypublickeypublickey文件用于告诉全世界,privatekey文件是秘密的,应该保留在生成它的计算机上。

...