时间:2023-06-28 20:18:01 | 来源:网站运营
时间:2023-06-28 20:18:01 来源:网站运营
深入理解SDN之一-虚拟机互连:虚拟化
与软件定义网络
,所以感觉标题更应该叫云计算入门,但我觉得不用纠结标题叫什么,领会精神就是了。 下面出现的主机
指的是裸金属服务器
linux bridge/linux network namespace/veth/tap/iptables
等,有些我们前面的内容也简单介绍过;yum install -y qemu-kvm qemu
qemu-img create -f raw /home/vm/centos.raw 10G
wget https://mirrors.163.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso -O /home/os/centos.iso
qemu-kvm -enable-kvm -smp 2,cores=2 -m 2048 -hda /home/os/centos.iso -hdb /home/vm/centos.raw /-vnc 0.0.0.0:0
remmina remote desktop client
连接上面启动的qemu,完成操作系统的安装注意上面的-vnc参数,0.0.0.0:0时,用rdc连的时候用端口5900连接,0.0.0.0:1时,用5901连接,依次类推……
/etc/sysconfig/network-scripts/ifcfg-eth0
中ONBOOT
改为yes
,这样vm启动后就会通过dhcp去获取IP地址了,这个配置主要为后面使用dhcp服务作准备;cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE="eth0"BOOTPROTO="dhcp"ONBOOT="yes"TYPE="Ethernet"PERSISTENT_DHCLIENT="yes"
ifcfg-eth0文件与网卡名有关,如果你的镜像的默认网卡名为eno1,则文件名为ifcfg-eno1上面的操作完成后
/home/vm/centos.raw
就是我们制作好的操作系统模版了,把该文件复制到server2的相同目录下cp /home/vm/centos.raw /home/vm/vm1.raw
ip tuntap add tap1 mode tapip link set tap1 up
qemu-kvm -enable-kvm -name vm1 -smp 1,cores=1 -m 2048 -hda /home/vm/vm1.raw /-netdev tap,id=hostnet0,vhost=on,vhostfd=4,ifname=tap1,script=no 4<>/dev/vhost-net /-device virtio-net-pci,netdev=hostnet0,id=net0 /-vnc 0.0.0.0:1
这样就创建了一台1核2G的虚拟机,cores
是CPU核数,-m
是内存,-hda
是硬盘文件,-netdev
是网卡配置,注意里面的ifname=tap1
,tap1
是我们上一步创建的虚拟网卡设备,-vnc
是通过vnc连接该vm的地址;qemu-img create -f raw /home/vm/vm1-ext-hda1.raw 10G
然后启动:qemu-kvm -enable-kvm -name vm1 -smp 1,cores=1 -m 2048 -hda /home/vm/vm1.raw -hdb /home/vm/vm1-ext-hda1.raw /-netdev tap,id=hostnet0,vhost=on,vhostfd=4,ifname=tap1,script=no 4<>/dev/vhost-net /-device virtio-net-pci,netdev=hostnet0,id=net0 /-vnc 0.0.0.0:1
所以其实虚拟机的一个盘对应的就是主机的一个文件,软件定义存储主要就是解决如何在所有物理节点都可以用/home/vm/vm1.raw访问到相同的文件,例如CEPH,不过这并不是本篇的重点
remmina remote desktop client
连接vm1,设置IP地址为172.25.1.10/24,默认网关为172.25.1.1cp /home/vm/centos.raw /home/vm/vm2.rawip tuntap add tap2 mode tapip link set tap2 upqemu-kvm -enable-kvm -name vm2 -smp 1,cores=1 -m 2048 -hda /home/vm/vm2.raw /-netdev tap,id=hostnet0,vhost=on,vhostfd=4,ifname=tap2,script=no 4<>/dev/vhost-net /-device virtio-net-pci,netdev=hostnet0,id=net0 /-vnc 0.0.0.0:2
注意vnc的端口都要在vm1的基础上加1,否则会冲突
remmina remote desktop client
连接vm2,设置IP地址172.25.1.11/24,默认网关为172.25.1.1ip link add br0 type bridgeip link set br0 up
ip link set tap1 master br0ip link set tap2 master br0
ip netns add router
ip link add eth-sub1 type veth peer name router-br0ip link set eth-sub1 netns routerip netns exec router ip addr add 172.25.1.1/24 dev eth-sub1ip netns exec router ip link set eth-sub1 upip link set router-br0 master br0ip link set router-br0 up
169.254.10.10
ip link add eth-out type veth peer name router-vethip link set eth-out netns routerip netns exec router ip link set lo upip netns exec router ip addr add 169.254.10.10/32 dev eth-outip netns exec router ip link set eth-out upip netns exec router ip route add default via 169.254.10.253 dev eth-out onlinkip netns exec router iptables -A POSTROUTING -t nat -o eth-out -j MASQUERADE ip link set router-veth upecho 1 > /proc/sys/net/ipv4/conf/router-veth/proxy_arp
此时整个拓扑如下:169.254.10.10
的数据包进行源地址转换,去往该地址的包走router-veth网卡(就是引导给虚拟路由器)ip route add 169.254.10.10 dev router-vethiptables -A POSTROUTING -t nat -s 169.254.10.10 -j MASQUERADE
remmina remote desktop client
连接VM设置IP,有没有办法让VM启动后自动获取我们指定的IP呢?下一章我们来介绍给虚拟机设置固定IP。关键词:虚拟,理解,深入