我有一个程序“SillyTavern”,它使用 WebUI,本质上是一个 Web 服务器。我的第一个目标是让这个程序的 WebUI 可以通过我的智能手机从任何地方访问。我通过在路由器中设置端口转发规则来实现这一点,该规则将我的 PC 的私有 IP 链接到路由器的公共 IP([我的公共 IP]:7215 到 192.168.0.10:7215)。
我的下一个目标是找到一种方法来加密我的两个设备之间的流量。我找到的解决方案是 WireGuard,我的实现如下:
- 首先,我安装了 WireGuard,并根据 WireGuard 的快速入门指南在我的 PC 上进行了设置。wg0 的私有 IP 设置为 192.168.0.200/24,我的配置文件如下:
PrivateKey = [. . .]
ListenPort = 7215
[Peer]
PublicKey = [. . .]
PresharedKey = [. . .]
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 10
- 然后,我在智能手机上设置了WireGuard。配置如下:
Addresses = 192.168.0.201/24
DNS Servers = 8.8.8.8
Listen Port = 7215
MTU = "Auto"
Allowed IPs = 0.0.0.0/0
Persistent Keepalive = 10
- 最后,我将路由器中的端口转发规则更改为“[我的公共 IP]:7215 到 192.168.0.200:7215”。我在两台机器上都激活了 WireGuard,并尝试访问 Web 服务器:连接超时。
我所做的任何研究都没有给我任何提示,让我知道我哪里出了问题。我尝试将端口转发规则改回以前的样子,结果是一样的。如果我尝试仅在 PC 上运行 WireGuard 进行连接,我可以正常连接。提前感谢您提供的任何见解。
[更新于 08/18/24] 我在手机配置中的“端点”字段中添加了“[我的路由器的公共 IP]:7215”。这似乎完成了隧道,因为现在我的手机显示以下内容:
Transfer
rx: 440B, tx: 3.66KiB
Latest handshake
3 seconds ago
但是,当我尝试通过手机浏览器访问我的网络服务器时,仍然会出现连接超时的情况。
好吧,事实证明我太蠢了。整个问题……都是由一个拼写错误引起的。X_X
因此,对于任何想要免费保护他们的 SillyTavern 实例的人来说,经过几天的修改后,我的配置最终变成了这样:
电脑配置:
sudo ip route add 10.0.0.0/24 dev wg0 scope link
手机配置
路由器配置
ping 10.0.0.10
您应该会得到 0% 的数据包丢失。使用隧道(哪里出了问题)
完成所有设置后,访问 WebUI 非常简单,只需在手机的 Web 浏览器中访问“192.168.0.200:8000”(我将其更改为监听端口 8000)。只要有互联网,就可以从任何地点访问该程序,但只能通过我的手机访问,并且只有当 WireGuard 在两台设备上运行时才可以访问,这正是我想要的行为。
但是……SillyTavern 只使用 HTTP,而我的手机网络浏览器默认会阻止 HTTP。所以当我这个懒鬼输入“192.168.0.200:8000”而不是“ http:// 192.168.0.200:8000”时,它拒绝连接,我只能去弄乱更多东西,想知道到底是哪里出了问题。问题出在我身上。X_X