1、命令行安装方式

virt-install \
--name=kvm99 --ram 1024 --vcpus=1 \
--disk path=/home/vms/kvm99.qcow2,size=10,format=qcow2,bus=virtio \
--location=/mnt/CentOS-7-x86_64-Minimal-1611.iso --network network=default,model=virtio \
--graphics=none --console=pty,target_type=serial \
--extra-args="console=tty0 console=ttyS0"

--network network=default      配置网络使用默认,NAT 方式

dnsmasq 服务

libvirt默认使用了一个名为default的nat网络,这个网络默认使用virbr0作为桥接接口,使用dnsmasq来为使用nat网络的虚拟机提供dns及dhcp服务,dnsmasq生效后的配置文件默认保存在以下路径:

/var/lib/libvirt/dnsmasq/default.hostsfile   mac&&ip绑定的配置文件

/var/lib/libvirt/dnsmasq/default.leases  dhcp分配到虚拟机的ip地址列表

/var/lib/libvirt/network/default.xml  default网络的配置文件

dnsmasq服务的启动脚本在/etc/init.d/dnsmasq ,但是我们如果手动使用此脚本来启动服务将会导致dnsmasq读取其自己的配置文件来启动此服务,因此这么做是不推荐的,因为这个服务完全由libvirtd在接管,

当libvirtd服务启动的时候,它会将它管理的被标记为autostart的network一并启动起来,而启动network的时候就会自动调用dnsmasq并赋予其适宜的配置文件来运行服务。

使用libvirt管理的网络都会用到dnsmasq来产生相应的配置,比如定义了一个名为route110的network,那么这个route110将使用一个新的桥接接口virbr1来接入网络,并使用dnsmasq产生名为route110.hostsfile和route110.leases的配置文件。

其实这里提到的virbr0和virbr1都是libvirt产生的虚拟网卡,其作用就相当于一个虚拟交换机,为虚拟机提供网络转发服务。

2、安装完成后,修改网段,也可以用默认网段 192.168.122.0/24

virsh net-edit default

<network>
  <name>default</name>
  <uuid>5e3af757-8a76-4fe1-af65-3352b68e23f6</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:b1:22:d8'/>
  <ip address='192.168.77.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.77.2' end='192.168.77.254'/>
    </dhcp>
  </ip>
</network>

# 安装好 libvirtd 后,默认会安装一块 virbr0 的虚拟网卡,网段为 192.168.122.0/24

3、重新定义

virsh net-define /etc/libvirt/qemu/networks/default.xml

4、停止 网卡

virsh net-destroy default

5、启动网卡

virsh net-start default

6、重启 libvirtd

systemctl restart libvirtd

7、虚拟机配置 网卡

# 设置IP,其它参数已省略
…………
IPADDR=192.168.77.6
NETMASK=255.255.255.0
GATEWAY=192.168.77.1
DNS1=8.8.8.8

8、宿主机 查看 iptables

iptables -t nat -nL# 显示
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         Chain INPUT (policy ACCEPT)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
RETURN     all  --  192.168.77.0/24      224.0.0.0/24
RETURN     all  --  192.168.77.0/24      255.255.255.255
MASQUERADE  tcp  --  192.168.77.0/24     !192.168.77.0/24      masq ports: 1024-65535
MASQUERADE  udp  --  192.168.77.0/24     !192.168.77.0/24      masq ports: 1024-65535
MASQUERADE  all  --  192.168.77.0/24     !192.168.77.0/24iptables -t filter -nL# 显示
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:67
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:67Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            192.168.77.0/24      ctstate RELATED,ESTABLISHED
ACCEPT     all  --  192.168.77.0/24      0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachableChain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:68 

从上面防火墙可以看出, 在启动 libvirtd 网卡的时候,会动态生成 iptables nat,filter 表,以实现 SNAT 功能,虚拟机可以访问外网。因为没有保存,如果重启 iptables 会全部丢失,接下来我们重新启动 iptables 来手动配置 SNAT 功能

重启 iptables 后 虚拟机就不能上网了

systemctl restart iptables

 配置 SNAT 转发功能,实现虚拟机通过 宿主机 来上网

vim /etc/sysctl.conf# 加入
net.ipv4.ip_forward = 1# 立退生效
sysctl –p# 清空规则链
iptables -F# 方法一 有固定IP 这里指宿主机 192.168.1.73
iptables -t nat -A POSTROUTING -s 192.168.77.0/24 -j SNAT --to-source 192.168.1.73# 方法二 如果没有固定IP
iptables -t nat -A POSTROUTING -s 192.168.77.0/24 -j MASQUERADE

通过上面配置,这里虚拟机就可以上网了,也可以访问 192.168.1.0/24 网段的主机了,但是  192.168.1.0/24 网段的主机是不能访问 虚拟机 192.168.77.6,这时可以通过 端口映射来实现这个功能

宿主机   外网  192.168.1.73    内网  192.168.77.1 (这里就是生成的virbr0 虚拟网卡)

虚拟机            192.168.77.6

其它主机         192.168.1.86   (跟宿主机在一个网段)

实现 192.168.1.86 通过 访问 192.168.1.73 8802 端口 来实现 登陆 192.168.77.66 22 端口

配置 端口 映射功能,实现 192.168.1.0/24 网段主机 远程登陆 192.168.77.6

