东东东 陈煜东的博客

标签存档: CentOS

libvirt kvm 虚拟机上网 – Bridge桥接

通过艰难的过程,终于使用libvirt安装完qemu kvm虚拟机了.但是发现虚拟机不能上网.虚拟机想要上网,有很多中方法.

先说两个定义:Guest机器为虚拟机,Host机器为开机运行的真实机器.

查看libvirt的教程,看到网络配置有许多中方式.详情可以访问http://libvirt.org/formatdomain.html#elementsNICS

  • NAT (默认上网) 虚拟机利用host机器的ip进行上网.对外显示一个ip
  • Bridge 将虚拟机桥接到host机器的网卡上,guest和host机器都通过bridge上网.对外不同的ip,

Bridge桥接原理

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

桥接网络(也叫物理设备共享)被用作把一个物理设备复制到一台虚拟机。网桥多用作高级设置,特别是主机多个网络接口的情况。

Bridge桥接原理

如上图,网桥的基本原理就是创建一个桥接接口br0,在物理网卡和虚拟网络接口之间传递数据。

在host机器配置桥接网络

首先可以按照ibm 文章的虚拟机配置一下host机的网络情况,这个的目的就是让host生成一个不日多个桥接,大家都通过这个桥接上网.下面我们来看看具体的步骤.

查看网卡是否工作

确保你想使用bridge网桥的网卡能够为kvm虚拟机模块提供网络连接能力并且网卡是否可以工作.这个网卡应该要能够给guest的kvm虚拟机提供相同的网络支持.接下来例子说明了网卡的配置,并且可以被外部网络访问.这个例子中,使用eth0网卡.

# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:14:5E:C2:1E:40
          inet addr:10.10.1.152  Bcast:10.10.1.255  Mask:255.255.255.0
          inet6 addr: fe80::214:5eff:fec2:1e40/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:664 errors:0 dropped:526 overruns:0 frame:0
          TX packets:163 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:69635 (68.0 KiB)  TX bytes:25091 (24.5 KiB)
          Interrupt:74 Memory:da000000-da012800
................

备份network-scripts网络脚本文件

备份网络配置到不同的目录下,将来可以用来恢复网络配置,. 根据下面的命令将网络脚本ifcfg-eth0 网卡到 /root目录:

# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /root/.
注意:不要把文件copy到/etc/sysconfig/network-scripts/目录或者其子目录

进入network-scripts目录

进入/etc/sysconfig/network-scripts/目录.

cd /etc/sysconfig/network-scripts/

为桥接新建配置文件

为Linux的bridge创建一个新的配置文件为/etc/sysconfig/network-scripts/ifcfg-br0,这里br0是bridge网桥的名字,同eth0类似.使用以下命令

cp ifcfg-eth0 ifcfg-br0 

具体的内容是基于已有的配置文件来进行的.

编辑bridge网桥配置文件

编辑配置文件,让数据包通过bridge(网桥)进行上网.你的网络配置很可能是通过静态ip(BOOTPROTO=static)上网或者是从DHCP服务器获得ip(BOOTPROTO=dhcp)上网的.

如果你的网络是通过静态ip地址来配置的,那么你的配置很可能是和下面一样的:

DEVICE=eth0
BOOTPROTO=static
HWADDR=00:14:5E:C2:1E:40
IPADDR=10.10.1.152
NETMASK=255.255.255.0
ONBOOT=yes

下面的表格显示了eth0和br0的静态ip配置内容,可以根据下面进行编辑

**** static ip配置 *****
/etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=eth0
TYPE=Ethernet
HWADDR=00:14:5E:C2:1E:40
ONBOOT=yes
NM_CONTROLLED=no
BRIDGE=br0
DEVICE=br0
TYPE=Bridge
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=10.10.1.152
NETMASK=255.255.255.0
ONBOOT=yes

下面表格显示的eth0和br0的DHCP配置情况.

