我正在尝试在我的 Ubuntu 16.04 系统上设置一个 Apache 服务器,我可以使用它来提供一个包含一些系统状态信息的基本 HTML 文件,我可以从我的手机访问这些信息。
我的手机使用的是 IPv6,我想绕过 NAT,因此我在 Ubuntu 16.04 计算机上设置了从 IPv4 到 IPv6 的 Teredo 隧道,并且我可以使用以下方法从 LAN 外部 ping 我的计算机http://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-ping.php。我在电脑和手机上都尝试过了,两种方式都可以。
Apache2 也可以工作,我可以使用以下方法在台式电脑的浏览器中获取默认页面http://[::1]以及完整的 IPv6 地址。我还更新了 ufw 以允许 http 流量通过:
$ sudo ufw 状态
状态:活跃
行动来自
-- ------ ----
22 允许任何地方
80 允许任何地方
22 (v6) 允许任何地方 (v6)
80 (v6) 允许任何地方 (v6)
但是,我仍然无法通过手机浏览器访问 Apache 默认页面。我还能检查什么来查明为什么我的计算机响应外部 ping,但不响应 HTTP 请求?
答案1
在 Teredo 地址上运行服务器通常不是一个好主意,因为客户端将体验到与服务器不可靠的连接。
您的场景有点特殊,因为您计划将手机作为唯一的客户端,因此您可能没有与典型服务器相同的可靠性要求。您只需要记住这些陷阱。
Teredo 中断的最常见原因是缺少 Teredo 中继。另一种容易中断 Teredo 的方法是过滤 ICMPv6 数据包。
需要注意的事项
- 找到手机的 IPv6 地址,然后使用网络上的众多 ping 测试站点之一尝试 ping 该地址。如果您的手机对 ping 没有响应,它将永远无法与 Teredo 地址上托管的服务器通信。
- 找出您的手机所连接的 ISP 正在使用哪个 Teredo 中继。如果该 ISP 没有自己的 Teredo 中继,您可能依赖第三方中继,这意味着无法保证可靠性,也无法通过简单的方式报告问题。
- 确定手机如何找到服务器。Teredo 旨在为设备提供单个动态 IPv6 地址。未经修改的 Teredo 客户端和 Teredo 服务器无法提供静态地址。因此,您需要找到一种方法让手机知道服务器的 IPv6 地址是否发生变化。一种可能性是使用支持 IPv6 的动态 DNS 提供商。