1. 程式人生 > 其它 >Qemu虛擬機器tap網路後端訪問外網的方式

Qemu虛擬機器tap網路後端訪問外網的方式

    正如https://wiki.qemu.org/Documentation/Networking所述,Qemu以-net user方式建立的網路是不支援ping的,我一般用-netdev tap,id=hn2 -device e1000,netdev=hn2建立網路,利用主機的tap0裝置和NAT實現虛擬機器訪問外網的功能,本以為host上應該能找到對應的iptable NAT規則,但是iptable -F去掉所有規則後發現VM中ping 公網地址依然是可以通的。經過調查發現是libvirt作的NAT,如下命令可以看到libvirt的default網路forward mode是NAT, default網路是libvirtd啟動後預設建立的網路。看來不顯示的建立iptable規則也能作NAT,具體程式碼可能要看kernel中bridge相關的,後續需要查證。

sudo virsh net-edit default
<network>
  <name>default</name>
  <uuid>168f6909-715c-4333-a34b-f74584d26328</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:48:3f:0c'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

  

 

 

FYI:

https://linuxconfig.org/how-to-use-bridged-networking-with-libvirt-and-kvm

https://wiki.libvirt.org/page/Networking