我用虚拟管理器管理我的虚拟机。我想让虚拟机 (Windows) 与主机 (GNU/Linux) 进行通信。
我使用默认网络接口,即 NAT 模式下的桥接器,其网络地址为192.168.122.0/24.当我在听主持人192.168.122.1在港口12345,我使用 netcat 检查我的客户机:
nc -vz 192.168.122.1 12345
我得到以下答案:
Warning: forward host lookup failed for hostname: h_errno 1101: HOST_NOT_FOUND
hostname [192.168.122.1] 12345 (?): TIMEOUT
而且我在任何界面上都会得到相同的答案。
但如果我在外部网络网关上执行同样操作192.168.0.1,我得到:
gateway.lan [192.168.0.1] 12345 (?) open
我该如何修复它?
答案1
我使用默认网络接口,即 NAT 模式下的网桥,网络地址为 192.168.122.0/24。当我在端口 12345 上监听主机 192.168.122.1 时,... 我收到警告:主机名的正向主机查找失败:
第一的:尝试在桥接模式下将所有内容放在一个子网上。这通常很有效。
第二: 如果您希望恢复到 NAT,请尝试使用 IP 寻址进行主机和客户机之间的通信。我就是这么做的。名称寻址更复杂。
就这一点而言,我确实更喜欢 Bridged。
答案2
在 Red Hat 发行版下,使用的默认防火墙是firewall-cmd。为了能够从客户机访问主机,只需通过防火墙打开特定端口:
sudo firewall-cmd --zone=libvirt --add-port=12345/tcp
其中 libvirt 是使用 libvirt 库(例如 virt-manager 或 cockpit)的虚拟机的区域网络。
我没有检查,但我想象在 debian 发行版下,例如,只需编辑 nftables 防火墙。