时间: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 qemuqemu-img create -f raw /home/vm/centos.raw 10Gwget https://mirrors.163.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso -O /home/os/centos.isoqemu-kvm -enable-kvm -smp 2,cores=2 -m 2048 -hda /home/os/centos.iso -hdb /home/vm/centos.raw /-vnc 0.0.0.0:0remmina 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.rawip tuntap add tap1 mode tapip link set tap1 upqemu-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 upip link set tap1 master br0ip link set tap2 master br0ip netns add routerip 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 up169.254.10.10ip 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 MASQUERADEremmina remote desktop client连接VM设置IP,有没有办法让VM启动后自动获取我们指定的IP呢?下一章我们来介绍给虚拟机设置固定IP。关键词:虚拟,理解,深入