在安卓设备上使用 WireGuard VPN 来保护您的家庭网络

  • WireGuard 提供快速、安全且易于设置的家庭 VPN,非常适合从 Android 和其他设备访问您的网络。
  • 关键在于生成密钥对,正确定义允许的 IP 地址,启用转发和 NAT,并使用适当的防火墙保护 UDP 端口。
  • 如果启用了 CGNAT,则 VPS 作为桥接器,允许您通过远程服务器和家庭 LAN 之间的 WireGuard 隧道继续访问您的家庭网络。
  • WireGuard Easy 等面板和官方应用程序通过二维码和可重用的 .conf 配置文件,方便用户进行对等管理和移动使用。

WireGuard VPN

如果你在家中搭建了一个小型技术设备, NAS、Linux 服务器或装满服务的回收计算机我相信你也遇到过同样的问题:在家时一切正常,但一旦离开家,就什么都做不了了。你无法访问应用程序、文件或网络摄像头,要么会陷入端口配置问题、DDNS 问题和安全风险的泥潭,要么就只能…… 推荐的安卓VPN.

解决此问题的最简单、最安全的方法是创建一个 使用 WireGuard VPN 并通过 Android 设备连接 (以及从任何其他设备)。这样,即使您的 ISP 使用 CGNAT 或您的网络拓扑结构比较复杂,您也可以像身临其境一样使用您的家庭网络。让我们一步一步来:从 WireGuard 是什么开始,如何在 Linux 上设置它(或使用 Docker 和 EasyPanel/WireGuard Easy 等面板),以及如何对其进行微调以访问您的 LAN 和 在安卓设备上激活 VPN 并可安全地通过移动设备浏览网页。

什么是 WireGuard?为什么它是家庭 VPN 的理想选择?

WireGuard 是一种现代、简约且速度极快的 VPN 协议。 它彻底改变了虚拟专用网络的搭建方式。与 OpenVPN 或 IPsec 等过时的技术不同,它从一开始就被设计成配置简单、易于审计且极其高效。

