热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

KVM虚拟机桥接方式联网的设置方法

KVM虚拟机桥接的配置在ubuntu10.04server上安装好了kvm后,需要配置kvm桥接网络,首先需要安装桥接工具:sudoapt-getinstallbridge-utils安装创建TAP界面的工具:sudoapt-getinstalluml-utilities将用户cbpos加入到uml-net组sudog
KVM虚拟机桥接的配置
在ubuntu 10.04 server上安装好了kvm后,需要配置kvm桥接网络,首先需要安装桥接工具:
sudo apt-get install bridge-utils

安装创建TAP界面的工具:
sudo apt-get install uml-utilities

将用户cbpos加入到uml-net组
sudo gpasswd -a cbpos uml-net
chmod 666 /dev/net/tun

然后在host(即主ubuntu 10.04 server)上编辑网络界面配置文件sudo vi /etc/network/interfaces,内容如下:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user posftp   \\cbpos是我的用户名,在这里换为你的用户名

auto tap0
iface tap0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user cbpos \\cbpos是我的用户名,在这里换为你的用户名

auto br0
iface br0 inet static  \\当然这里也可以使用DHCP分配
bridge_ports eth0 tap0
address 192.168.11.68
netmask 255.255.255.0
network 192.168.11.0
broadcast 192.168.11.255
gateway 192.168.11.1
bridge_stp off
bridge_maxwait 0
bridge_fd 0

激活tap0和br0: //有些时候会不奏效,但重启后就行了
sudo /sbin/ifup tap0
sudo /sbin/ifup br0

好了以后ifconfig看一下,多了一个tap0和br0, br0上的IP地址就是你本机的IP地址。

然后创建虚拟磁盘(用qemu-img命令):
mkdir kvm
cd kvm
kvm create -f qcow2 ubuntu.img 20G

创建虚拟机:
kvm -m 1024 -drive file=/home/cbpos/kvm/ubuntu.img,cache=writeback -net nic,vlan=0,model=virtio,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot d -nographic -daemonize -cdrom /home/cbpos/ubuntu-10.04.2-server-amd64.iso -no-acpi
这里对各个参数说明一下:
-m 1024 分配1024MB的内存给GUEST OS(即KVM下的虚拟操作系统)

-drive file=/home/cbpos/kvm/ubuntu.img,cache=writeback  使用虚拟磁盘的文件的路径,并启用writeback缓存

-net nic,vlan=0,model=virtio,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tapo,script=no
使用网络,并连接到一个存在的网络设备tap0,注意mac地址一定要自己编一个,特别是如果你虚拟了多个系统并且要同时运行的话,不然就MAC冲突了,使用高速网络模式(model=virtio)

-boot d  从光盘启动(从硬盘启动则为 -boot c)

从光盘启动之后就会安装系统。系统安装好了之后用下面命令启动虚拟机
kvm -m 1024 -drive file=/home/cbpos/kvm/ubuntu.img,cache=writeback -net nic,vlan=0,model=virtio,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot c

然后在guest os下用命令ifconfig查看ip,并设置IP,在我的电脑上用命令sudo vi /etc/network/interface查看到的情况如下:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user posftp   \\cbpos是我的用户名,在这里换为你的用户名

如果同时运行多个GUEST OS ,则网络设置要改一下,在/etc/network/interfaces 里加几个tap界面就行了,每个GUEST OS单独使用一个TAP,比如说现在要同时运行3个GUEST OS ,则配置文件如下:
auto tap0
iface tap0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user cbpos      \\cbpos是我的用户名,在这里换为你的用户名

auto tap1
iface tap1 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user cbpos      \\cbpos是我的用户名,在这里换为你的用户名

auto tap2
iface tap2 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user cbpos     \\cbpos是我的用户名,在这里换为你的用户名