**** DHCP配置 ****
/etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=eth0
TYPE=Ethernet
HWADDR=00:14:5E:C2:1E:40
ONBOOT=yes
NM_CONTROLLED=no
BRIDGE=br0
DEVICE=br0
TYPE=Bridge
NM_CONTROLLED=no
BOOTPROTO=dhcp
ONBOOT=yes

重启网络服务

重启网络以验证网络配置是否工作.

如果网络配置不正确,网络连接将会断开,你的电脑将失去访问能力.这样的话,检查以下配置文件,然后使用以下的命令重启以下网络服务:

# service network restart

禁用网络过滤器

向文件/etc/sysctl.conf添加以下代码:

 net.bridge.bridge-nf-call-ip6tables = 0
 net.bridge.bridge-nf-call-iptables = 0
 net.bridge.bridge-nf-call-arptables = 0
 

重新加载kernel参数

# sysctl -p 
net.ipv4.ip_forward = 0 
...
net.bridge.bridge-nf-call-ip6tables = 0 
net.bridge.bridge-nf-call-iptables = 0 
net.bridge.bridge-nf-call-arptables = 0

验证配置是否成功

通过运行ifconfig来验证以下配置是否成功.如果出现两个项,即网桥的br0和现在在工作的eth0:

br0       Link encap:Ethernet  HWaddr 00:14:5E:C2:1E:40
          inet addr:10.10.1.152  Bcast:10.10.1.255  Mask:255.255.255.0
          inet6 addr: fe80::214:5eff:fec2:1e40/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:125 errors:0 dropped:0 overruns:0 frame:0
          TX packets:81 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:16078 (15.7 KiB)  TX bytes:18542 (18.1 KiB)
eth0      Link encap:Ethernet  HWaddr 00:14:5E:C2:1E:40
          inet6 addr: fe80::214:5eff:fec2:1e40/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:206 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:27308 (26.6 KiB)  TX bytes:13881 (13.5 KiB)
          Interrupt:74 Memory:da000000-da012800
注意:你可能发现eth0的网络信息里面没有ipv4的地址了.或者你的GUI界面的网络显示你是断网的. 这不用担心.因为eth0的网络能力已经通过br0进行工作.你的host网络还是能正常工作的.

也可以使用以下的命令来查看网桥是否工作.

# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.000000000000       yes
br0             8000.000e0cb30550       no              eth0

如果是类似的输出,那么你的Linux的Bridge网桥就配置的差不多了.

为Guest虚拟机配置网络

配置Guest虚拟机的xml文件

在虚拟机的xml配置文件进行设置网络的连接方式为bridge桥接,并且桥接的设备为br0.其中mac地址要改变!不然MAC相同,局域网MAC地址相同的电脑不能上网.

<interface type="bridge"> <!--虚拟机网络连接方式-->
    <source bridge="br0" /> <!-- 当前主机网桥的名称-->
    <mac address="00:16:e4:9a:b3:6a" /> <!--为虚拟机分配mac地址,务必唯一,否则dhcp获得同样ip,引起冲突-->
</interface>

在虚拟机配置网络

我使用的是CentOS Minimal Installation的发行版.使用以下命令就可以进行上网了. 一开始只有lo显示.没有看到eth0,后来想到了eth0被禁用了,于是开启即可.

# ifconfig eth0 up
# dhclient eth0

现在还有个问题是,网络不随开机启动. 我打开/etc/sysconfig/network-scripts/ifcfg-eth0显示:

DEVICE=eth0
HWADDR=52:54:00:12:34:56
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp

虽然设置了开机启动,但是每次开机都需要运行上面的两个命令.这样就没办法远程控制主机了.

后来发现是udev弄的.udev在/etc/udev/rules.d/下面搞了一个持久命名规则(persistent-net.rules),对于网卡的持久命令,就采取了MAC地址的匹配方式

原来虚拟机安装后自带MAC网卡地址和我xml定义的网卡不一样.于是我就将虚拟机的MAC网卡提取出来,替换xml文件的MAC网卡信息.然后undefine和define以下虚拟机.

