Flask无法识别虚拟主机IP地址,请求技术解决方案
Flask绑定虚拟机IP失败的解决方法
1. 确认虚拟机的真实网络配置
- 在虚拟机终端执行
ifconfig或ip addr命令,找到非回环(127.x.x.x)的实际网卡IP,比如eth0或ens33网卡的inet字段值。 - 检查虚拟机网络模式:若用NAT模式,需在虚拟机软件中配置端口转发(将主机端口映射到虚拟机5000端口);若用桥接模式,确保虚拟机和主机在同一局域网网段。
2. 排查IP绑定失败原因
Cannot assign requested address错误说明你指定的IP并非当前虚拟机网卡上的有效IP,或是端口被占用。- 执行
netstat -tulpn | grep 5000检查5000端口是否被占用,若已被占用,修改Flask启动端口,比如:if __name__ == "__main__": app.run(debug=False, host="虚拟机实际IP", port=5001)
3. 正确理解0.0.0.0的作用
- 绑定
0.0.0.0会让Flask监听虚拟机所有可用网卡的地址,启动时显示127开头的回环地址是正常现象(回环地址属于本机地址范畴)。 - 此时无需指定具体IP,只要虚拟机网络连通,外部设备(如主机)直接用虚拟机实际IP:5000即可访问Flask服务。
4. 验证网络连通性
- 在主机终端执行
ping 虚拟机实际IP,若不通,先排查虚拟机防火墙:- CentOS/RHEL:临时关闭防火墙
sudo systemctl stop firewalld,或开放5000端口sudo firewall-cmd --add-port=5000/tcp --permanent && sudo firewall-cmd --reload - Ubuntu:临时关闭防火墙
sudo ufw disable,或开放5000端口sudo ufw allow 5000/tcp
- CentOS/RHEL:临时关闭防火墙
内容的提问来源于stack exchange,提问作者lova
相关产品推荐
相关产品推荐