auto br0
iface br0 inet static  \\当然这里也可以使用DHCP分配
bridge_ports eth0 tap0
address 192.168.11.68
netmask 255.255.255.0
network 192.168.11.0
broadcast 192.168.11.255
gateway 192.168.11.1
bridge_stp off
bridge_maxwait 0
bridge_fd 0

启动GUEST OS
kvm -m 512 -drive file=/home/posftp/kvm/posftp.img,cache=writeback -net nic,vlan=0,model=virtio,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot c -nographic -daemonize
把ifname=tap0换为你要tap1或者tap2就行了,MAC也要改
要注意,系统重启后要重新加载kvm内核模块:
sudo modprobe kvm
sudo modprobe kvm-amd   //如果使用AMD处理器
sudo modprobe kvm-intel   //如果是用INTEL处理器
当然,你也可以修改系统相关设置在启动时自动加载该模块。

下面是kvm下的虚拟机联网问题(此方法配置好了之后从启电脑需要从新进行一些配置才能上网),所以不要用此方法配置虚拟机联网。
解决方法一:
首先说一下实现原理。我是想先在host上造一块假网卡,然后guest的系统跟这假网卡连接构成一个局域网。guest想连外网的话,就把host当路由器。至于域名服务器,在guest系统里直接指定。
本人实验的host是ubuntu 10.04 server,guest是ubuntu 10.04 server。(都是64位)
接下来我会假设你已经装了kvm,而且能用它启动虚拟机。
(以下一到四网络设定,都在host下操作)
一,首先把必要的工具装了:
sudo apt-get install uml-utilities

二,再造假网卡tap0(名字随便取)并作一些基本配置
sudo tunctl -t tap0 -u xxx
此处xxx换成你自己的用户名
sudo chmod 0666 /dev/net/tun
这样大家都有权力去读写那个假网卡。即使在上面那行代码中你指定了自己的用户名,你还是没有办法读写tap0(很奇怪),所以这条命令是有用的。

三,配置网卡的网络参数。
sudo ifconfig tap0 192.168.0.10 netmask 255.255.255.0 up
随便设,但是你要确保你待会设置的guest的网卡ip跟tap0的属于同一个网段。

四,接下来是系统的配置(连外网所必须)
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
这样开启了linux的ip转发功能,host可以当路由器用了。如果你想让guest连上外网的话这条一定要。
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
这条命令也是连外网所必须的。

五,启动kvm虚拟机
kvm -M pc -m 512 -hda /root/hda.img -net nic -net tap,ifname=tap0,script=no -boot c
-net nic -net tap,ifname=tap0,script=no是跟网络相关的,上面的命令的其他部分自己跟据实际情况修改。ifname=你造的假网卡的名字,我的是tap0。

六,guest系统的配置。
guest启动后应该会认出一张网卡,eth0的。把那网卡的ip设定成192.168.0.x,(这个ip跟host下tap0的ip不能相同!但要确保它们同在一个子网。我的是192.168.0.11),并把netmask设成 255.255.255.0。到现在,guest和host应该是同在一个子网了。你可以试一下在guest里ping 192.168.0.10,在host里ping 192.168.0.11,如无意外,应该能ping通。到现在已实现host guest之间的互访。

七,让guest连上外网。(前提是host已经连上外网)

只需要把guest的默认网关设置成192.168.0.10(你的假网卡的ip)就可以了,非常的简单。
域名服务器手动设置,不会很麻烦(sudo vi /etc/resolv.conf然后在nameserver后添加DNS就可以了)。


推荐阅读
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 本文介绍如何在Linux Mint系统上搭建Rust开发环境,包括安装IntelliJ IDEA、Rust工具链及必要的插件。通过详细步骤,帮助开发者快速上手。 ... [详细]
  • 本文详细介绍了如何在预装Ubuntu系统的笔记本电脑上安装Windows 7。针对没有光驱的情况,提供了通过USB安装的具体方法,并解决了分区、驱动器无法识别等问题。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
author-avatar
转化术治_953
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有