重启虚拟机,发现这次网络能够自动开机获得了.

参考资料

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: libvirt kvm 虚拟机上网 – Bridge桥接 – https://www.chenyudong.com/archives/libvirt-kvm-bridge-network.html

分类: 虚拟化

CentOS yum安装sun Java jre jdk和openjdk

在Linux下的tty终端下,安装sun jre,但是去Oracle安装,下载居然还要登录,使用cookie,没办法。直接到http://www.java.com/下载了。

说明:如果使用yum install 安装软件,具体的软件名称不知道,tab又不管用,可以使用yum list j* 来查看相关的软件名称

安装sun JDK

进入http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html,寻找最新的JDK地址,在以下代码中url替换最新的jdk地址。

没办法直接通过wget下载,需要cookie。(感谢网友评论留下的方法。)

wget --no-check-certificate --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" "http://download.oracle.com/otn-pub/java/jdk/7u15-b03/jdk-7u15-linux-x64.rpm"

改名后,使用一下代码安装

yum install jdk-7u15-linux-x64.rpm

安装sun jre

到http://java.com/zh_CN/download/manual.jsp找到自己的版本下载,我的是下载Linux x64 RPM,地址http://javadl.sun.com/webapps/download/AutoDL?BundleId=67387

下载jre,并重命名

wget -O jre-7u6-linux-x64.rpm http://javadl.sun.com/webapps/download/AutoDL?BundleId=67387

安装

yum install jre-7u6-linux-x64.rpm

安装成功

[root@317304 ddd]# java -version
java version "1.7.0_06"
Java(TM) SE Runtime Environment (build 1.7.0_06-b24)
Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)

安装openjdk

yum install java-1.7.0-openjdk

参考:http://openjdk.java.net/install/

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: CentOS yum安装sun Java jre jdk和openjdk – https://www.chenyudong.com/archives/centos-yum-install-sun-java-jre.html

分类: Java

在虚拟机中安装CentOS操作系统

打算在虚拟机中安装一个centos,然后用来学习服务器的配置,也算是为了将来买vps的准备吧,反正内存也比较大,尽管我自己使用的Ubuntu,但是不想乱安装软件,还是用来虚拟机来,免的捣鼓坏了可以快速还原。

下载centos光盘安装镜像

下载Centos的iso源文件, 我是在USTC上下载的,下载地址为http://mirrors.ustc.edu.cn/centos/6.3/isos/x86_64/CentOS-6.3-x86_64-minimal.iso

在虚拟机中安装centos

在虚拟机中新建一个Linux系统,并在虚拟光盘中添加iso文件,运行虚拟机,进入系统。

  1. 运行后,有个选项,选择”Install or upgrade an existing system”,等待一系列检查,
  2. 有一个”Disc found”,检测光盘是否完整,一般没用,我选择跳过了。然后继续等待。
  3. 出现”Welcome to CentOS!”,选择”OK”。
  4. 在”Language Selection”语言选择中,我选择默认的英语”English”。
  5. 在”Keyboard Selection”键盘选择,默认”us”。
  6. “Time Zone Selection”时区选择,我选择”Asia/Shanghai”上海。
  7. 输入root密码。
  8. 选择分区,我将整块硬盘都使用了。然后又是等待,这次等待时间较长。不过它怎么就从网上下载东西呢,果断断网。貌似不结束,重启,唉。 估计得等到连接超时才跳过。
  9. 安装完后,重启计算机,就可以使用root用户登录了。

使用root账户登录成功。

系统默认使用DHCP获得ip,虚拟机中使用的是NAT转换,不支持ipv6,我使用桥接功能,这样我能使用ipv6。

接下来要安装一下ssh服务器功能。

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: 在虚拟机中安装CentOS操作系统 – https://www.chenyudong.com/archives/install-centos-minimal-linux-on-virtualbox.html

分类: Linux, 网站建设

Copyright © 2017 东东东 陈煜东的博客 粤ICP备13059639号-1

SITEMAP回到顶部 ↑