NAT的方式及原理

NAT方式是KVM安装后的默认方式。
它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。
default是宿主机安装虚拟机支持模块的时候自动安装的。
其中 virbr0是由宿主机虚拟机支持模块安装时产生的虚拟网络接口,也是一个switch和bridge,

直接开始实验

上次我们创建KVM虚拟机的时候用的是桥接模式的网络
现在我们创建一个NAT网络模式的KVM虚拟机
先查看一下我们当前的网络桥接情况

[root@server159 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.00505622e283	no		ens33
virbr0		8000.525400a5d968	yes		virbr0-nic

准备一个虚拟磁盘给新建的KVM虚拟机

[root@server159 ~]# qemu-img create -f raw /data/kvm/server10.raw 10G
Formatting '/data/kvm/server10.raw', fmt=raw size=10737418240 

查看我们当前KVM虚拟机的网络,这里桥接网络不显示的,所以上次的br0没有显示

[root@server159 ~]# virsh net-list 
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes

在这里插入图片描述

然后开始创建新的KVM虚拟机,指定默认的NAT网络default
这里我指定的VNC连接端口是5910,等下通过这个端口来连接安装就好了

[root@server159 ~]# virt-install --name=server10  --virt-type=kvm --memory 1024,maxmemory=2048  --cdrom=/data/iso/CentOS-7-x86_64-Minimal-2009.iso  --disk path=/data/kvm/server10.raw    --vnc --vncport=5910 --vnclisten=0.0.0.0  --noautoconsole  --autostart

安装的时候查看我们自动获取的ip,是122网段的222
在这里插入图片描述

为什么是122网段的呢,这里我们可以看default默认网络的具体信息

[root@server159 ~]# virsh net-dumpxml --network default 
<network connections='1'>
  <name>default</name>
  <uuid>626b82a5-feef-4076-b0ec-b4720c3821f3</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:a5:d9:68'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

在这里插入图片描述

可以看到default默认网络的ip池范围就是在122.2到122.254范围的
然后启动我们新建的server10虚拟机并查看情况

[root@server159 ~]# virsh start server10 
Domain server10 started

[root@server159 ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 16    server10                       running

然后通过VNC连接我们的虚拟机查看情况
在这里插入图片描述
然后查看桥接网络

[root@server159 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.00505622e283	no		ens33
virbr0		8000.525400a5d968	yes		virbr0-nic
						             	vnet1

在这里插入图片描述
可以看到我们的vnet1桥接到了virbr0上,而virbr0是宿主机上的
宿主机可以转发底下NAT的信息,所以我们的虚拟机可以连接外网
不过外界是无法访问到我们的,除非宿主机做了转发,访问宿主机时自动转发到底下的虚拟机
然后我们的NAT模式的虚拟机就建好了
下个nginx来试试
在这里插入图片描述
下载好以后,查看配置文件,根据经验来看都是/etc/nginx/nginx.conf
在这里插入图片描述
然后往配置文件里添加我们自己的内容,方便我们等下查看结果
在这里插入图片描述
镜像太小了,连netstat命令都没有
还有一件事,就是记得关闭防火墙,不然宿主机访问不到的
在这里插入图片描述
宿主机访问测试
在这里插入图片描述
然后这样就可以了
和我们在VMware上的原理是一样的,只要了解网络的基本原理,这些就很简单了
希望对大家有帮助

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