设为首页 收藏本站
查看: 1894|回复: 0

[经验分享] Redhat/CentOS6.2 x86系统KVM虚拟机网络配置(一)—NAT方式

[复制链接]

尚未签到

发表于 2016-1-8 14:01:11 | 显示全部楼层 |阅读模式
  摘要:KVM虚拟机网络配置的两种方式:NAT方式和Bridge方式。NAT方式的配置原理和步骤。NAT方式适用于桌面主机的虚拟化。
问题

  客户机安装完成后,需要为其设置网络接口,以便和主机网络,客户机之间的网络通信。事实上,如果要在安装时使用网络通信,需要提前设置客户机的网络连接。
  KVM 客户机网络连接有两种方式:

  • 用户网络(User Networking):让虚拟机访问主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户机访问客户机,性能上也需要大的调整。NAT方式。
  • 虚拟网桥(Virtual Bridge):这种方式要比用户网络复杂一些,但是设置好后客户机与互联网,客户机与主机之间的通信都很容易。Bridge方式。
  本文主要解释NAT方式的配置。

NAT方式原理
  NAT方式是kvm安装后的默认方式。它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。
  检查当前的网络设置:
#virsh net-list --all
Name State Autostart
-----------------------------------------
default active yes
  default是宿主机安装虚拟机支持模块的时候自动安装的。
  检查当前的网络接口:
#ifconfig
eth0 Link encap:Ethernet HWaddr 44:37:E6:4A:62:AD
inet6 addr: fe80::4637:e6ff:fe4a:62ad/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:987782 errors:0 dropped:0 overruns:0 frame:0
TX packets:84155 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:109919111 (104.8 MiB) TX bytes:12695454 (12.1 MiB)
Interrupt:17

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:240 (240.0 b) TX bytes:240 (240.0 b)

virbr0 Link encap:Ethernet HWaddr 52:54:00:B9:B0:96
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:2126 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:100387 (98.0 KiB)

virbr0-nic Link encap:Ethernet HWaddr 52:54:00:B9:B0:96
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
  其中virbr0是由宿主机虚拟机支持模块安装时产生的虚拟网络接口,也是一个switch和bridge,负责把内容分发到各虚拟机。
  几个虚拟机管理模块产生的接口关系如下图:
DSC0000.png
  从图上可以看出,虚拟接口和物理接口之间没有连接关系,所以虚拟机只能在通过虚拟的网络访问外部世界,无法从网络上定位和访问虚拟主机。
  virbr0是一个桥接器,接收所有到网络192.168.122.*的内容。从下面命令可以验证:

# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.525400b9b096 yes virbr0-nic
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0

  同时,虚拟机支持模块会修改iptables规则,通过命令可以查看:
  
# iptables -t nat -L -nv
Chain PREROUTING (policy ACCEPT 16924 packets, 2759K bytes)
pkts bytes targetprot opt inoutsourcedestination
Chain POSTROUTING (policy ACCEPT 2009 packets, 125K bytes)
pkts bytes targetprot opt inoutsourcedestination
421 31847 MASQUERADEall--**192.168.122.0/24!192.168.122.0/24----------->这条是关键,它配置了NAT功能。
Chain OUTPUT (policy ACCEPT 2011 packets, 125K bytes)
pkts bytes targetprot opt inoutsourcedestination

# iptables -t filter -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes targetprot opt inoutsourcedestination
174 ACCEPTudp--virbr0 *0.0.0.0/00.0.0.0/0udp dpt:53 ---->由libvirt脚本自动写入
00 ACCEPTtcp--virbr0 *0.0.0.0/00.0.0.0/0tcp dpt:53 ---->由libvirt脚本自动写入
3984 ACCEPTudp--virbr0 *0.0.0.0/00.0.0.0/0udp dpt:67 ---->由libvirt脚本自动写入
00 ACCEPTtcp--virbr0 *0.0.0.0/00.0.0.0/0tcp dpt:67 ---->由libvirt脚本自动写入
178K195M ACCEPTall--**0.0.0.0/00.0.0.0/0state RELATED,ESTABLISHED---->iptables的系统预设
2168 ACCEPTicmp --**0.0.0.0/00.0.0.0/0---->iptables的系统预设
1148216K ACCEPTall--lo*0.0.0.0/00.0.0.0/0---->iptables的系统预设
160 ACCEPTtcp--**0.0.0.0/00.0.0.0/0state NEW tcp dpt:22 ---->iptables的系统预设
16564 2721K REJECTall--**0.0.0.0/00.0.0.0/0reject-with icmp-host-prohibited---->iptables的系统预设
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes targetprot opt inoutsourcedestination
3726 3485K ACCEPTall--*virbr00.0.0.0/0192.168.122.0/24state RELATED,ESTABLISHED ---->由libvirt脚本自动写入
3491399K ACCEPTall--virbr0 *192.168.122.0/240.0.0.0/0---->由libvirt脚本自动写入
00 ACCEPTall--virbr0 virbr00.0.0.0/00.0.0.0/0---->由libvirt脚本自动写入
00 REJECTall--*virbr00.0.0.0/00.0.0.0/0reject-with icmp-port-unreachable ---->由libvirt脚本自动写入
00 REJECTall--virbr0 *0.0.0.0/00.0.0.0/0reject-with icmp-port-unreachable ---->由libvirt脚本自动写入
00 REJECTall--**0.0.0.0/00.0.0.0/0reject-with icmp-host-prohibited ---->iptables的系统预设
Chain OUTPUT (policy ACCEPT 181K packets, 138M bytes)
pkts bytes targetprot opt inoutsourcedestination


如果没有default的话,或者需要扩展自己的虚拟网络,可以使用命令重新安装NAT。
NAT方式的适用范围
桌面主机虚拟化。

创建步骤

#virsh net-define /usr/share/libvirt/networks/default.xml
  此命令定义一个虚拟网络,default.xml的内容:
<network>
<name>default</name>
<bridge name="virbr0" />
<forward/>
<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>
  也可以修改xml,创建自己的虚拟网络。
  标记为自动启动:

#virsh net-autostart default
Network default marked as autostarted
  启动网络:

#virsh net-start default
Network default started
  网络启动后可以用命令brctl show 查看和验证。
  修改/etc/sysctl.conf中参数,允许ip转发:
net.ipv4.ip_forward=1
  

客户机安装
  客户机安装时注意,网络要选择用NAT方式。
  图形化的方式:

DSC0001.png
  文本方式:
  编辑修改虚拟机配置文件 /etc/libvirt/qemu/v1.xml,增加如下内容

<interface type='network'>
<mac address='52:54:00:4f:1b:07'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
  

  虚拟机启动后,验证网络接口是否正常:
# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.525400b9b096 yes virbr0-nic
vnet0

  
Bridge方式的影响
Bridge方式配置出来的接口对NAT方式没有影响,因为NAT方式并没有使用物理网卡。但作为客户机,只能选择其中的一种。  
  

参考:Bridge方式
  Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。
  Bridge方式配置及原理。

  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-161930-1-1.html 上篇帖子: Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(九) 下篇帖子: KVM客户机添加virsh console 虚拟终端支持及原理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表