ubuntu下qemu虚拟机实现和主机以及互联网通信,图文详细教程

您所在的位置:网站首页 ubuntu共享网络连接 ubuntu下qemu虚拟机实现和主机以及互联网通信,图文详细教程

ubuntu下qemu虚拟机实现和主机以及互联网通信,图文详细教程

2023-09-18 11:29| 来源: 网络整理| 查看: 265

1 查看tun模块信息 modinfo tun

         执行该命令后如果你看到是下图的信息,恭喜你可以直接直接到第2节。

         你也可能看到的是这样的信息:

       那么就要安装tun模块,请参考:ubutun 安装tun模块

       查看tun模块是否开启

lsmod |grep tun

       如果lsmod命令没有看到,执行如下命令加载即可,否则需要安装tun模块。

sudo modprobe tun  2 安装网桥管理包 sudo apt install -y bridge-utils # 虚拟网桥工具 sudo apt install -y uml-utilities # UML(User-mode linux)工具 3 qemu虚拟机网桥方式网络通信(建议)      1)创建网桥 sudo brctl addbr virbr0

      如果创建失败请用root账户或者自己手动创建。

sudo echo 'allow virbr0' >> /etc/qemu/bridge.conf     2)打开网桥stp sudo brctl stp virbr0 on     3)添加tap虚拟网卡 sudo ip tuntap add name virbr0-nic mode tap     4)启动网卡 sudo ip link set dev virbr0-nic up     5)虚拟网卡添加到网桥 sudo brctl addif virbr0 virbr0-nic     6)开机启动网桥 sudo systemctl enable libvirtd sudo dhclient virbr0    7)网桥自动获取IP sudo dhclient virbr0   8)查看网桥状态 brctl show

         brctl 其他命令:

brctl addbr virbr0 #创建一个网桥br0 brctl delbr virbr0 #删除网桥br0 brctl addif virbr0 eth0 #把eth0 加入到网桥 brctl addif virbr0 tap0 #把tap0 加入到网桥 brctl delif virbr0 eth0 #把eth0 从网桥中删除   9)启动虚拟机

启动虚拟机时添加如下参数。(qemu使用请参考:qemu 使用)

-net nic,macaddr=,model=ftgmac100 \ -net bridge,id=net0,helper=/usr/lib/qemu-bridge-helper,br=virbr0

 ps:这里 可以直接copy网桥的mac,然后修改后几位,model、以及后面的“-net bridge ...”参数可以不要,但是一般建议带此参数。另外如果在启动多个虚拟机时,需要设置不同mac,否则所有虚拟机使用同一个IP地址。 

        启动虚拟机后,一般就可以上网了,如果qemu启动的虚拟机不能上网或者想知道qemu启动的虚拟机的IP地址,可以在虚拟机中运行“udhcpc”命令,该命令会自动设置好ip、dns等,完成后可以用ifconfig命令查看ip。

         启动虚拟机后,也可以用ifconfig命令配置eth0的ip。(执行后用ifconfig查看的实际ip并非配置的IP不要慌(udhcpc命令后可查看实际IP),用实际ip即可,如果想指定可在此运行ifconfig指定,但是可能会造成不上外网的情况)    

ifconfig eth0 192.168.122.76

         最后虚拟机后ping 一下外网,如图所示,恭喜你虚拟机可以和主机以及互联网通信啦。

 4 qemu虚拟机tap方式网络通信     1)创建tap0 sudo ip tuntap add dev tap0 mode tap     2)启动tap0 sudo ip link set tap0 up   方法一:网桥下的tap0上网

网桥创建和添加tap0到网桥参考第3节即可。

     1)配置文件配置tap启动IP

      修改qemu-ifup文件配置,配置启动ip。(如果修改不了请给权限或者root用户下)

sudo vi /etc/qemu-ifup

     或者

gedit /etc/qemu-ifup

   如果是新建qemu-ifup文件则直接添加如下内容,否则添加文件末尾。(也可以修改文件代码设置ip的位置,具体自行修改)

     switch=virbr0      /sbin/ifconfig  $1 192.168.122.100 up      brctl addif ${switch} $1

   2)tap方式启动虚拟机

启动虚拟机时添加如下参数:

-net nic,model=rtl8139 -net tap,ifname=tap0,script=/etc/qemu-ifup

启动虚拟机后在主机下可以看到tap0

查看qemu虚拟机ip和上网和第三节一样,这里不做赘述。

注 :这里tap0的网段和virbr0的网段配置在同网段,virbr0和主机的网卡不在同一网段。如果发现主机不能上网的情况可以ifconfig + 网卡 down然后在up,如果依然不能上网,手动删除网卡,在重启主机,或者重启网络。然后在添加虚拟网卡。

         如果有手动启动tap0,也可在启动虚拟机添加如下参数:

-net nic,model=rtl8139 -net tap0 方法二 :纯tap0上网          1)添加路由ip sudo ip route add 192.168.0.10/32 dev tap0

       或者

sudo ip route add 192.168.126.10/32 dev tap0

    如果想删除执行

sudo ip route del 192.168.0.10/32 dev tap0     2)查看路由 route -n

     3)查看链接状态和地址 ip link show

ip address show

     4)设置代理proxy(如果设置失败使用root账户) sudo sysctl net.ipv4.conf.tap0.proxy_arp=1 sudo sysctl net.ipv4.conf.wlp3s0.proxy_arp=1

        或者 

sudo echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp sudo echo 1 > /proc/sys/net/ipv4/conf/wlp3s0/proxy_arp       5)使能IP转发 sudo sysctl net.ipv4.ip_forward=1

        或者

echo 1 > /proc/sys/net/ipv4/ip_forward       6)启动qemu虚拟机 -net nic,model=rtl8139 -net tap,ifname=tap0,script=/etc/qemu-ifup

PS:前面的操作都是在主机也就是在ubuntu系统下操作的,后面的操作是在qemu虚拟机下操作。 

     7)设置qemu虚拟机ip

       虚拟机地址一定要和主机下设置tap0的地址一样,否则连不上网。

ip addr add 192.168.126.10 dev eth0     一般到这里就可以ssh访问虚拟机,可能虚拟机ping不同主机以及不能上外网,请继续下面操作。           8) 设置qemu虚拟机route地址

         这个地址设置和虚拟机同网段。

ip route add default via 192.168.126.200 dev eth0       9)设置nameserver

       这个的IP地址要和虚拟机IP相同。

echo “nameserver 192.168.126.10” >> /etc/resolv.conf       10)qemu虚拟机上网

         至此虚拟机系统可以和主机通讯以及访问互联网了。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3