搭建个人链式VPN网络:高效隐私保护、设备无限制管理与远程访问

在某些场景中,我们可能需要搭建一个链式 VPN 结构,即先让内网设备连接到自建的 WireGuard 服务器(如个人 VPS),再通过该服务器将所有流量转发到另一个 VPN(公司、学校或商业 VPN 服务)后才进入互联网。搭建这种「VPN 套 VPN」的网络架构,有以下明显优势: 强大的隐私保护:内网设备的数据流量首先通过自己搭建的 WireGuard 加密隧道传输至个人 VPS,再由 VPS 二次通过商业或公司 VPN 进行转发,最终从该 VPN 的 IP 出口访问互联网。这种方式彻底避免了使用 VPS 自身 IP 地址直接访问目标网络,大大降低了个人 IP 被跟踪或泄露的风险。 集中化便捷管理:所有客户端设备统一连接到单个 WireGuard 服务,免去逐一配置每台设备的麻烦。更重要的是,它还能巧妙绕过一些商业 VPN 服务商设定的账号设备数量限制,一次付费,所有设备共享。 灵活便捷,轻松切换:由于商业或公司 VPN 配置仅在自建 WireGuard 服务器端修改一次即可生效,下游客户端(手机、电脑等)无需单独调整。这使得更换或重新配置上游 VPN 时更加迅速和便捷,大大提高日常维护的效率。 打造专属虚拟局域网,实现跨设备互通:一旦所有设备连接到自建的 WireGuard VPN 服务器后,将自动获得统一的 VPN 虚拟局域网 IP 地址(例如:10.8.0.0/16)。处于该网络中的设备能够直接互相通信,无需额外设置。 这种便捷性意味着无论你身处何处,都能轻松实现: 远程 SSH 登录:随时访问家中或办公室的服务器。 私有 NAS 媒体访问:在外轻松访问家中 NAS 存储的媒体文件。 远程办公:随时随地安全访问公司内部网络资源。 方案 经过本人的探索和实践,我逐步摸索出了自己的一套链式 VPN 方案。总体来看,我的方案完全基于 Docker 部署,所用到的核心组件有: gluetun:一个 Docker 镜像,内置 OpenVPN/ WireGuard 客户端,可连接到各大 VPN 服务提供商。本例中我们通过配置在 Docker 网络中提供 VPN 网关功能。 wg-easy:一个简化的 WireGuard Docker 镜像,内置 Web 界面,便于创建/管理 WireGuard 配置文件。下游设备通过 WireGuard 客户端连接到该服务,所有流量将被转发到 gluetun 容器,由 gluetun 再发给上游 VPN。 该方案的优势在于完全容器化部署,避免污染服务器/VPS 的环境。然后就是比较稳定,个人日常使用未发现明显延迟、卡顿、断流问题,而且性能良好(在个人家用带宽下测试)。另外,该方案现在能够支持 IPv6,即使设备身处 IPv4 的网络环境,也能通过链路实现对 IPv6 资源的代理访问。 ...

2025年6月2日

自建图床服务并配置免费CDN全球加速 过程记录

个人有一些图片托管的需求,在很多场景下比如说在博客文章中插入图片,在社交网站上分享图片,抑或是个人开源项目中的图片等等,都需要在文档(特别是 MarkDown)中嵌入一个 URL 直链来指向图片。对于一些免费的图床服务商,个人感觉并不是很信任。数据安全是一方面,另一方面如果服务商跑路了,那么很多原先我创建的链接都会失效。据我所知,这样的例子比比皆是。 网上还有一些教程将 GitHub 当成免费图床来用。这样做弊端也很明显,GitHub 在国内的访问速度非常慢,图片加载很慢。另外,缺少很多图床该有的功能,比如说自动压缩,自动转换成 Webp,自动重命名等等。这样做也是不太可行的。下面就是一个我将 GitHub 用作图床的例子。每次我还需要将图片移动到代码仓库里,然后 commit,push,我个人感觉很麻烦。 还有一段时间我试过把 WordPress 的 Midea 库当作图床来使用,但是我发现图片链接中带有 wp-content/upload 这样的路径。然后链接中还会出现图片的名称。我感觉并不是很雅观,而且在隐私的保护中有一种说不好的感觉。就像是别人一看这个 URL 链接,就能获知一些图片以外的信息。下面就是用 WordPress 的 Media 库当图床例子。可以看到,产生的直链不是很美观,而且还能暴露一些信息。 所以,我这边产生了自建图床服务的想法。这种图床最好能自动转换 jpg、png 格式的图片为 webp。这样图片就能比较高质量、快速地在用户浏览器中加载出来。有关 WebP 的简要介绍如下: WebP is a raster graphics file format developed by Google intended as a replacement for JPEG, PNG, and GIF file formats. It supports both lossy and lossless compression,[8] as well as animation and alpha transparency. Google announced the WebP format in September 2010, and released the first stable version of its supporting library in April 2018. ...

