RHEL 6.1 KVM虚拟机桥接物理机网络
2012-09-10 21:10
435 查看
RHEL6.1 KVM虚拟机桥接物理机网络
一、KVM默认网络配置
1、kvm上网有两种配置:
a. NAT,支持主机与虚拟机的互访,也支持虚拟机访问互联网,但不支持外界访问虚拟机。
b. bridge(桥接),可以使用虚拟机成为网络中具有独立IP的主机,不但能上网,也能让别人访问虚拟机。
2、虚拟机安装完成时,默认的NAT,网卡为“Realtek RTL8139 Family PCI Fast Ethernet NIC,地址是一个私有网段,我分配到的IP是192.168.122.148。
3、在服务器端查看kvm桥接情况,三组对比数据如下:
a.没有虚拟机运行时
[root@CC ~]# brctl show
b.有一台虚拟机运行时
[root@CC ~]# brctl show
c.有两台虚拟要运行时
[root@CC ~]# brctl show
当运行一台虚拟机时,就会自动创建一个虚拟网卡vnet。
4、virbr0的配置文件在/var/lib/libvirt/network目录下,默认配置为:
[root@CC ~]# cat /var/lib/libvirt/network/default.xml
二、配置bridge上网方式
1、创建桥接器(br0)
在/etc/sysconfig/network-scripts目录下,创建一个ifcfg-br0 文件,其类型设为Bridge:
[root@CC ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=bridge
BOOTRPOTO=none
IPADDR=192.168.162.100
NETMASK=255.255.255.0
ONBOOT=yes
2、将物理接口桥接到桥接器
修改ifcfg-eth0(有些是ifcfg-em1),只需要注释掉其IP相关信息,加上“BRIDGE=br0”,将其桥接到br0上。
[root@CC ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NM_CONTROLLED=yes
ONBOOT=yes
#IPADDR=192.168.1.100
#NETMASK=255.255.255.0
BOOTPROTO=none //若有dhcp服务器,可改为dhcp,这样就不需要在guestOS中手动配置IP
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
BRIDGE=br0
注:如果是双网卡或是多网卡,请参照下文
3、重启物理机网络服务
[root@CC ~]# service network restart
4、查看当前桥接情况(有一个虚拟机正在运行)
可以看出eth0桥接在br0上了,也可以看作eth0接在了br0这个交换机上
[root@CC ~]# brctl show
5、将虚拟机接口桥接到桥接器
[root@CC ~]# brctl delif virbr0 vnet0
[root@CC ~]# brctl addif br0 vnet0
[root@CC ~]# brctl show
这样,vnet0也接在了br0这个交换机上,所以vnet0的数据就能通过eth0发送出去
6、在虚拟机NIC中选择virbr0
注意:dhcp服务最终是给br0分配IP的,不会给eth0,但是物理机也是可以上网的。
三、配置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,负责把内容分发到各虚拟机。
几个虚拟机管理模块产生的接口关系如下图:
从图上可以看出,虚拟接口和物理接口之间没有连接关系,所以虚拟机只能在通过虚拟的网络访问外部世界,无法从网络上定位和访问虚拟主机。
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 target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 2009 packets, 125K bytes)
pkts bytes target prot opt in out source destination
421 31847 MASQUERADE all -- * * 192.168.122.0/24 !192.168.122.0/24 ----------->这条是关键,它配置了NAT功能。
Chain OUTPUT (policy ACCEPT 2011 packets, 125K bytes)
pkts bytes target prot opt in out source destination
# iptables -t filter -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1 74 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 ---->由libvirt脚本自动写入
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 ---->由libvirt脚本自动写入
3 984 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67 ---->由libvirt脚本自动写入
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67 ---->由libvirt脚本自动写入
178K 195M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ---->iptables的系统预设
2 168 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 ---->iptables的系统预设
1148 216K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 ---->iptables的系统预设
1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 ---->iptables的系统预设
16564 2721K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited ---->iptables的系统预设
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
3726 3485K ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 state RELATED,ESTABLISHED ---->由libvirt脚本自动写入
3491 399K ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0 ---->由libvirt脚本自动写入
0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0 ---->由libvirt脚本自动写入
0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable ---->由libvirt脚本自动写入
0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable ---->由libvirt脚本自动写入
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited ---->iptables的系统预设
Chain OUTPUT (policy ACCEPT 181K packets, 138M bytes)
pkts bytes target prot opt in out source destination
如果没有default的话,或者需要扩展自己的虚拟网络,可以使用命令重新安装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方式。
图形化的方式:
参考来源:http://rajaruan.blog.51cto.com/2771737/829830
http://www.linuxidc.com/Linux/2012-05/61445.htm
一、KVM默认网络配置
1、kvm上网有两种配置:
a. NAT,支持主机与虚拟机的互访,也支持虚拟机访问互联网,但不支持外界访问虚拟机。
b. bridge(桥接),可以使用虚拟机成为网络中具有独立IP的主机,不但能上网,也能让别人访问虚拟机。
2、虚拟机安装完成时,默认的NAT,网卡为“Realtek RTL8139 Family PCI Fast Ethernet NIC,地址是一个私有网段,我分配到的IP是192.168.122.148。
3、在服务器端查看kvm桥接情况,三组对比数据如下:
a.没有虚拟机运行时
[root@CC ~]# brctl show
b.有一台虚拟机运行时
[root@CC ~]# brctl show
c.有两台虚拟要运行时
[root@CC ~]# brctl show
当运行一台虚拟机时,就会自动创建一个虚拟网卡vnet。
4、virbr0的配置文件在/var/lib/libvirt/network目录下,默认配置为:
[root@CC ~]# cat /var/lib/libvirt/network/default.xml
二、配置bridge上网方式
1、创建桥接器(br0)
在/etc/sysconfig/network-scripts目录下,创建一个ifcfg-br0 文件,其类型设为Bridge:
[root@CC ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=bridge
BOOTRPOTO=none
IPADDR=192.168.162.100
NETMASK=255.255.255.0
ONBOOT=yes
2、将物理接口桥接到桥接器
修改ifcfg-eth0(有些是ifcfg-em1),只需要注释掉其IP相关信息,加上“BRIDGE=br0”,将其桥接到br0上。
[root@CC ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NM_CONTROLLED=yes
ONBOOT=yes
#IPADDR=192.168.1.100
#NETMASK=255.255.255.0
BOOTPROTO=none //若有dhcp服务器,可改为dhcp,这样就不需要在guestOS中手动配置IP
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
BRIDGE=br0
注:如果是双网卡或是多网卡,请参照下文
3、重启物理机网络服务
[root@CC ~]# service network restart
4、查看当前桥接情况(有一个虚拟机正在运行)
可以看出eth0桥接在br0上了,也可以看作eth0接在了br0这个交换机上
[root@CC ~]# brctl show
5、将虚拟机接口桥接到桥接器
[root@CC ~]# brctl delif virbr0 vnet0
[root@CC ~]# brctl addif br0 vnet0
[root@CC ~]# brctl show
这样,vnet0也接在了br0这个交换机上,所以vnet0的数据就能通过eth0发送出去
6、在虚拟机NIC中选择virbr0
注意:dhcp服务最终是给br0分配IP的,不会给eth0,但是物理机也是可以上网的。
三、配置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,负责把内容分发到各虚拟机。
几个虚拟机管理模块产生的接口关系如下图:
从图上可以看出,虚拟接口和物理接口之间没有连接关系,所以虚拟机只能在通过虚拟的网络访问外部世界,无法从网络上定位和访问虚拟主机。
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 target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 2009 packets, 125K bytes)
pkts bytes target prot opt in out source destination
421 31847 MASQUERADE all -- * * 192.168.122.0/24 !192.168.122.0/24 ----------->这条是关键,它配置了NAT功能。
Chain OUTPUT (policy ACCEPT 2011 packets, 125K bytes)
pkts bytes target prot opt in out source destination
# iptables -t filter -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1 74 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 ---->由libvirt脚本自动写入
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 ---->由libvirt脚本自动写入
3 984 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67 ---->由libvirt脚本自动写入
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67 ---->由libvirt脚本自动写入
178K 195M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ---->iptables的系统预设
2 168 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 ---->iptables的系统预设
1148 216K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 ---->iptables的系统预设
1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 ---->iptables的系统预设
16564 2721K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited ---->iptables的系统预设
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
3726 3485K ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 state RELATED,ESTABLISHED ---->由libvirt脚本自动写入
3491 399K ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0 ---->由libvirt脚本自动写入
0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0 ---->由libvirt脚本自动写入
0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable ---->由libvirt脚本自动写入
0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable ---->由libvirt脚本自动写入
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited ---->iptables的系统预设
Chain OUTPUT (policy ACCEPT 181K packets, 138M bytes)
pkts bytes target prot opt in out source destination
如果没有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方式。图形化的方式:
参考来源:http://rajaruan.blog.51cto.com/2771737/829830
http://www.linuxidc.com/Linux/2012-05/61445.htm
相关文章推荐
- RHEL 6.1 KVM虚拟机桥接物理机网络
- RHEL7 kvm虚拟机桥接网络配置
- rhel6.4网络安装kvm虚拟机
- RHEL 6.1 配置路由器共享网络*草稿
- [原]RHEL6 网络桥接
- 使用clonezilla将RHEL6.7物理机转化为kvm虚拟机
- rhel6.4网络安装kvm虚拟机
- KVM虚拟机桥接物理机上网设置
- Fedora 19配置KVM虚拟机的桥接网络
- RHEL6.1 kde 右下角没有网络图标
- 为KVM虚拟机添加多VLAN桥接网络
- CentOS7使用virt-p2v将RHEL6.7的物理机转化为kvm虚拟机
- CentOS 6系统kvm虚拟机中配置桥接网络
- RHEL 6 下面配置两块网卡网络桥接
- VirtualBox安装RHEL之后配置桥接网络
- 物理机与虚拟机配置网络桥接
- [Linux]RHEL虚拟机KVM使用网络桥接模式
- VirtualBox安装RHEL之后配置桥接网络
- RHEL 6 KVM( Virtual Machine Manager) 桥接网络
- openstack 之 KVM虚拟机加入物理机网络的方法(可用于应急)