Flask应用程序中对IPv4和IPv6的双重支持

花花公子

是否可以运行Flask来侦听IPv4和IPv6(即双IP堆栈)?据我检查,可以使用以下命令在IPv4中运行:

app.run(host='0.0.0.0', port=port, debug=True)

或IPv6使用

app.run(host='::', port=port, debug=True)

但我没有找到一种同时运行的方法(可能有我的Flask应用程序的一个实例侦听IPv4,另一个实例侦听IPv6,但两者不能侦听同一端口)。

谢谢!

更新(附加信息):

Followd Sander Steffann评论(谢谢!),我已经开始在IPv6中监听我的应用程序:

* Running on http://[::]:1028/
* Restarting with reloader

然后使用IPv6和IPv4卷曲进行测试:

curl -g [::1]:1028/notify
curl 127.0.0.1:1028/notify

分别得到:

::1 - - [10/Feb/2014 12:04:51] "GET /notify HTTP/1.1" 200 -
::ffff:127.0.0.1 - - [10/Feb/2014 12:05:03] "GET /notify HTTP/1.1" 200 -

我对第二行的解释是“某人”(操作系统?Flask所依赖的底层网络库?)正在将IPv4请求转换为IPv6请求。但是,我知道这与经典双栈设置中“本地”支持IPv4并不相同,也就是说,我期望可以将其链接起来(这是我在运行应用程序时获得的Running on http://0.0.0.0:1028/

127.0.0.1 - - [10/Feb/2014 12:05:03] "GET /notify HTTP/1.1" 200 -
桑德·斯特凡(Sander Steffann)

发生的情况是操作系统将传入的IPv4请求自动附加到侦听的IPv6套接字。通过使用前缀将IPv4地址映射到IPv6地址::ffff:因此,来自的传入IPv4连接127.0.0.1看起来像是来自IPv6地址::ffff:127.0.0.1

从客户端的角度来看,它正在与IPv4服务器通信。客户无法分辨出差异。从服务器的角度来看,每个人都在使用IPv6进行连接。操作系统执行IPv4数据包和IPv6软件之间的映射。

这样的效果是,您可以开发软件而无需手动处理双栈编程。可以为IPv6编写所有软件,并将所有地址作为IPv6地址处理。这样可以简化代码(无需同时具有侦听IPv4和侦听IPv6套接字等),同时仍然为“外部”提供完整的双栈体验。

因此,从系统外部看,您的服务是完全双堆栈的。在应用程序本身中,您将看到用IPv6地址表示的整个世界,就像在日志文件中显示的那样。通常不会造成任何问题。但是,这可能会影响您处理ACL,日志记录和其他类似方式的方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Flask应用程序中对IPv4和IPv6的双重支持

来自分类Dev

客户端应用程序如何知道使用IPv4或IPv6?

来自分类Dev

在仅IPv6的网络上运行仅IPv4的应用程序

来自分类Dev

在支持 IPv4 和 IPv6 的 Windows 上构建 Subversion

来自分类Dev

创建IPv4和IPv6 SPF记录

来自分类Dev

设置静态IPv4和IPv6

来自分类Dev

IPv4,IPv6和IPTable

来自分类Dev

如何在Swift中验证IPv4和IPv6地址?

来自分类Dev

IPv4和IPv6中的跳数限制

来自分类Dev

Windows 7中的IPv4和IPv6优先级

来自分类Dev

netstat输出中的::: 80是否仅表示ipv6或ipv6 + ipv4?

来自分类Dev

如何将IPV4地址与IPV6和IPV4一起放入powershell变量中?

来自分类Dev

在C#中以编程方式启用和禁用适配器的IPv4和IPv6

来自分类Dev

在TSPC IPv6隧道中,IPv4到IPv4通信是否需要隧道代理?

来自分类Dev

存储和检索IPv4和IPv6地址

来自分类Dev

Linux 内核 IPv4 和 IPv6 套接字创建:EPROTONOSUPPORT 和 ESOCKTNOSUPPORT 错误

来自分类Dev

golang区分IPv4 IPv6

来自分类Dev

ipv4映射的ipv6验证

来自分类Dev

使用IPV4访问IPV6

来自分类Dev

从IPv4到IPv6的ssh

来自分类Dev

从仅IPv4到仅IPv6的VPN

来自分类Dev

IPv6正常工作,但IPv4无效

来自分类Dev

使用IPV4访问IPV6

来自分类Dev

IPv6是否比IPv4“更快”?

来自分类Dev

从IPv4获取IPv6地址?

来自分类Dev

本地ipv4到(未知)本地ipv6

来自分类Dev

IPV6记录Vs。IPV4 DNS记录

来自分类Dev

由于 IPv6 问题而拒绝应用程序

来自分类Dev

ipv4和ipv6来自任何有效地址