它的代码库非常小(大约只有 几千行这使得查找漏洞和保持系统更新变得更加容易。在加密方面,它仅使用现代且备受认可的算法,例如: Curve25519、ChaCha20、Poly1305、BLAKE2s 以及其他公司。没有冗长的过时密码列表,那些密码早已被人弃用。

此外,它仅适用于 UDP协议可以集成到Linux内核中。因此,延迟很低,性能非常好,CPU占用率几乎可以忽略不计。这一点在使用Android设备通过4G/5G或普通Wi-Fi连接时尤为明显:重新连接速度很快,而且隧道能够很好地应对网络变化。

这种设置也更加人性化:每个设备都有一个 公钥/私钥对它被分配了一个内部 VPN IP 地址,并且通过隧道发送的流量由策略定义。 允许的IP有了这些,再加上一个 UDP 端口和另外四个设置,就可以让它运行起来,而无需几十个晦涩难懂的参数或无穷无尽的文件。

另一个很大的优势是: WireGuard 是跨平台的: 有 Android 官方客户端它兼容 iOS、Windows、macOS 和 Linux,也可以在路由器、Docker 容器或嵌入式设备上运行。在移动设备上,您可以导入 .conf 文件或直接扫描配置文件。 服务器生成的二维码 准备好了。

设置 WireGuard 服务器之前的基本要求

在胡乱粘贴命令之前,最好先检查一下是否满足某些要求。 Android 系统可访问的 WireGuard 服务器的最低要求这将为你省去很多麻烦。

最常见的方法是使用 linux服务器这可以是云端虚拟专用服务器(Ubuntu 22.04 是一个非常便捷的选择),也可以是家用机器(例如 Raspberry Pi、迷你电脑、支持 WireGuard 的 NAS 等)。任何支持 WireGuard 的现代发行版都可以,但 Ubuntu/Debian 提供了更多文档和示例。

VPN 安全协议
相关文章:
最常用的VPN安全协议:2025年综合指南、差异及建议

你需要一个用户 管理权限 (需要root用户或具有sudo权限的用户),因为您将安装软件包、调整网络设置、启用IP转发,并可能修改防火墙规则。此外,拥有服务器的SSH访问权限也至关重要,并且您至少需要知道如何从您的计算机连接到服务器。

在客户端,您主要会使用您的 安装了官方 WireGuard 应用的安卓智能手机虽然相同的配置方案适用于 Windows、macOS、Linux 或 iOS,但不同平台之间的配置文件差异很小,因此您在这里学到的知识对所有平台都适用。

最大的敌人:CGNAT 及其对家庭 VPN 的影响

尤其当服务器位于家中时,最重要的一点是了解您的服务提供商是否将您置于网络之后。 CGNAT(运营商级NAT)在 CGNAT 模式下,您与其他客户端共享一个公共 IP 地址; 您无法向家庭网络开放端口这使得在家庭网络连接上暴露 VPN 服务器变得极其困难。

检测方法很简单:首先,写下你的 公共IP 在浏览器中访问类似“whatismyip”的网站。然后访问路由器的控制面板(通常地址为192.168.1.1或192.168.0.1),在WAN或Internet部分查找路由器认为它拥有的IP地址。如果该IP地址以……开头 10.xxx 或在 100.64.0.0 – 100.127.255.255 范围内 如果信息与网站上的不符,则说明您使用的是CGNAT的服务。另一种直接的方法是致电运营商询问。

使用 CGNAT 时,您的路由器不会收到直接的公共 IP 地址,因此 你不能进行传统的端口转发。有些公司允许你通过额外付费或激活某个选项来选择退出 CGNAT,而有些公司则要求你更改套餐,有时价格还会飙升。如果你不想经历这些麻烦,明智的做法是切换到…… VPS作为桥梁您的家用服务器会创建一个到 VPS 的 WireGuard 隧道,然后您可以通过 Android 连接到 VPS 来访问您的家庭局域网。

准备 Linux 服务器:WireGuard 更新和安装

在运行 Ubuntu 22.04(或类似版本)的服务器上,首先要做的事情是 更新包 为避免遗留漏洞或旧版本:

apt update && apt upgrade -y

然后使用以下命令从官方软件仓库安装 WireGuard:

apt install -y wireguard

此软件包包含以下工具 wg 和 wg-quick 并加载必要的内核模块。如果您想在某种特殊环境下强制手动加载,可以使用:

modprobe wireguard

密钥生成和服务器配置结构

WireGuard 的核心是系统 公钥和私钥通常情况下,工作是在标准目录中完成的。 /etc/wireguard/这里将用于存储密钥和配置文件。

切换到该目录,并在创建任何内容之前加强默认权限:

cd /etc/wireguard/
umask 077

这确保了 新文件可能无法被其他用户读取这在生成私钥时至关重要。例如,生成服务器密钥对:

wg genkey > privatekey
wg pubkey < privatekey > publickey

La 私钥 它必须始终保留在服务器上,绝不能离开服务器; 公钥 是的,您可以与客户分享。此外,请避免使用可能泄露机密信息的第三方应用程序;请查阅相关主题的文章。 不安全的 VPN 应用程序 如果您对客户有任何疑问。

chmod 600 privatekey

如果您想在屏幕上查看按键以便稍后复制,可以使用:

tail privatekey publickey

创建并编辑服务器的 wg0.conf 文件

WireGuard VPN

WireGuard 将其隧道组织成…… 虚拟接口 调用方式按约定为 wg0、wg1 等。每个接口都有自己的配置文件。 /etc/wireguard/我们将创造 配置文件 作为主要界面。

如果您喜欢 Nano 但尚未安装,可以通过以下方式添加:

apt install -y nano

打开配置文件:

nano /etc/wireguard/wg0.conf

在编写任何内容之前,请先确定连接到互联网的网络接口名称(即具有公网 IP 地址或用于通过 SSH 连接的 IP 地址)。您可以使用以下命令找到它:

ip a

在许多VPS中,它被称为 eth0、ens3、enp0s3 或者类似的东西。你需要它来编写 NAT 规则。一个完整的阻止规则示例可能是:


Address = 10.30.0.1/24
PrivateKey = <clave_privada_servidor>
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

这里你给服务器提供了 IP 地址 VPN网络内的10.30.0.1你需要让它监听 UDP 端口 51820,并定义当 wg0 接口启动时适用的 iptables 规则(张贴)并在向下移动时被移除(帖子下载更换时要小心。 eth0 按输出接口的实际名称。

在 Nano 中,您可以节省 按Ctrl + O 最后,你以……结束。 按Ctrl + Xwg0.conf 将是核心,您将在此基础上添加不同的客户端(对等节点)。

启用 IP 转发并启动 WireGuard 服务

要让您的客户端能够访问 VPN 服务器后面的互联网或局域网,系统必须允许以下操作: IPv4 和 IPv6 数据包转发这是通过 sysctl 控制的。

一个快捷的方法是将相应的行添加到 /etc/sysctl.conf中 或保存到文件中 /etc/sysctl.d/ 并充电:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf
sysctl -p

如果这些代码行已经存在但被注释掉了(用#标记),那么只需…… 移除#保存并重新启动 sysctl -p如果没有这一步,隧道虽然会建立起来,但客户端将无法访问局域网或互联网。

现在您可以借助以下工具抬起 WireGuard: 快速工作组 以及 systemd:

systemctl start wg-quick@wg0

要使其随系统自动启动:

systemctl enable wg-quick@wg0

检查所有颜色是否都为绿色:

systemctl status wg-quick@wg0

要查看接口、密钥、对等节点和流量的实时详细信息,请使用:

wg

添加客户端:PC、安卓手机及其他设备

连接到您的 VPN 的每个设备都被定义为一个 对等方使用自己的密钥和隧道 IP您可以在服务器本身上生成密钥(更方便),也可以在每个客户端上生成密钥(更安全,因为私钥永远不会离开客户端)。

例如,对于台式电脑,你可以这样做: /etc/wireguard/:

wg genkey > mypc_privatekey
wg pubkey < mypc_privatekey > mypc_publickey

适用于您的安卓手机:

wg genkey > myphone_privatekey
wg pubkey < myphone_privatekey > myphone_publickey

使用以下命令检查文件:

ls

它会显示公钥:

tail mypc_publickey myphone_publickey

这些公钥就是你要输入的密钥。 wg0.conf 位于块内 再次打开服务器文件:

nano /etc/wireguard/wg0.conf

他还补充道,例如:


PublicKey = <clave_publica_mypc>
AllowedIPs = 10.30.0.2/32

公钥 =
允许的IPs = 10.30.0.3/32

这样做就相当于预留了 IP 地址。 PC 版 10.30.0.2适用于安卓手机的 10.30.0.3 版本/32 表示这是一个独立的 IP 地址。VPN 子网中的每个对等节点都使用自己唯一的 IP 地址。

保存并重新加载服务以应用更改:

systemctl restart wg-quick@wg0

创建客户端配置文件

现在是时候准备了。 客户端将使用的 .conf 文件其中包括您的私钥、内部 IP、DNS 和服务器数据(公钥、IP/域名和端口)。

对于PC,你可以创建 我的电脑配置文件 在 /etc/wireguard/ 目录下(或者您喜欢的任何位置):

nano mypc.conf

内容类型:


PrivateKey = <clave_privada_mypc>
Address = 10.30.0.2/24
DNS = 1.1.1.1

公钥 =
终点 = 51820
允许的IPs = 0.0.0.0/0
持续保持活动 = 20

在第一个代码块中,您定义客户端的本地“接口”:其私钥、VPN IP 地址以及它将使用的 DNS 服务器。在第二个代码块中,您描述服务器:其公钥、地址和端口。 允许的IPs = 0.0.0.0/0 使 所有客户流量都通过 VPN 传输。 (完全隧道)。如果您只想访问远程局域网,您可以将其限制为 10.30.0.0/24 和/或 192.168.x.0/24,具体取决于您的网络情况。

PersistentKeepalive 建议每隔 20-25 秒对 NAT 或移动网络后面的客户端进行一次会话恢复,这样可以防止隧道显示为不活动状态,并防止防火墙关闭会话。

如何在安卓设备上激活 VPN
相关文章:
如何在安卓设备上激活 VPN 并阻止不安全流量

Android客户端特定配置

在安卓系统上,流程相同。手机需要…… 私钥,您的隧道 IP 以及服务器数据。您可以重复使用在服务器上生成的密钥,也可以直接在应用程序中生成密钥。

按照示例,您创建了 我的手机私钥和我的手机公钥您的手机缺少 myphone.conf 文件:

nano myphone.conf

类似这样的:


PrivateKey = <clave_privada_myphone>
Address = 10.30.0.3/24
DNS = 1.1.1.1

公钥 =
终点 = 51820
允许的IPs = 0.0.0.0/0
持续保持活动 = 20

棘手之处在于…… 如何安全地将该文件发送到手机在实验室环境中,您可以将其上传到 Web 服务器并下载,但在生产环境中,最好避免通过电子邮件发送或将其存储在未加密的服务上。

最干净的方法通常是使用 二维码 生成一个可供 Android 版 WireGuard 应用扫描的二维码:

apt install -y qrencode
qrencode -t ansiutf8 -r myphone.conf

您将在终端上看到一个ASCII字符的二维码。在您的移动设备上,打开WireGuard应用程序,选择“扫描二维码“(扫描二维码)并指向屏幕。这样您就无需通过不正当渠道分享 .conf 文件了。”

访问家庭局域网、DNS 和本地名称

除了修建隧道之外,还有什么有趣的地方呢? 在安卓设备上使用 WireGuard VPN,实现安全的家庭网络连接。 它指的是能够像身临其境一样访问所有家用设备:NAS、IP摄像头、路由器、媒体服务器等等,理想情况下是使用 使用本地域名而不是 IP 地址.

许多集成了 WireGuard 服务器或内部 DNS 的路由器都有一个类似这样的部分。 网络 → DNS → 编辑主机 您可以在这里创建类似这样的条目 192.168.1.50 nas-casa.local如果将 VPN 客户端的 DNS 指向解析这些名称的路由器或服务器,则可以通过主机名访问您的设备。

一些带有 WireGuard 的路由器固件包含类似这样的复选框。 “允许远程访问局域网”“远程访问 LAN 子网”或类似名称。您必须启用这些设置,以便远程客户端可以访问。 本地子网(192.168.xx) 除了路由器本身之外。

在 WireGuard 服务器嵌入路由器运行的场景中,通常允许 导出预先准备好的 .conf 配置文件 适用于移动设备或其他客户端路由器。这些配置文件通常包括隧道 IP 地址、正确的 DNS(通常是路由器在 VPN 网络上的自身 IP 地址)以及正确配置的 AllowedIPs。

验证、故障排除和安全

配置导入 Android 系统并激活隧道后,首先要做的就是检查: 握手过程正常进行。WireGuard 应用本身会显示状态、已发送/已接收的字节数以及上次握手时间戳。

在服务器上运行:

wg

您可以在这里看到每个对等节点的公钥、连接的远程 IP 地址、上次握手时间以及交换的数据量。如果“上次握手时间”字段为空或时间过长,则表示客户端无法连接或连接被阻止。

如果没有连接,请检查…… UDP端口(51820或您使用的任何端口)已打开 在服务器防火墙(UFW、iptables、nftables)以及任何中间路由器上进行配置。如果服务器位于家用路由器之后,则需要进行以下配置: 将该端口的 UDP 端口转发到服务器的内部 IP 地址该问题可能影响特定应用程序;请参阅我们的指南。 启用 VPN 后应用程序运行失败该怎么办?.

如果隧道已打开但您没有移动互联网连接,请检查数据包转发(net.ipv4.ip_forward 和可选 net.ipv6.conf.all.forwarding)处于活动状态,并且 NAT 规则指向正确的出接口(eth0、ens3 等)。

当您可以 ping 通某个特定的 IP 地址(例如 1.1.1.1)但无法解析域名时,通常可以检测到 DNS 问题。在这种情况下,请检查以下行: DNS = 在客户端的 .conf 文件中:您可以使用公共 DNS(8.8.8.8、1.1.1.1)或服务器的隧道 IP 地址(如果它充当内部解析器)。

就安全性而言,除了 WireGuard 的加密技术之外,还有许多其他因素需要考虑。 基本良好实践:

  • 保护好您的私钥请勿将它们复制到不安全的网站或与任何人分享。
  • 限制每个对等体的允许IP地址:仅允许每个客户端访问其需要的网络,不提供完全的访问权限。
  • 使用非平凡的UDP端口用更高值的 51820 替换 51820 可以降低自动扫描的噪声。
  • 保持您的系统和 WireGuard 为最新版本每天打补丁。
  • 过滤对 WireGuard 端口的访问 在防火墙中限制哪些人可以尝试连接(在合理的情况下按源 IP 地址限制)。

当您拥有 CGNAT 或想要更高级的功能时:可以通过 VPS 建立隧道

如果您的运营商使用 CGNAT 服务,或者您只是想将家中的公共接入层与网络隔离,您可以设置一个稍微复杂一些但功能非常强大的解决方案: 使用VPS作为中心节点,将您的家用服务器作为客户端。然后你通过安卓设备连接到VPS,并通过它访问你的局域网。

基本方案如下:在云端设置一个 WireGuard“服务器” (例如,使用 Docker 和类似 linuxserver/wireguard 的技术栈或预构建的仓库),您可以启用转发和 NAT,在家中,您就可以…… 树莓派或PC始终在线 它以对等连接的方式连接到该VPS。该VPS拥有公网IP地址,不受CGNAT影响,因此您可以毫无问题地在其上打开端口。

使用 Docker 的典型工作流程可能是:

  • 在VPS上安装Docker和Docker Compose,克隆WireGuard配置存储库, 您可以使用 `docker-compose up -d` 命令启动容器。.
  • 容器会自动生成服务器密钥和几个对等节点(peer1、peer2…)的密钥,并将它们 .conf 文件保存在 config 文件夹中。
  • 您需要调整服务器文件以包含您的 AllowedIPs 中的家庭子网(例如 192.168.1.0/24) 在您的 Raspberry Pi 将使用的对等节点上配置 iptables 或等效规则,以便在 VPN 和您的家庭网络之间路由流量。
  • 在 Raspberry Pi 上,克隆相同的存储库(或准备好的存储库),使用为 peer1 生成的数据创建 wg0.conf 文件,启用本地 NAT(以便能够将流量发送回 LAN),然后在 Docker 中或以原生方式启动 WireGuard 客户端。

从那里,任何其他设备(包括您的) Android 系统及 WireGuard 应用您可以使用VPS的附加对等节点(peer2、peer3……)进行连接。实际上,您始终连接到VPS的IP地址,但最终访问的仍然是您的家庭网络服务,即使经过CGNAT也是如此。

WireGuard 及其 Web 面板:WireGuard Easy、EasyPanel 等

如果你觉得这一切听起来太像游戏主机了,那么有很多非常便捷的解决方案可以帮你设置…… 通过 Web 面板一键管理 WireGuard例如,在安装了 EasyPanel 的服务器上,您可以部署如下应用程序: WireGuard Easy 使用模板,无需手动编写文件。

使用这些面板的工作流程通常是:

  • 您可以使用您的用户帐户访问面板(EasyPanel 或其他面板)。
  • 您安装模板 WireGuard Easy定义诸如域/公共 IP (WG_HOST)、UDP 端口、VPN 子网和 DNS 等参数。
  • 系统启动一个容器,该容器会公开一个受密码保护的 Web 界面,您可以在其中看到 对等节点列表、统计信息和配置选项.
  • 要添加客户,只需填写包含其姓名的表单;面板会生成密钥,为其分配 IP 地址,并显示相关信息。 二维码已准备好用安卓设备扫描此外,它还允许您下载 .conf 文件。

这在多人使用 VPN 的环境中(例如家庭、工作团队等)非常方便,因为您可以 几秒钟内即可激活或撤销访问权限 无需解释任何技术细节。此外,如果您在 VPS 上部署 WireGuard Easy,则可以集中管理对家庭网络和其他位置的所有远程访问。

WireGuard 在其他系统上的应用:Windows、macOS、Linux、iOS

虽然我们这里主要关注 Android,但 WireGuard 也同样适用于其他平台。 台式机和其他移动设备例如,在Windows系统中,您可以下载官方客户端,安装它,然后按“添加隧道您可以选择“添加空隧道”或“从文件导入”,程序本身可以为您生成密钥对。

配置格式相同:包含您的代码块 私钥、地址和 DNS并用 服务器的公钥、端点和允许的 IP 地址保存后,只需按下“激活”按钮即可启动界面并开始交通流量。

在 iOS 系统上,操作过程与 Android 系统非常相似:从 App Store 安装 WireGuard 应用,创建一个新的隧道,然后就可以…… 导入 .conf 文件或扫描二维码 你可以使用二维码或 WireGuard Easy 等控制面板生成二维码。然后,你通过开关激活隧道,即可进入你的家庭网络。

在桌面 Linux 系统上,您可以使用命令行工具本身(wg-快速启动 wg0或者,您也可以通过图形界面导入 .conf 文件,将其与 NetworkManager 集成。此外,还有一个官方的 macOS 客户端,其使用体验与 Windows 版本非常相似。

最后,有 所有平台都采用相同的协议和配置方案 它大大简化了操作:只需更改密钥和隧道 IP,即可将逻辑从一个客户端复制到另一个客户端。

Android VPN
相关文章:
安卓最佳VPN:2025年及以后所有选项、风险和技巧的终极指南

有了这些组合——配置良好的 Linux 或 Docker 服务器、如果您拥有 CGNAT 则可能支持 VPS、用于简化管理的 Web 控制面板以及 Android 上的 WireGuard 应用——您就可以设置一个 强大、快速、安全的家庭 VPN 它允许您访问您的家庭网络、文件和服务,并在公共 WiFi 上安全浏览,而无需依赖第三方或不透明的商业解决方案。 分享此信息,让其他人也了解这项新功能.