参考来源:HowtoForge
本文讲述如何在Fedora 18下配置桥接网络,使得局域网中的其它机器能够访问KVM中的虚拟机。注:Fedora 18是宿主机器的操作系统
下面开始!
简而言之是以下几个步骤。
- 禁用SELinux(参考来源里面建议的,这里我不太推荐禁用SELinux)
- 虚拟服务端KVM的安装和配置我之前讲过了的,这里就不讲了(标签Fedora下去找吧)。
- 禁用NetworkManager对网络的管理,改用较为「原始」的network脚本来管理网络。(非必须,我后来启用了NetworkManager,桥接网络仍然可以工作,不过NetworkManager不能再管理桥接的有线网卡(或翻译为「以太网卡」)。)
- 在KVM中应用桥接网络。
下面详细讲一下第三步这个桥接网络的配置怎么操作的。
先终端下运行ifconfig看看你要桥接起来的网络端口名称(一般是eth0、em0什么的),我这里是p6p1!
终端下依次运行,
su -c 'systemctl disable NetworkManager.service' su -c 'systemctl enable network.service' su -c 'systemctl stop NetworkManager.service'
看看/etc/resolv.conf中DNS服务器是否正确,如果缺失nameserver那么运行system-config-network配置好。然后编辑/etc/sysconfig/network-scripts/ifcfg-p6p1(ifcfg-后面跟的是你的网络端口名)这个文件,将DNS1、DNS2、GATEWAY、IPADDR、NETMASK和SEARCH这几行都注释掉,同时把NM_CONTROLLED的值改为no,并添加一行BRIDGE=br0,贴上我的范例供各位参考吧。
UUID="9c0c0328-4126-4a5c-8848-e1fd63f4e60e" NM_CONTROLLED="no" #BOOTPROTO=none DEVICE="p6p1" ONBOOT="yes" TYPE=Ethernet DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME=Ethernet HWADDR=88:AE:1D:31:12:EA #IPADDR0=192.168.0.20 PREFIX0=24 #GATEWAY0=192.168.0.1 #DNS1=192.168.0.1 #DNS2=8.8.8.8 BRIDGE=br0 USERCTL=no
然后新建并编辑/etc/sysconfig/network-scripts/ifcfg-br0文件,内容如下,
DEVICE=br0 TYPE=Bridge BOOTPROTO=static DNS1=192.168.0.1 DNS2=8.8.8.8 GATEWAY=192.168.0.1 IPADDR=192.168.0.20 NETMASK=255.255.255.0 ONBOOT=yes
上面有些具体的值请按照你的实际情况修改。根据我个人的体会的话,把/etc/sysconfig/network-scripts/下ifcfg-开头的文件中不必要的(主要就是无线网络连接过的那几个)删掉,可以避免通过systemctl重启network服务出错。
配置完毕后重启Fedora,再在终端运行ifconfig看看输出是否正确,我的输出如下。
[will@localhost ~]$ ifconfig br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.20 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::8aae:1dff:fe31:12ea prefixlen 64 scopeid 0x20<link> ether 88:ae:1d:31:12:ea txqueuelen 0 (Ethernet) RX packets 5283 bytes 2273032 (2.1 MiB) RX errors 0 dropped 1 overruns 0 frame 0 TX packets 5972 bytes 1221202 (1.1 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 662317 bytes 38148744 (36.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 662317 bytes 38148744 (36.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 p6p1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 88:ae:1d:31:12:ea txqueuelen 1000 (Ethernet) RX packets 6216 bytes 2441789 (2.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 6096 bytes 1227923 (1.1 MiB) TX errors 0 dropped 0 overruns 0 carrier 1 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether aa:55:60:1a:b2:d3 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
如果这样就表示桥接网络配置完成了。然后修改KVM虚拟机的网络界面配置,把Source deviec改成主机桥接的网络,如下图所示。