配置KVM虚拟机使用的NAT网络

一、NAT的概念
对于专用网内部的一些主机,已经分配了本地的IP(即本地局域网IP),但又想和因特网上的主机通信时,可使用NAT(Network Address Translation,网络地址转换)方法解决问题。
使用NAT实现通信的方式有3种:##

  • 1.静态转换(Static Nat):内部网络私有IP地址转换为公有IP地址时,IP地址对是一对一的,是一成不变的。
  • 2.动态转换(Dynamic Nat):内IP转换为公IP,IP地址不确定的,随机的,所有被授权访问Internet上的私有IP地址可随机转换为任何指定的合法IP地址。
  • 3.端口多路复用(Overload):指改变外部数据包的源端口并进行端口转换,即端口地址转换(Port Address Translation,PAT)
    采用端口多路由方式,内部网络的所有主机均可以共享合法外部IP地址来实现对因特网的访问,从而可以最大限度地节约IP地址资源。同时,隐藏网络内部的所有主机。目前网络中应用最多的也是此方式这种方法需要在专用网路连接到因特网的路由器上安装NAT软件,装有该软件的路由器称为NAT路由器。

二、NAT网络原理
NAT的主要作用:IPv4(Internet Protocol Version 4,网际协议版本4)的地址资源已经近乎枯竭,而NAT使内网的多个主机可以公用一个IP地址接入网络,这有助于节约IP地址。

在KVM中配置客户机的NAT网络时,需要在宿主机中运行一个DHCP服务器给宿主级分配NAT内网的IP地址,使用DNSMASQ工具来实现。

NAT方式是KVM安装后的默认方式,它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。

#检查当前网络的设置:
# virsh net-list --all

kvm命令行添加网卡 kvm配置ip_linux


default是宿主机安装虚拟机支持模块的时候自动安装的

三、NAT启动脚本编写:

# vi /etc/qemu-ifup-NAT
编辑内容如下

注意缩进!!!字母与字母间是否有空格一定要仔细,or在启动步骤中会报错

kvm命令行添加网卡 kvm配置ip_linux_02


kvm命令行添加网卡 kvm配置ip_运维_03

kvm命令行添加网卡 kvm配置ip_云计算_04


四、创建NAT模式的KVM虚拟机

  • 安装tunctl ,不添加网卡。and安装网桥模块bridge,不设置网桥
  • 详情请见tunctl做到第5步
  • 详情请见brctl做到第3步
    已操作请跳过

1.安装KVM模块:

  • 检查CPU是否支持虚拟化:
    勾选才能进行下一步命令
# grep -E -o 'vmx|smx' /proc/cpuinfo

kvm命令行添加网卡 kvm配置ip_云计算_05

2.添加脚本执行权限:

# chmod +x /etc/qemu-ifup-NAT
  • 安装yum工具
# yum install qemu-kvm openssl libvirt -y

kvm命令行添加网卡 kvm配置ip_centos_06

  • 重新启动libvirtd服务
# systemctl restart libvirtd

提前将下载好的0.3.4iso与第三步放置在/etc下的qemu-ifup-NAT脚本一起复制到你所创建的目录下,这里我创建的目录名称为3.4

kvm命令行添加网卡 kvm配置ip_centos_07

3.qemu命令启动虚拟机

#qemu-kvm -m 1024 -drive file=/3.4/cirros-0.3.4-x86_64-disk.img,if=virtio -net nic,model=virtio -net tap,script=/3.4/qemu-ifup-NAT -nographic -vnc :1

注意:“file”与“script”后面都要跟上绝对路径,既你的iso文件与nat脚本所放置的位置

kvm命令行添加网卡 kvm配置ip_centos_08


出现此步配置成功!

4.查询网桥接口信息:

# brctl show

kvm命令行添加网卡 kvm配置ip_运维_09


5.查看TAP接口

#ip addbr list

kvm命令行添加网卡 kvm配置ip_运维_10

6.检查网络连通性:

未创建eth0,ping不通可跳过

7.查询宿主机的iptables nat 表信息:

# iptables -t nat -L

kvm命令行添加网卡 kvm配置ip_运维_11


前面qemu命令正常,后续操作不会出现其他问题!!