Ubuntu虚拟机ifconfig显示eth0无wlan0且IP不变问题咨询
虚拟机Ubuntu网络问题解析
为什么看不到wlan0设备?
虚拟机里的Ubuntu不会直接识别宿主机的WiFi硬件,你看到的eth0是虚拟机软件创建的虚拟以太网适配器,它负责虚拟机和宿主机/外部网络的通信——不管宿主机用WiFi还是有线,虚拟机里只会显示这个虚拟网卡,不会出现wlan0。
为什么切换WiFi后eth0的IP不变?
这和你的虚拟机网络模式直接相关:
- NAT模式:虚拟机的IP由虚拟机软件自带的DHCP服务器分配,属于独立的内部子网(比如
192.168.122.x或192.168.2.x),和宿主机WiFi的IP不在同一网段。宿主机相当于路由器做地址转发,所以宿主机切换WiFi时,虚拟机的内网IP不会改变,外部访问需通过宿主机IP+端口映射实现。 - 桥接模式:如果虚拟机设置了静态IP,即使宿主机切换WiFi,虚拟机的IP也会保持不变;如果是DHCP自动获取,只有当新WiFi的DHCP服务器分配同网段IP时才会不变,否则会更新——但很多时候虚拟机的DHCP租期较长,短时间内切换可能不会立刻变动。
而Windows是直接使用物理WiFi网卡,每次切换不同WiFi网络,都会从对应WiFi的DHCP服务器获取新IP,所以IP会变化,和虚拟机的虚拟网卡逻辑完全不同。
解决MQTT broker连接问题的建议
如果要让外部传感器访问Ubuntu上的MQTT broker,可按以下方式调整:
- 切换虚拟机网络为桥接模式:让虚拟机直接接入宿主机所在的WiFi网络,获取同网段IP,传感器和宿主机处于同一网络时就能直接访问虚拟机的IP+MQTT端口(默认1883)。
- 若使用NAT模式:在虚拟机软件的网络设置里配置端口转发,将宿主机的某个端口(比如18830)映射到虚拟机的1883端口,传感器访问宿主机的WiFi IP+18830端口即可。
- 检查Ubuntu防火墙:执行
sudo ufw allow 1883开放MQTT默认端口,避免连接被拦截。
内容的提问来源于stack exchange,提问作者Kismat Pipaliya
相关产品推荐
相关产品推荐