2023年11月18日

搭建一个免费开源好用的Docker面板 Portainer

Portainer 是一个好用的 Docker 容器控制面板。它的代码仓库在这里。它支持单节点和集群部署。 在此之前,我已经将个人服务器完全容器化了。如果能够可视化操作、监控各种容器,对于日常的运维帮助很大,感觉一切尽在掌握。 可以看看搭建好后的效果,界面还是很美观的。 可以快速拉取镜像 可以可视化发布容器,并灵活设置环境变量、网络、重启策略等等参数。 可以在镜像更新的时候,快速用新镜像更新容器。 还可以快速进入接入容器命令行,查看容器日志。 可以说,我日常需要的功能都有,感觉很完善了。 搭建 那么对于单点服务器来说,该如何搭建呢,首先你要确认你的服务器目前有安装 Docker。 可以输入docker -v来看看当前环境中是否存在 docker。 如果不存在,需要安装 docker,你可以在 Google 找找教程。对于 AWS 的 EC2,可以输入sudo yum install docker -y来安装。 确认安装好 Docker 后。确认一下 Docker 是否启动。然后看看/var/run 路径下是否有 docker.sock 文件。 然后,确认 8000 端口和 9443 端口都没有被占用,因为 Portainer 后续要用到这两个端口。 将应用数据存储在 Docker Volume 如果你想将 Portainer 产生的应用数据存在 Docker Volume 中,你可以直接执行下面的命令。后续部署完成后,Portainer 所使用的 Docker Volume 也可以在 Portainer 看到并管理。如果 8000 端口被占用了,可以将-p 8000:8000改成其他端口,类似-p 12345:8000。9443 端口也是类似。 如果你想指定容器名为其他,可以修改–name 参数,比如说--name myportainer。 ...

2022年11月23日

Ubuntu双系统重装Windows后修复grub2引导 UEFI

如果你在安装了 Ubuntu 和 Windows 双系统后,又重装了 Windows 系统。那么 Grub 引导项大概率会被 Windows Boot Manager 覆盖,这时候你就进不了 Ubuntu 了。但不要慌,按照下面的步骤可以修复 grub2 引导,而且不需要安装额外的软件。 制作 Ubuntu 的 U 盘启动盘 为了修复引导项,我们需要用到 Ubuntu 系统提供的软件工具。虽然我们暂时进不去原来的 Ubuntu 系统,但是我们可以使用写在 Ubuntu U 盘中的镜像来获得一个可用的基本 Ubuntu 环境。 在Ubuntu 官网下载镜像文件。 制作 U 盘启动盘可以使用免安装、小巧好用的rufus。你可以使用 rufus 快速创建一个 U 盘启动盘,注意选择 GPT 模式。 引导 U 盘启动盘 重启电脑,在 BIOS 引导设置中引导 U 盘,然后进入 Ubuntu 引导安装程序后,在安装界面选择 Try Ubuntu 进入 Ubuntu Live。 执行 Grub2 重建操作 使用 fdisk,找到 EFI 分区,/boot 挂载点所在的分区(如果你没有设置/boot 挂载点则为/挂载点)。 挂载/boot 挂载点所在的分区到/mnt 下(我的分区在 nvme 固态硬盘上)。 ...

2021年11月26日

解决yarn安装electron、chromedriver等软件包超时、缓慢的问题

在国内使用 yarn 安装 electron、chromedriver 是经常出现无法连接的问题,这个时候,相对于设置代理,我们可能更希望使用在国内的镜像仓库来加速这个过程。并且安装 electron 的时候,单单设置 yarn 的全局代理是没有用的。那如何根据不同的软件包设置代理呢?你可以按照以下列表中提供的命令样例来设置。 yarn 全局设置 设置 yarn 安装一般的软件包时使用的仓库地址。 yarn config set registry https://r.npm.taobao.org 注册模块镜像 yarn config set disturl https://npm.taobao.org/dist # node-gyp 编译依赖的 node 源码镜像 这是运行以上命令的结果,你可以很清楚地看到设置是否成功。 yarn 安装特定软件包设置 设置 yarn 安装 electron 、chromedriver 等软件包安装使用到的仓库地址。你可以按照需要选择一两个命令来设置,一股脑全部加上是被必要的。 yarn config set sass\_binary\_site https://npm.taobao.org/mirrors/node-sass # node-sass 二进制包镜像 yarn config set electron\_mirror https://npm.taobao.org/mirrors/electron/ # electron 二进制包镜像 yarn config set puppeteer\_download\_host https://npm.taobao.org/mirrors # puppeteer 二进制包镜像 yarn config set chromedriver\_cdnurl https://npm.taobao.org/mirrors/chromedriver # chromedriver 二进制包镜像 yarn config set operadriver\_cdnurl https://npm.taobao.org/mirrors/operadriver # operadriver 二进制包镜像 yarn config set phantomjs\_cdnurl https://npm.taobao.org/mirrors/phantomjs # phantomjs 二进制包镜像 yarn config set selenium\_cdnurl https://npm.taobao.org/mirrors/selenium # selenium 二进制包镜像 yarn config set node\_inspector\_cdnurl https://npm.taobao.org/mirrors/node-inspector # node-inspector 二进制包镜像 和上面的类似,运行命令后你可以很清楚地看到设置是否成功。 ...

