我正在尝试访问公司网络内运行的 KVM 虚拟机。我通过笔记本电脑通过 VPN 连接到网络,并可以 ssh 连接到其他虚拟机,并且我使用 将虚拟机设置为使用桥接网络virt-install ... --network bridge=virbr0,model=virtio
。网络的 KVM 主机配置为:
# virsh dumpxml test-vm
...
<interface type='bridge'>
<mac address='52:54:00:d6:4f:f8'/>
<source bridge='virbr0'/>
<target dev='vnet3'/> <------
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
...
# ifconfig
...
virbr0 Link encap:Ethernet HWaddr fe:54:00:3f:e1:8d
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1119495 errors:0 dropped:0 overruns:0 frame:0
TX packets:698753 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:105580752 (105.5 MB) TX bytes:2718266918 (2.7 GB)
...
vnet3 Link encap:Ethernet HWaddr fe:54:00:d6:4f:f8 <-----
inet6 addr: fe80::fc54:ff:fed6:4ff8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1062543 errors:0 dropped:0 overruns:0 frame:0
TX packets:1900765 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:80152674 (80.1 MB) TX bytes:2667837704 (2.6 GB)
...
我的虚拟机通过 DHCP 获得的 IP 地址是 192.168.XX,但我注意到,对于未在此 KVM 主机上运行的虚拟机,其 IP 地址更像是 172.16.XX。如果我通过 SSH 进入物理主机,那么我就能 ping 通我的虚拟机,但从任何其他机器上都无法 ping 通。
鉴于这些症状,我没有配置什么以允许自己从网络中的任何机器直接通过 SSH 进入虚拟机?
答案1
我已经设置了针对该virbr0
接口的桥接器,它(如这里所述) 只是一个虚拟网桥,所以它没有给我物理网络上的 IP 地址。
果然,创建一个连接到我的物理网络接口的桥接器解决了这个问题——我通过使用来实现这一点virt-install ... --network bridge=br0,model=virtio
,其中 br0 的设置如下:
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.ecf4bbcabb04 no em3
vnet3
(其中 em3 是我的物理网络接口,vnet3 是 virt-install 创建的 VM 接口。)