我在连接到 FritzBox 的 Raspberry Pi 上运行服务器。在网络内部,我可以通过本地 IP 和注册的 URL 访问服务器。但是从外部看,它不起作用。
“HTTP 和 HTTPS 服务器”项有 TCP 协议,其他项有 UDP 协议。但是,当我检查我的端口时这里,该端口似乎已关闭:
树莓派上的 apache 服务器配置为至少允许端口 80 上的所有内容,因为该文件/etc/apache2/sites-enabled/000-default.conf
有一个块<VirtualHost *:80> ... <VirtualHost>
。
我不想得到最终的解决方案,而是想收集一些想法,看看还有什么可能阻止来自外部的请求?有没有办法确定请求是否到达路由器,而不是树莓派,以缩小问题范围?
答案1
设置 IPv4 端口转发时,过程很简单:毕竟您只有一个公共 IP 地址。
使用 IPv6 时,FritzBox 防火墙的工作方式有所不同:不涉及 NAT,因此流量会发往设备自己的 IPv6 地址。必须设置防火墙以允许流量发往此特定地址。这就是 FritzBox 用户界面中的“IPv6 接口 ID”:设备 IPv6 地址的本地部分。
考虑这个例子:
在底部您可以看到允许通过防火墙的实际 IPv6 地址和端口。
对于您来说,此 IPv6 地址与实际设备 IPv6 地址不匹配。因此,流量被防火墙阻止。
如果出于某种原因永恒的后缀(通常基于 MAC 地址)没有被 UI 正确获取,您需要手动输入正确的后缀。
您可能必须更改设备的 IPv6 设置(例如禁用隐私扩展),以便它实际上具有可预测的 IPv6 地址。
答案2
在我的例子中,Fritzbox 会更改 ipv6 接口 ID 以适应自身。这意味着它与您输入的与您的主机相对应的接口 ID 不匹配。