2021年11月22日

oh my zsh 在Ubuntu下的配置教程

oh my zsh 是十分好用的基于 zsh 的配置框架,它能简化 Linux 终端用户的很多日常操作。而且,它的界面相对于原始的 bash 来说,非常好看。这篇文章就是用来介绍如何在 Ubuntu 下安装并配置 oh my zsh 及其常用插件的。 oh my zsh 安装与基本配置 在 oh my zsh 安装前需要先执行以下命令安装下列 git、curl、zsh。 % sudo apt install git curl zsh 安装完依赖项目后,直接执行下面的命令来一键安装: % sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 设置 zsh 为默认 shell: % chsh 按照提示一步一来,输入/bin/zsh 即可。 常用插件安装 单单配置 oh my zsh 本身是远远不够的,你可能需要以下常用插件来真正达到简化操作的目的。 z 历史目录管理 zsh-autosuggestions 命令提示 zsh-syntax-highlighting 高亮 sudo 忘记加 sudo 前缀之时 extract 一个命令解压几乎所有安装包 z 无需额外安装,直接在 plugins 中填写即可。 zsh-autosuggestions 先执行以下命令,然后在 plugins 中填写。 ...

2021年11月22日

使用 space-vim-dark 一键配置、美化vim编辑器

一直以来我都使用一些成熟的配置文件来帮助我配置、美化 vim 编辑器,然而我原来使用的 spf13-vim.sh 已经很久不更新了,它的插件列表中有些插件已经不能正常下载了。所以我想寻找它的替代品,最后发现 space-vim-dark 还不错。 space-vim-dark 基本介绍 经过我的寻找,找到了一个比较好用且美观的配置文件 space-vim-dark。这个 space-vim-dark 可能是国人编写的 vim 配置文件,它能很好使得 vim 适应暗色模式。 先贴出仓库地址:https://github.com/liuchengxu/space-vim-dark 这是它的效果图,整体看还是不错的。 用它配置、美化 vim 编辑器 设置 space-vim-dark 非常简单,你只需要在你的 vim 插件管理器中添加下面的设置。 Plug 'liuchengxu/space-vim-dark' 整体使用下来,我觉得该有的插件还是有的,并且用起来顺手不少。 加入额外配置 在~/.spacevim 中可以加入你自己的一些配置。

2021年11月22日

方便快速地写好.gitignore

如果你建立了一个 Git 仓库,.gitignore 是你需要考虑的一个选项。 如果你想套用模板的话,推荐使用如下仓库地址中提供的模板: 进入仓库地址: https://github.com/github/gitignore 各种模板覆盖比较全,可以根据你的具体需求组合使用。

2021年5月26日

正确地进行SSH的相关配置文件的权限设置

如果当导入外部的 SSH 公私密钥之时,可能需要在家目录下新建.ssh 文件夹并将公私密钥移动到该文件夹下。但如果没有将权限问题配置正确的话,会导致密钥无法使用的问题。 这里给出一组命令对分别配置文件夹、公私密钥的权限进行设置: % chmod 700 ~/.ssh % chmod 600 ~/.ssh/id\_rsa % chmod 600 ~/.ssh/id\_rsa.pub % chmod 600 ~/.ssh/authroized\_keys

2021年5月26日

为MacOS的终端加上代理设置

MacOS 现在默认采用 Zsh,所以在用户家目录下寻找.zshrc 配置文件,如果没有则自行创建。 编辑.zshrc 文件,在最后加入下列代码 \# set proxy alias proxy='export all\_proxy=socks5://127.0.0.1:1234' alias unproxy='unset all\_proxy' 添加完毕后,保存,在终端输入以下命令 % source ~/.zshrc 完毕。 如果需要使用代理,则预先输入 proxy 命令。如果需要取消代理,则输入 unproxy 命令。 或者如果需要默认启用代理的话,在.zshrc 配置文件末尾添加 % export https\_proxy=http://127.0.0.1:7890 http\_proxy=http://127.0.0.1:7890 all\_proxy=socks5://127.0.0.1:7890 保存。 % source ~/.zshrc 完毕。

2021年5月25日