0

    云计算之KVM虚拟机的网络模式

    2023.04.12 | admin | 200次围观

    经过前边几次的学习,我们已经成功在宿主机里边部署了几台KVM虚拟机,并且实现了利用console的方式可以随时登录来管理设备。但是,如果把我们的KVM虚拟机里边跑现网环境里边的业务的时候,发现无法访问,主要的原因就是网络通信的问题。比如。我们每一次登录KVM虚拟机的时候都只能先登录到宿主机再从宿主机登录到KVM虚拟机,不能利用自己的电脑直接登录到KVM虚拟机,但是每一个KVM虚拟机又可以直接访问互联网,这也是因为网络数据传输的问题。

    面对我们遇到的这个网络问题怎么去解决呢?那就需要先搞清楚出现问题的原因,接下来我们就一起详细探究一下!

    01

    KVM虚拟机的网络模式

    1.1 网络环境介绍

    Linux操作系统主要有两种的网络工作模式:

    ①NAT模式(默认的)

    桥接模式

    1.2 NAT模式特点

    1.我们目前安装KVM虚拟机的时候,网络模式默认是NAT模式,如下图:我们可以发现kobe和james这两个虚拟机都可以直接访问互联网。

    2.两台虚拟机直接互ping也都是正常。

    3.但是用我们的电脑和去ping虚拟机是无法访问的。

    4.那么就说明了一个问题,此时对于虚拟机来讲访问任何外部网络都是可以的怎么把文件发到虚拟机上,但是外部的主机想要访问内部虚拟机是不可以的;这也就应征了将来我们在KVM虚拟机上边部署了网页服务,或者数据库等服务是不能被外网主机访问的,这也就失去业务存在的意义。

    02

    深入了解NAT模式

    2.1 NAT介绍

    网络地址转换NAT(Network Address Translation)是将IP数据报文头中的IP地址转换为另一个IP地址的过程。如下图:这种转换会使得内网用户可以访问外部网络的任何地方,但是由于NAT地址转换的原因,外部的网络设备是没法访问内部的各种用KVM虚拟机实现的服务器的。比如,我们就发现用自己的电脑始终无法ping通KVM虚拟机192.168.122.0/24这个网段的地址。

    2.2 通信原理

    2.3NAT发包原理

    NAT算是属于网络基础的内容,我们在学习云计算之前要求各位同学有一定的网络通信基础的水平,比如学习过CCNA体系的知识点就可以,那么,我们就在今天的知识分享里边不去解释了。想要深入了解的同学可以去访问以下链接进行学习!

    请点击:

    03

    更改Centos系统的网卡设置

    3.1 修改地址获取方式为手动配置

    我们之前在安装宿主机和KVM虚拟机的网络命令时,地址的获取方式是自动获取的,这样会导致过一段时间之后发现宿主机的地址发生改变,为了网络的稳定性,我们此时把宿主机地址修改为手动配置,并且测试网络可达性。

    3.2 查看网卡文件

    使用命令cat /etc/sysconfig/network-scripts/ifcfg-ens33查看宿主机的网卡文件。

    [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=dhcpDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=acbbb987-222f-4d2c-bdc7-ff6abe391f5dDEVICE=ens33ONBOOT=yes[root@localhost ~]#

    3.3 修改网卡文件

    使用命令vi /etc/sysconfig/network-scripts/ifcfg-ens33修改网卡文件。

    ①先将原先的所有网卡文件删除干净

    ②粘贴进去正确的网卡文件

    TYPE=Ethemet #网络类型

    NAME=eth0 #网卡名称

    DEVICE=eth0 #设备名称

    ONBOOT=yes #开机启动

    BOOTPROTO=none #IP获取方式

    IPADDR=192.168.13.24 #IP地址

    NETMASK=255.255.255.0 #网络掩码

    GATEWAY=192.168.13.2 #网关地址

    DNS1=114.114.114.114 #dns1号地址

    DNS2=8.8.8.8

    ③保存退出

    重启宿主机,检查网络状态是否正常。

    [root@localhost ~]# reboot

    [root@localhost ~]# ifconfigeth0: flags=4163  mtu 1500        inet 192.168.13.24  netmask 255.255.255.0  broadcast 192.168.13.255        inet6 fe80::20c:29ff:fe9f:22f2  prefixlen 64  scopeid 0x20        ether 00:0c:29:9f:22:f2  txqueuelen 1000  (Ethernet)        RX packets 2154  bytes 158456 (154.7 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 4237  bytes 496774 (485.1 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions[root@localhost ~]# ping www.baidu.comPING www.a.shifen.com (163.177.151.109) 56(84) bytes of data.64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=1 ttl=128 time=28.0 ms64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=2 ttl=128 time=27.6 ms64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=3 ttl=128 time=31.5 ms64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=4 ttl=128 time=26.2 ms64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=5 ttl=128 time=28.0 ms^C--- www.a.shifen.com ping statistics ---5 packets transmitted, 5 received, 0% packet loss, time 4014msrtt min/avg/max/mdev = 26.263/28.295/31.522/1.737 ms[root@localhost ~]#

    04

    开始修改网卡类型

    4.1 桥接前准备

    关闭NetworkManager服务怎么把文件发到虚拟机上,否则会直接掉线。

    [root@localhost ~]# systemctl stop NetworkManager

    4.2 创建桥接网络

    创建桥接网卡命令 virsh iface-bridge eth0 br0;生产上边一般一共有四块网卡,eth0,eth1,eth2,eth3,可以选择自己需要桥接的网卡。(取消桥接网卡命令 virsh iface-unbridge br0)

    [root@localhost ~]# virsh iface-bridge eth0 br0使用附加设备 br0 生成桥接 eth0 失败--这个不是失败了,是因为软件的翻译不够精确已启动桥接接口 br0
    [root@localhost ~]#

    4.3 修改KVM虚拟机的网卡配置文件

    1.将需要做桥接的KVM虚拟机关机,在关机状态下修改,然后开机就可以生效了。

    [root@localhost ~]# virsh destroy web01域 web01 被删除
    [root@localhost ~]#

    2.修改文件内容。

    [root@localhost ~]# virsh edit web01

    4.4 开启虚拟机验证结果

    开启刚才修改的kvm虚拟机web01,然后console登录web01之后发现已经自动发获取到了一个192.168.13.164/24的地址,并且是和我们的宿主机是同一网络号的。

    [root@localhost ~]# virsh start web01域 web01 已开始
    [root@localhost ~]#[root@localhost ~]# virsh console web01[root@kobe ~]# ip addr1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:cd:a7:02 brd ff:ff:ff:ff:ff:ff    inet 192.168.13.164/24 brd 192.168.13.255 scope global noprefixroute dynamic eth0 valid_lft 1779sec preferred_lft 1779sec inet6 fe80::820a:7824:17b8:addc/64 scope link noprefixroute valid_lft forever preferred_lft forever[root@kobe ~]#

    05

    桥接模式

    5.1 桥接模式介绍

    桥接模式代表的是使用宿主机网络,意思就是和宿主机是同一网络号的,我们使用的是eth桥接,那也就意味着我们的虚拟机和eth0处于同一网段。

    5.2 桥接模式网络通信原理

    5.3 桥接模式特点

    这个时候我们发现不论是宿主机ping访问KVM虚拟机还是我们自己的电脑去ping都是可以互相通信的。

    5.4 优点

    现在只要保证我们的宿主机开机,我们就可以不用像以前一样只能通过console的方式登录KVM虚拟机,而是直接用我们自己的MOBA软件登录到KVM虚拟机。也间接的验证了,在生产环境里边设置完桥接模式之后我们的业务流量就可以正常转发了。

    更多精彩内容请点击以下链接:

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论