iptables -t nat -A PREROUTING -d 192.168.1.73 -p tcp -m tcp --dport 8022 -j DNAT --to-destination 192.168.77.6:22

保存生效

service iptables save

这时找一台 192.168.1.0/24 网段的主机 我这里是 192.168.1.86,进行访问

telnet 192.168.1.73 8022# 成功
Trying 192.168.1.73...
Connected to 192.168.1.73.
Escape character is '^]'.
SSH-2.0-OpenSSH_6.6.1

接下来配置 宿主机 filter 表防火墙

*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]      # 转发功能要打开
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
COMMIT

KVM 虚拟机 配置 NAT 连接方式上网相关推荐

  1. KVM 虚拟机创建与连接

    一.镜像文件的准备 [root@centos7 ~]# mkdir /data/ISOs -p 开启xftp进行镜像传输 二.磁盘的准备 常见磁盘类型 raw 裸磁盘,厚置备零延迟 特点:立即创建立即 ...

  2. UOS多显卡配置以及kvm虚拟机配置多屏或多显卡备忘

    好久没更新Blog了,最近打坦克世界使了点劲,正好上次的测试还没放上来,晚上有点时间给补上.   目录 UOS多显卡配置 KVM虚拟机配置多个屏幕 UOS多显卡配置 不知道为啥,默认DDE桌面是不支持 ...

  3. 给linux虚拟机配置网络连接,VMVare虚拟机网络配置步骤

    上一篇介绍了在linux的centos下如何安装nginx服务器,并且实现在linux上访问nginx服务器.本篇主要介绍vmvare下基于nat模式的网络配置以及实现在本地主机访问linux上的ng ...

  4. VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT连接方式)

    背景 在虚拟机下运行操作系统,尤其是Linux系统已经是非常常见的做法.有时你想在虚拟机下搭建一个(模拟)服务器来供主机访问,比如搭建一个telnet/ssh.此时你会发现,每次启动虚拟机,VMWar ...

  5. 虚拟机服务器桥接网络配置,虚拟机Vmware下CentOS6.5配置Bridged桥接方式上网及远程登录...

    一.前言 VMware配置linux上网有三种方式,分别为bridge.NAT.Host,详情说明见redhat相关配置页,这边将详细的配置步骤进行截图说明,修改ssh服务默认端口22,映射到公网以便 ...

  6. 华为ensp模拟器借助VMware虚拟机的NAT网卡实现上网

    华为仿真模拟器与VMware虚拟机还能这样组合,简直太强大了 有时候,我在使用ensp动手做实验时在想,ensp里的网络设备能不能正常访问互联网呢?这样就可以更加真实的模拟环境.经过一番折腾,终于实现 ...

  7. KVM虚拟机安装管理——qemu-kvm方式

    KVM (kernel-based virtual machine,内核虚拟机),是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linux自身的 ...

  8. 虚拟机配置NAT网络

    如果你的网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择.NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网.其网络结构如下图所示: 这个地方一定要将 ...

  9. KVM虚拟机配置网络

    kvm虚拟机的网络配置有两种模式:桥接模式和NAT模式. 一.两种模式区别如下: 1)NAT模式:也是用户模式,数据包由NAT方式通过主机的接口进行传送,可以访问公网,但是无法从外部访问虚拟机网络,所 ...

最新文章

  1. ADO.net,Linq to SQL和Entity Framework性能实测分析
  2. python 内网镜像站_Python|还是回归海龟与裸IDLE,准备卸载Anaconda
  3. linux遍历文件目录 链表形式
  4. Java网络编程从入门到精通(5):使用InetAddress类的getHostName方法获得域名
  5. ResNet原理和实现
  6. PHP计算字符串的个数
  7. 工作一两年后 ,你会选择什么样的公司?
  8. linux硬盘掉了,出了大问题,硬盘空间大量丢失
  9. 关于 Visual Studio 2017 ,或2019 ,Installer 没检测到已安装的程序.以及C++ 创建项目失败...
  10. 图片压缩工具ImageOptim
  11. Redis中五中数据类型的实例
  12. 现代密码学的第一次高光时刻
  13. unimrcpserver的MRCP消息处理
  14. python xlrdxlwt应用 以文本形式存储数字 数字前补零
  15. php函数形参,PHP中的函数形参的默认值
  16. android fragment实现翻书效果,viewpager实现翻页效果(fragment)
  17. 技術的變與不變之間...Silverlight 3.0的驚鴻一撇
  18. oracle中排序--拼音、笔画、偏旁部首
  19. 浅谈自然语言处理(NLP)和 自然语言理解(NLU)
  20. 罗杨美慧 20190919-4 单元测试,结对

热门文章

  1. REDIS缓存集群介绍
  2. Intel 9代CPU i7 9700k+技嘉B360+华硕2070+NVME重装WIN7系统+跑分
  3. C# Solidworks二次开发:自动创建点位时需要注意的问题
  4. 2466. 统计构造好字符串的方案数(动态规划 (跳楼梯换皮))
  5. kotlin 异常错误汇总
  6. 基于android的餐厅智能点餐
  7. iphone 推广 TA
  8. 3DMax基础操作快捷键
  9. 工厂IP网络广播系统解决方案
  10. android应用判断蓝牙是否连接,如何以编程方式判断蓝牙设备是否已连接?