我在 Windows 8 上编写 Python (Flask) 代码。为了将 Web 应用程序公开到外部,我过去曾设置 host=0.0.0.0
由于我已升级和/或安装了可访问 Internet 的 Hyper-V,因此无法使用以下方式连接到 Flask Web 应用
http://0.0.0.0:5000.
我尝试关闭 Windows 防火墙,但没有效果。
这是错误:
This webpage is not available
The webpage at http://0.0.0.0:5000/ might be temporarily down or it may have moved permanently to a new web address.
Error 108 (net::ERR_ADDRESS_INVALID): Unknown error.
我还发现一个奇怪的现象:尽管应用程序在 0.0.0.0 运行,但我可以通过 localhost/127.0.0.1 访问它。
我如何打开/启用对 0.0.0.0 的访问?
>route print
===========================================================================
Interface List
40...c8 60 00 cb fc 55 ......Hyper-V Virtual Ethernet Adapter #2
18...94 db c9 8a c1 c5 ......Bluetooth Device (Personal Area Network)
15...96 db c9 ac 27 c1 ......Microsoft Wi-Fi Direct Virtual Adapter
14...94 db c9 ac 27 c1 ......Broadcom 802.11n Network Adapter
12...c8 60 00 cc 03 5e ......Intel(R) 82579V Gigabit Network Connection
1...........................Software Loopback Interface 1
===========================================================================
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.143 20
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
192.168.1.0 255.255.255.0 On-link 192.168.1.143 276
192.168.1.143 255.255.255.255 On-link 192.168.1.143 276
192.168.1.255 255.255.255.255 On-link 192.168.1.143 276
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 192.168.1.143 276
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 192.168.1.143 276
===========================================================================
Persistent Routes:
None
IPv6 Route Table
===========================================================================
Active Routes:
If Metric Network Destination Gateway
1 306 ::1/128 On-link
1 306 ff00::/8 On-link
===========================================================================
Persistent Routes:
None
答案1
我还发现一个奇怪的现象:尽管应用程序在 0.0.0.0 运行,但
我可以通过 localhost/127.0.0.1 访问它。
这是因为应用程序没有在 0.0.0.0 运行,
0.0.0.0 只是表示“所有 IP,来自任何地方”的符号。
如果该应用程序在您自己的桌面上运行,那么您可以通过以下方式访问它:
- 本地主机,IP v4(又名 127.0.0.1)
- 本地主机,IP v6(又名::1)。
- 您的 NIC 上的 IP(在您的例子中为:192.168.1.143),假设您将其设置为允许。这通常是通过将允许设置为 0.0.0.0 来完成的。(即允许来自任何地方)。
答案2
0.0.0.0 通常是外部世界或互联网,因此从网关到 0.0.0.0 的路由您是否尝试将主机 Web 应用程序设置为面向外部的 IP(转到 IPChicken.com)?大多数路由器的默认路由都是 IP 0.0.0.0 网络掩码 0.0.0.0,作为从您的网络到互联网的路由。这意味着所有地址和所有子网。