主机和qemu虚拟机互相访问_kvm虚拟机下载

主机和qemu虚拟机互相访问_kvm虚拟机下载安装qemu/kvmyuminstallqemu-imgqemu-kvmqemu-kvm-toolsvirt-managervirt-viewervirt-v2vvirt-toplibvirtlibvirt-pythonlibvirt-clientpython-virtinstbridge-utilstunctl接下来就可以通过命令或者界面操虚拟机命令…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

安装 qemu/kvm

yum install qemu-img qemu-kvm qemu-kvm-tools virt-manager virt-viewer virt-v2v virt-top libvirt libvirt-python libvirt-client python-virtinst bridge-utils tunctl

接下来就可以通过命令或者界面操 虚拟机

命令操作可参考虚拟化之KVM virsh常用命令篇 – 某电商首席日志工程师 – 博客园

安装成功后界如下

主机和qemu虚拟机互相访问_kvm虚拟机下载主机和qemu虚拟机互相访问_kvm虚拟机下载

虚拟机与宿主机 通信

使用桥接方式

先在宿主集卡安装命令如下:

yum install bridge-utils.x86_64

(1)在宿主机创建一个桥接virbr0,并分配给其一个ip

brctl addbr virbr0
ifconfig br0 192.168.122.1

宿主机器ifconfig

主机和qemu虚拟机互相访问_kvm虚拟机下载

(2)宿主机中把一个 网卡和桥接口绑定

brctl addif virbr0 p9p1

查看

主机和qemu虚拟机互相访问_kvm虚拟机下载

但是自己测试宿主机不绑定也可以

(3)设置虚拟机通过桥接virbr0与宿主机桥接

主机和qemu虚拟机互相访问_kvm虚拟机下载

(4)在虚拟机中给一个网卡分配ip,ip必须和virbr0的ip在一个网段

主机和qemu虚拟机互相访问_kvm虚拟机下载主机和qemu虚拟机互相访问_kvm虚拟机下载

创建完就可以 和宿主机 互相ping了或者ssh了

网上资料如下:

   原文https://blog.csdn.net/u013451404/article/details/84929816

我们继续来讨论怎么将虚拟机中的网络桥接到宿主机的物理网卡。虚拟机使用桥接方式上网的示意图如下(注:本图是借用来的,如有侵权请联系我删除,感谢!),多个虚拟机都可以承载在宿主机的一个网卡上,每个虚拟机都可以有一个独立的ip地址,虚拟机可以访问外部网络,外部网络的设备也可以访问虚拟机。

虚拟机桥接宿主机的示意图

