通过 virsh 在启动 qemu 虚拟机,可以通过 VNC 访问虚拟机,但无法通过设置的 SSH 的外部映射端口登录。首先在宿主机上查看虚拟机(csv\tpm\name)的网络配置,可以看到端口映射情况和当前网络的网段(10.0.10.0/24)。
$ virsh edit csv_tpm_name
在配置中包含访问虚拟机的VNC端口(5995),通过该端口可以使用vncviewer软件设置访问该虚拟机。
使用 VNC 通过 5995 端口登录虚拟机,进一步使用ifconfig
命令查看虚拟机内部的网卡配置,发现存在 ens4 和 ens5 两张网卡。其中 ens4 网卡绑定了 192.168.122.21 地址, ens5 网卡绑定了 10.0.10.15 地址。根据之前在宿主机上查看虚拟机配置情况,知道 10.0.10.x 网段是虚拟机内部的网段,因此正常情况下该虚拟机的网关应该是绑定了 10.0.10.15 地址的 ens5 网卡。而网关应当是 10.0.10.0/24 网段内的一个地址,一般是前几个 IP 地址,可以逐个通过ping
命令尝试。在这里我尝试到 10.0.10.2 时显示可以 ping 通,因此可以大概率假定该 IP 地址为网关地址。
继续查看当前路由表,发现路由表设置的默认网关走 ens4,但根据上面的判断,正确的网关应该绑定在 ens5 网卡上,至此确定问题。
相应的解决方案就是修改路由表,重新定向默认网关。这里先删除当前默认的 ‘default’ 路由,然后采用dhclient
命令通过指定网卡直接生成新的默认路由表。
$ route del default
$ dhclient ens5
经过上述操作后,便可正常通过 SSH 访问虚拟机了。