为什么我无法从外部通过 IPv6 访问 Home Assistant?

为什么我无法从外部通过 IPv6 访问 Home Assistant?

我希望能够从本地网络之外访问我的 Raspberry Pi。Raspberry Pi 运行Raspbian GNU/Linux 10Home Assistant。例如,当我想检查我是否真的关上了门时,我可以通过 Home Assistant 查找 - 如果我能够访问它。

我有 AVM弗里茨!盒子 7530我是居住在德国的电信客户。

当我去家庭网络 -> 网络我看到 Raspberry Pi 被标记为暴露主机。当我单击它时,我看到“外部分配的 IPv6 端口”的值为 8123(家庭助理的端口)。当我单击铅笔(编辑)按钮时,我看到 4 个 IPv6 地址。两个以 开头fe80::,一个以 开头fd00::,两个以 开头2003:ed:

当我在网络中时,我可以通过 访问设备http://[2003:ed: ...]:8123。当我在网络外时,则无法访问。当我尝试通过 ping 它时http://www.ipv6now.com.au/pingme.php我的包裹全部丢失。我试了两个2003:ed:地址。

如何从我的网络外部访问树莓派/家庭助理?

Fritz-Box 设置

我在 Fritz Box 设置中选择了 Raspberry Pi:

在此处输入图片描述

向下滚动一点

在此处输入图片描述

当我使用 ping 该2003:ed:…4e地址时http://www.ipv6now.com.au/pingme.php我明白了

目标无法到达:地址无法到达

更多信息

$ ifconfig
[...]
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet [pi local IPv4]  netmask 255.255.255.0  broadcast 192.168.178.255
        inet6 [2003:ed: ... public IPv6; ends with 70]  prefixlen 64  scopeid 0x0<global>
        inet6 [fe80::... IPv6]  prefixlen 64  scopeid 0x20<link>
        ether 74:da:38:33:78:8a  txqueuelen 1000  (Ethernet)
        RX packets 25285  bytes 6101412 (5.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6718  bytes 2315017 (2.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

$ curl icanhazip.com
[2003:ed: ... public IPv6; ends with 70]

这就是我的公共 IP。

让我们确保服务器正在公开监听:

$ netstat -lnp
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:8123            0.0.0.0:*               LISTEN      - 
...
tcp6       0      0 :::8123                 :::*                    LISTEN      -   
...

这很好,不是吗?

现在让我们检查 Raspberry OS 防火墙设置:

$ sudo ip6tables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

我得到的以 70 结尾的 IPv6icanhazip.com不是我在 FritzBox 中看到的两个 IPv6 之一!这是什么意思?

IPv6 设置

在此处输入图片描述

答案1

由于您可以使用 Pi 的公共 IPv6 地址从本地网络连接,我们可以假设设备本身上的所有内容都已正确设置。

有了 IPv6,消费者路由器不再进行 NAT(或者至少它应该这样工作)。这意味着本地网络上的每个设备都有自己的互联网可路由 IPv6 地址。这是2003:编辑:…:70您的 Pi 的地址。由于没有 NAT,因此不需要端口转发。但是,为了保护本地网络上的设备,大多数支持 IPv6 的路由器仍然有防火墙。它默认设置为禁止未经请求的入站流量,包括 ping 请求。

要在 AVM FRITZ!Box 上设置 IPv6 防火墙,您需要转到互联网允许访问端口共享自由职业者港口禁运德语)。从那里,添加一个新设备(或者因为您已经有 Pi,所以编辑它)并选择所需的选项。您可能需要:

  • 启用 PING6(轻松检查连通性)
  • 下表中针对端口 8123 的端口规则(至少针对 IPv6)

如果设置正确,该表将包含一个专门用于 IPv6 规则的行,如下所示:

防火墙规则表

确认所有更改后,您应该能够从互联网连接到端口 8123 上的 Pi 的 IPv6 地址。

答案2

如果您的意思是,从外部通过 fritzbox 中的 vpn 服务器进行连接,那么问题是 vpn 连接仅为 ipv4……因此,您将无法通过 ipv6 地址进行连接……

相关内容