1、用ifconfig命令查看一下宿主机物理网卡对应的接口,我的服务器中有一个名为ens5的接口对应我的网卡。

    [linux@Centos ~]$ ifconfig ens5
    ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            ether 1c:c1:de:9b:e9:ff  txqueuelen 1000  (Ethernet)
            RX packets 4  bytes 316 (316.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 12  bytes 928 (928.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 17  
     
    [linux@Centos ~]$

2、在宿主机中安装网桥管理工具bridge-utils

yum install bridge-utils.x86_64

3、在宿主机中创建一个名为br0的桥接接口

sudo brctl addbr br0

4、在宿主机中将ens5添加到桥接组br0中

sudo brctl addif br0 ens5

5、检查桥接配置是否成功,可以看到ens5已经添加到了br0中了

    [linux@Centos qemu]$ sudo brctl show
    bridge name    bridge id        STP enabled    interfaces
    br0        8000.1cc1de9be9ff    no        ens5
    virbr0        8000.52540099455c    yes        virbr0-nic
    [linux@Centos qemu]$

6、为br0接口添加一个ip地址,我配置的是10.0.0.3

    [linux@Centos qemu]$ sudo ifconfig br0 10.0.0.3
    [linux@Centos qemu]$ sudo ifconfig
    br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.0.0.3  netmask 255.0.0.0  broadcast 10.255.255.255
            inet6 fe80::1ec1:deff:fe9b:e9ff  prefixlen 64  scopeid 0x20<link>
            ether 1c:c1:de:9b:e9:ff  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 7  bytes 578 (578.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
     
    ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            ether 1c:c1:de:9b:e9:ff  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 7  bytes 578 (578.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 17  

7、验证宿主机桥接接口是否可以正常通信,ens5接口连接的对端设备的地址是10.0.0.10,我们在宿主机上ping一下这个地址,如果桥接配置成功是可以通过桥接接口ping通对端的,对端也可以ping能我们br0的10.0.0.3

    [linux@Centos ~]$ ping 10.0.0.10
    PING 10.0.0.10 (10.0.0.10) 56(84) bytes of data.
    64 bytes from 10.0.0.10: icmp_seq=1 ttl=64 time=0.557 ms
    64 bytes from 10.0.0.10: icmp_seq=2 ttl=64 time=0.534 ms
    ^C
    — 10.0.0.10 ping statistics —
    2 packets transmitted, 2 received, 0% packet loss, time 1000ms
    rtt min/avg/max/mdev = 0.534/0.545/0.557/0.026 ms
    [linux@Centos ~]$

8、用virsh edit CentOS命令修改我们的虚拟机的配置,添加一个桥接类型的网卡,并且桥接到br0口,添加文本如下,更多XML文件格式说明参考https://libvirt.org/formatdomain.html

        <interface type=’bridge’>
          <source bridge=’br0’/>
          <target dev=’vnet1’/>
          <mac address=”00:11:22:33:44:55″/>
        </interface>

9、用virsh start CentOS命令打开我们的虚拟机,登录虚拟机系统后可以看到虚拟机中多了一个MAC地址为00:11:22:33:44:55的网卡,在我的虚拟机里它叫eth2。

备注:此时打开虚拟机可能会报桥接口通信失败,进而导致虚拟机打开失败,则需要输入如下命令允许虚拟机使用桥接通信。

echo “allow br0” >> /etc/qemu-kvm/bridge.conf

下面是虚拟机开机后的网口信息:

    [root@localhost ~]# ifconfig -a
    eth1      Link encap:Ethernet  HWaddr 52:54:00:97:86:46  
              BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
     
    eth2      Link encap:Ethernet  HWaddr 00:11:22:33:44:55  
              BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
              Interrupt:10 Base address:0xa000
     
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
     
    [root@localhost ~]#

10、为eth2配置一个ip地址,并ping宿主机和宿主机的ens5连接的对端设备,测试通信是否正常。可以看到我这里无论是ping10.0.0.10和是10.0.0.3都是可以正常ping通的,说明虚拟机与宿主机和宿主机的对端设备通信都是正常的。至此就完成了为虚拟机桥接到宿主机物理网卡的所有工作。

    [root@localhost ~]# ifconfig eth2 10.0.0.5
    eth2: link up, 100Mbps, full-duplex, lpa 0x05E1
    [root@localhost ~]#
    [root@localhost ~]# ping 10.0.0.10
    PING 10.0.0.10 (10.0.0.10) 56(84) bytes of data.
    64 bytes from 10.0.0.10: icmp_seq=1 ttl=64 time=2.09 ms
    64 bytes from 10.0.0.10: icmp_seq=2 ttl=64 time=1.02 ms
     
    — 10.0.0.10 ping statistics —
    2 packets transmitted, 2 received, 0% packet loss, time 1851ms
    rtt min/avg/max/mdev = 1.023/1.557/2.092/0.535 ms
    [root@localhost ~]#
    [root@localhost ~]# ping 10.0.0.3
    PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
    64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=0.625 ms
    64 bytes from 10.0.0.3: icmp_seq=2 ttl=64 time=0.815 ms
    64 bytes from 10.0.0.3: icmp_seq=3 ttl=64 time=0.817 ms
     
    — 10.0.0.3 ping statistics —
    3 packets transmitted, 3 received, 0% packet loss, time 2360ms
    rtt min/avg/max/mdev = 0.625/0.752/0.817/0.092 ms
 

 
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/171594.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • redis缓存雪崩 缓存穿透 缓存击穿如何解决_redis穿透和雪崩解决

    redis缓存雪崩 缓存穿透 缓存击穿如何解决_redis穿透和雪崩解决一:redis雪崩redis雪崩是指redis在某个时间大量失效,突然造成数据库访问压力急剧增大,像雪崩一样,redis雪崩危害巨大,甚至有可能服务器宕机,给公司造成巨大的经济损失。解决方案:设置超时时间的时候要设置随机值,不要设置固定值*缓存雪崩:key在同一时间失效,导致大量请求去访问数据库*返回min和max之间的一个随机秒数 privateLonggetRandomExpirationTime(Integermin,Integermax){

  • Linux 下如何进入 MySQL 命令行

    Linux 下如何进入 MySQL 命令行格式:mysql-h主机地址-u用户名-p用户密码1、例1:连接到本机上的MYSQL一般可以直接键入命令mysql-uroot-p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>2、连接到远程主机上的MySQL假设远程主机的IP为:10.0.0.1,用户名为root,密码为123。则键入以下命

  • 年龄大的普通程序员最后的出路是哪里?[通俗易懂]

    年龄大的普通程序员最后的出路是哪里?

  • 浅析Easyui Datagrid的Rownumber行号显示「建议收藏」

    浅析Easyui Datagrid的Rownumber行号显示「建议收藏」easyuidatagrid如何获取行号getRowIndex方法$(选择器).datagrid(“getRowIndex”,row)+1其中row可以是一行也可以是这一行的id值,获取选择行可以用getselected或getselections方法,行索引从0开始,所以要加1,具体可以参照easyUI的API。Datagrid中当你的行数据超过9999时,第一列的行号r

  • 迅雷种子为什么php文件后缀,迅雷BT文件后缀是什么?[通俗易懂]

    迅雷种子为什么php文件后缀,迅雷BT文件后缀是什么?[通俗易懂]你是否正在寻找关于文件后缀的内容?让我把最实时的东西奉献给你:迅雷BT文件后缀是什么?BT是一个后缀名为.torrent的小文件,它里面保存了服务器地址、要下载的文件的大孝分成的块数以及各种下载参数设置,这个文件一般在20k-100k大小,可以把*.php直接改成*.torrent试试!要么就是文件制作出错!在去这个页面下载一次,当弹出迅雷下载的时候点取消.让Windows下载.会出现保存对话框…

    2022年10月23日
  • C语言的seekg函数,c++ fstream中seekg()和seekp()的用法[通俗易懂]

    C语言的seekg函数,c++ fstream中seekg()和seekp()的用法[通俗易懂]先说一下C语言中fseek()的功能:函数原型:intfseek(FILE*fp,LONGoffset,intorigin)参数含义:fp文件指针offset相对于origin规定的偏移位置量origin指针移动的起始位置,可设置为以下三种情况:SEEK_SET文件开始位置SEEK_CUR文件当前位置SEEK_END文件结束位置C++中seep()和seekg()…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号