美文网首页
KVM实战之虚拟主机使用虚拟网桥vnet1通信

KVM实战之虚拟主机使用虚拟网桥vnet1通信

作者: 逢场作戏_6fb9 | 来源:发表于2017-10-16 08:47 被阅读0次

    环境

    宿主机vnet1接口IP为10.1.0.254/24
    宿主机br0桥接网络的IP为172.16.100.120
    虚拟主机c2 IP为10.1.0.1/24
    虚拟主机c3 IP为10.1.0.2/24
    

    安装虚拟化程序

    判断CPU是否支持硬件虚拟化:
    [root@kvm ~]# grep -i -E '(vmx|svm|lm)' /proc/cpuinfo
    vmx:Intel VT-x
    svm:AMD AMD-v
    
    [root@kvm ~]# yum install libvirt-daemon-kvm qemu-kvm virt-manager
    [root@kvm ~]# modprobe kvm
    [root@kvm ~]# systemctl start libvirtd.service
    

    新建虚拟网桥vnet1

    [root@danran ~]# brctl addbr vnet1
    [root@danran ~]# brctl show
    bridge name bridge id       STP enabled interfaces
    br0     8000.000c290e479b   no      ens38
    vnet1       8000.000000000000   no  
    
    激活虚拟网桥vnet1
    [root@danran ~]# ip link set vnet1 up   
    配置vnet1的IP地址
    [root@danran ~]# ifconfig vnet1 10.1.0.254/24
    编辑虚拟网卡启动脚本
    [root@danran ~]# vim /etc/qemu-ifup                         
    #!/bin/bash
    #
    bridge=vnet1   定义网桥为vnet1,也可连接br0物理网桥
    if [ -n "$1" ];then
    ip link set $1 up
    sleep 1
    brctl addif $bridge $1   将网卡添加vnet1虚拟网桥上 
    [ $? -eq 0 ] && exit 0 || exit 1
    else
        echo "Error: no interface specified."
        exit 1
    fi  
    [root@danran ~]# chmod +x /etc/qemu-ifup   添加执行权限
    [root@danran ~]# bash -n /etc/qemu-ifup
    
    编辑虚拟网卡停止脚本
    [root@danran ~]# vim /etc/qemu-ifdown                       
    #!/bin/bash
    #
    bridge=vnet1   定义网桥为vnet1
    if [ -n "$1" ];then
    brctl delif $bridge $1   将网卡从vnet1虚拟网桥上删除
    sleep 1 
    [ $? -eq 0 ] && exit 0 || exit 1
    else
        echo "Error: no interface specified."
        exit 1
    fi  
    [root@danran ~]# chmod +x /etc/qemu-ifdown   添加执行权限
    [root@danran ~]# bash -n /etc/qemu-ifdown
    

    启动虚拟主机

    启动两台虚拟主机

    [root@danran ~]# qemu-kvm -name c2 -m 64 -smp 4,sockets=2,cores=2 -drive file=/vm/images/c2.img,if=virtio,media=disk -vnc :0 -daemonize -net nic,model=e1000,macaddr=52:54:00:00:00:01 -net tap,script=/etc/qemu-ifup   \\-vnc :0指定连接本机vnc的0号端口,即5900端口,-daemonize为运行在后台,-net创建一个网络接口,-net tap连接到网桥设备,script=/etc/qemu-ifup指定启动脚本
    [root@danran ~]# qemu-kvm -name c2 -m 64 -smp 4,sockets=2,cores=2 -drive file=/vm/images/c3.img,if=virtio,media=disk -vnc :1 -daemonize -net nic,model=e1000,macaddr=52:54:00:00:00:02 -net tap,script=/etc/qemu-ifup   
    

    虚拟机中配置路由网关

    打开虚拟主机
    [root@danran ~]# vncviewer :0 & 后台打开vnc :0端口的主机,即c2主机
    $ sudo su - 切换到root用户
    # ifconfig eth0 10.1.0.1/24 配置主机c2的IP地址
    # route add default gw 10.1.0.254 设置网关为vnet1网桥的IP,即可与宿主机的通信
    # ping 172.16.100.120

    查看宿主机br0网卡的数据包

    打开IP转发
    [root@danran ~]# sysctl -w net.ipv4.ip_forward=1
    net.ipv4.ip_forward=1
    [root@danran ~]# tcpdump -i br0 -nn icmp  
    

    配置虚拟主机与宿主机外部网络通信

    宿主机添加vnet1虚拟接口源地址转换规则

    将访问10.1.0.0/24网络的源地址都转换为宿主机IP172.16.100.120
    [root@danran ~]# iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -j SNAT --to-source 172.16.100.120   
    

    测试虚拟主机是否可以与宿主机172.16.100.120通信
    [root@danran ~]# vncviewer :0 & 后台打开vnc :0端口的主机,即c2主机
    $ sudo su - 切换到root用户
    # ifconfig eth0 10.1.0.1/24 配置主机c2的IP地址
    # route add default gw 10.1.0.254 设置网关为vnet1网桥的IP,即可与宿主机的通信
    # ping 172.16.100.120

    查看宿主机br0网卡的数据包

    打开IP转发
    [root@danran ~]# sysctl -w net.ipv4.ip_forward=1
    net.ipv4.ip_forward=1
    [root@danran ~]# tcpdump -i br0 -nn icmp  
    

    相关文章

      网友评论

          本文标题:KVM实战之虚拟主机使用虚拟网桥vnet1通信

          本文链接:https://www.haomeiwen.com/subject/orahuxtx.html