You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过反向代理将公网流量路由至VPN内远程4G树莓派Web服务器的配置故障排查

通过反向代理将公网流量路由至VPN内远程4G树莓派Web服务器的配置故障排查

看起来你的基础架构已经搭得有模有样了,公网访问卡壳肯定是某个环节的细节没做对,咱们一步步拆解排查:

先梳理核心流量路径

当前的流量逻辑是:公网设备 → 你的公网IP:81 → 路由器转发到NAS(192.168.15.4):81 → NAS反向代理转发到VPN客户端树莓派(10.0.8.10):80 → 树莓派Caddy返回内容。咱们从内到外逐个验证:

1. 先排查NAS到树莓派Web服务的连通性

在NAS本地(比如SSH登录NAS后)执行curl http://10.0.8.10:80,看看能不能正常拿到树莓派Web服务器的页面内容:

  • 如果拿不到:说明树莓派的Caddy配置有问题,检查Caddy是否监听的是0.0.0.0:80而不是仅绑定树莓派的4G网卡IP;另外确认树莓派的防火墙没有拦截来自10.0.8.0/24子网的80端口流量。
  • 如果能拿到:那NAS到树莓派的Web服务是通的,问题出在反向代理或公网转发环节。

2. 检查NAS反向代理的规则细节

你提到NAS反向代理设置是“mydns.com:81转发到10.0.8.10”,这里很容易忽略目标端口:

  • 树莓派的Web服务跑在80端口,所以反向代理的目标必须明确写10.0.8.10:80,而不是只写IP。很多反向代理工具默认会用请求的原端口(也就是81)转发,但树莓派的Caddy没监听81,自然会拒绝。
  • 另外确认反向代理的“源地址/域名”规则是否匹配:如果规则是严格匹配mydns.com:81,那你用公网IP直接访问:81会被拦截,必须用mydns.com:81访问;如果想同时支持IP和域名访问,规则要改成监听NAS的81端口,不管源域名。

3. 确认NAS的防火墙和IP转发设置

QNAP NAS默认的防火墙可能会限制跨子网的流量转发:

  • 先临时关闭NAS的防火墙测试公网访问,如果能通了,再针对性添加规则:允许来自192.168.15.0/24(路由器所在LAN)的81端口入站流量,同时允许NAS向10.0.8.0/24(VPN子网)的80端口出站流量。
  • 检查NAS的IPv4转发是否开启:SSH登录NAS后执行sysctl net.ipv4.ip_forward,如果返回0,说明没开启。编辑/etc/sysctl.conf,把net.ipv4.ip_forward=1的注释去掉,然后执行sysctl -p生效。这一步是让NAS能把公网转发过来的流量路由到VPN子网。

4. 验证路由器端口转发的正确性

  • 首先不要在自家局域网内测试公网访问,因为很多路由器不支持Hairpin NAT(发夹NAT),用手机开4G热点,脱离自家LAN后测试mydns.com:81。
  • 确认路由器的端口转发规则是:将公网的81端口流量,转发到NAS的192.168.15.4的81端口,且规则是“所有源IP”,不是仅允许特定IP。

5. 关于你提到的两个疑问

  • 要不要给树莓派加路由到NAS?完全不需要,你已经能从树莓派ping通整个LAN,说明双向路由是正常的,NAS到树莓派的路由也没问题(毕竟能ping通)。
  • 要不要给Web服务器加hostname?如果你是用端口区分不同树莓派的Web服务,Caddy只要监听*:80接受任意请求就行,不需要绑定特定hostname;除非你的Caddy配置里有强制域名匹配的规则,那改成*:80即可。

备注:内容来源于stack exchange,提问作者pieterdp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:48:15