页面

2011年10月25日星期二

KVM的命令行下控制虚拟机关机和重启

关键词:kvm, libvirt, virsh, shutdown, reboot, acpi, acpid, virtualization, linux

  最近在 ubuntu 上装上了 KVM 虚拟机, 并且安装了管理程序 libvirt 和 GUI 管理器 virt-manager 进行管理。为了方便远程管理,找到了几个简单的命令行的管理方式:

进入 libvirt 控制台:
# virsh

显示虚拟机列表:
virsh # list --all

启动虚拟机:
virsh # start [name]

关闭虚拟机:
virsh # shutdown [name]

重启虚拟机:
virsh # reboot [name]


  然后便在 GUI 界面新建了一个 ubuntu 的 guest 虚拟机。试了试上面的一些命令,发现 shutdown 和 reboot 两个命令不起作用。不得已用了几次 destroy,觉得这不是办法,于是搜索了一下看是怎么回事。没想到居然搜索结果里一个中文的网站也没有,只有几个英文的网站说了这个事。原来 guest 虚拟机不支持 acpi 的话,是无法响应 host 发出的 shutdown 和 reboot 命令的。给出的方案就是,在 guest 虚拟机里安装 acpi 支持包:

# sudo apt-get install acpid

  这样就可以了。如果是以命令行方式创建虚拟机,也可以在创建时添加 --addpkg acpid 参数以初始化安装。

参考:

1,http://askubuntu.com/questions/2825/how-do-i-use-virsh-shutdown-on-kvm-domains-to-shut-down-ubuntu-guests
2,http://wiki.libvirt.org/page/FAQ#Why_doesn.27t_.27shutdown.27_doesn.27t_seem_to_work.3F
3,https://help.ubuntu.com/10.04/serverguide/C/jeos-and-vmbuilder.html



使用Facebook社交插件参与评论:

2011年10月17日星期一

windows 7 下使用tunnelbroker 服务配置IPv6

关键词:IPv6, 6in4, IPv6-in-IPv4, teredo, he.net, tunnelbroker

本文主要参考了:Ubuntu使用he.net的IPv6隧道代理访问网络(已更新)

注:本文仅适用于有固定 IP(IPv4) 地址的电脑。包括以 192.168. 等开头的局域网地址。本文是对上面链接原文中的第 7 条有关局域网 windows 7 下的配置的详细说明。并简化了操作。动态 IP 地址的配置方法略有不同,而且比较繁琐,请参考上面的链接原文。

目前 IPv6 尚未全面普及,大部分地方用的还是 IPv4。在这个过渡期,有许多种过渡技术可以用来在现有的 IPv4 网络上使用 IPv6,比如:teredo,6in4 和 isatap 等等。

我之前介绍过如何在 windows 7 下使用 teredo:

Windows 7,中国电信ADSL的环境下配置IPv6

,这次再介绍一下 6in4。

Hurricane Electric 旗下的 tunnelbroker.net 提供免费的 6in4 服务。以下以该服务为例进行说明。

1,参考本文开头处链接的文章,申请服务和通道。
  简单描述一下,就是到 http://tunnelbroker.net 注册一个账号,然后创建一个普通通道。
  每个账号可以最多创建 5 个通道。创建通道时需要填写本机的外网 IP 地址,而且需要保证该 IP 地址可以从 ipv4.tunnelbroker.net 地址 ping 通。ping 不通的话是没法设置成功的。可以到 http://just-ping.com 测试能否 ping 通。ping 不通的话,需要调整防火墙设置,或者路由器的安全设置。
  创建通道时可以选择服务器。可以逐一 ping 各个服务器,看哪台服务器的响应最快。我用西安电信的ADSL,大部分时间都是 Fremont 或 Seattle 的服务器最快。

以下是 ping 各服务器的批处理:



@echo off
echo ==================Asia==================
echo ----------------------------------------
echo ping Hong Kong
ping 216.218.221.6
echo ----------------------------------------
echo ping Singapore
ping 216.218.221.42
echo ----------------------------------------
echo ping Tokyo
ping 74.82.46.6
echo ----------------------------------------
echo =================Europe=================
echo ----------------------------------------
echo ping Amsterdam
ping 216.66.84.46
echo ----------------------------------------
echo ping Frankfurt .... skip
echo ----------------------------------------
echo ping London
ping 216.66.80.26
echo ----------------------------------------
echo ping Paris
ping 216.66.84.42
echo ----------------------------------------
echo ping Stockholm
ping 216.66.80.90
echo ----------------------------------------
echo ping Zurich
ping 216.66.80.98
echo ----------------------------------------
echo ==============North America=============
echo ----------------------------------------
echo ping Ashburn
ping 216.66.22.2
echo ----------------------------------------
echo ping Chicago
ping 209.51.181.2
echo ----------------------------------------
echo ping Dallas
ping 216.218.224.42
echo ----------------------------------------
echo ping Fremont
ping 72.52.104.74
echo ----------------------------------------
echo ping Fremont
ping 64.62.134.130
echo ----------------------------------------
echo ping Los Angeles
ping 66.220.18.42
echo ----------------------------------------
echo ping Miami
ping 209.51.161.58
echo ----------------------------------------
echo ping New York
ping 209.51.161.14
echo ----------------------------------------
echo ping Seattle
ping 216.218.226.238
echo ----------------------------------------
echo ping Toronto
ping 216.66.38.58
echo ----------------------------------------

pause



2,将以下批处理命令中的 4 个参数修改为自己的内容,然后在命令行中顺序执行,或者存为一个 bat 文件以批量执行。

其中 4 个参数是:
IPV4_SERVER:刚才建立的通道的Tunnel Details页面的Server IPv4 Address的值
IPV6_SERVER:Tunnel Details页面的Server IPv6 Address的值(不带后面的/64)
IPV4_LOCAL:本机的固定IP地址。如果是外网固定IP,那就是Tunnel Details页面的Client IPv4 Address的值。如果是内网固定IP,则填写内网固定IP(如 192.168.0.7)
IPV6_LOCAL:Tunnel Details页面的Client IPv6 Address的值(不带后面的/64)

各参数的位置见下图中的红框所示处:


以下是批处理文件内容:


@echo off
echo  正在配置 6in4 通道....

set IPV4_SERVER=64.62.134.130
set IPV6_SERVER=2001:470:ffff:ffff::1
set IPV4_LOCAL=192.168.0.7
set IPV6_LOCAL=2001:470:ffff:ffff::2

netsh interface teredo set state disabled
netsh interface ipv6 add v6v4tunnel IP6Tunnel %IPV4_LOCAL% %IPV4_SERVER%
netsh interface ipv6 add address IP6Tunnel %IPV6_LOCAL%
netsh interface ipv6 add route ::/0 IP6Tunnel %IPV6_SERVER%

netsh interface ipv6 set prefix ::1/128 50 0
netsh interface ipv6 set prefix ::/0 40 1
netsh interface ipv6 set prefix 2002::/16 30 2
netsh interface ipv6 set prefix ::/96 20 3
netsh interface ipv6 set prefix ::ffff:0:0/96 10 4
netsh interface ipv6 set prefix 2001::/32 5 5

pause



4,从 https://ipv6-hosts.googlecode.com/hg/hosts 获取最新的 IPv6 解析,并将全部内容追加到本机的 C:\Windows\System32\drivers\etc\hosts 文件末尾
  自己也可以收集其他 IPv6 解析,添加到 hosts 文件中。要直接使用 IPv6 地址访问一个网站,只需要在浏览器中直接输入该 IPv6 地址,并在两端加上 [ 和 ] 号访问即可。下面有例子。

5,命令行运行 ipconfig /flushdns 刷新 DNS 缓存

6,ping g.cn。如果有从 IPv6 地址返回的响应,则说明配置成功。

7,如果是局域网固定 IP 而外网 IP 发生了变化,则需要访问Tunnel Details页面手动更改最新的 Client IPv4 Address 地址。或者访问以下网页自动修改当前外网 IP 地址:

http://ipv4.tunnelbroker.net/ipv4_end.php?ip=AUTO&pass=p1&apikey=p2&tid=p3

其中 p1 替换为:上述账号的密码的 MD5 值。网上有在线计算 MD5 值的工具。
p2 替换为:登录后的 Main Page 的 User ID 的值
p3 替换为:Tunnel Details 页面的 Tunnel ID 的值

可以将该地址存入收藏夹,每次 ADSL 重新拨号后访问一下。或者设置令每次开机自动执行以下命令:

explorer http://ipv4.tunnelbroker.net/ipv4_end.php?ip=AUTO&pass=p1&apikey=p2&tid=p3

8,如果需要关闭该通道,可以执行:


@echo off
echo  ipv6 setting off....

set IPV6_LOCAL=2001:470:ffff:ffff::2
set IPV6_SERVER=2001:470:ffff:ffff::1

netsh interface ipv6 delete route ::/0 IP6Tunnel %IPV6_SERVER%
netsh interface ipv6 delete address "IP6Tunnel" %IPV6_LOCAL%
netsh interface ipv6 delete interface "IP6Tunnel"

netsh int ipv6 set prefix ::1/128 50 0
netsh int ipv6 set prefix ::/0 40 1
netsh int ipv6 set prefix 2002::/16 30 2
netsh int ipv6 set prefix ::/96 20 3
netsh int ipv6 set prefix ::ffff:0:0/96 10 4
netsh int ipv6 set prefix 2001::/32 5 5

pause


9,正常使用中,不需要关闭通道。只要 IP 没有变化,下次开机通道依然有效。以上,用于固定 IP 的方案介绍完毕。浏览器访问 http://[2001:4810::110] 以检查自己的 IPv6 地址:


10,前文之所以说动态 IP 地址的配置比较繁琐,就在于批处理文件中需要写一个固定的 IP 地址。如果是动态 IP 地址的话,则每次 IP 变化之后,都需要先关闭通道,再修改开启通道的批处理文件中的参数,再执行之。

11,如果发现 hosts 中的网址突然访问不通,则有可能是本地的外网 IP 变化导致通道失效了,需要访问步骤 7 中所示的网址以更新 IP:

如果 IP 没发生变化也去访问该页面,则会提示:

-ERROR: This tunnel is already associated with this IP address.  Please try and limit your updates to IP changes.

如果很不凑巧你现在的 IP 是别人之前用来创建过通道的,则会提示:


点击页面中的链接,则会跳转到:


提示你可以通过该方法夺回该 IP 的通道使用权。因为同一个 IP 只能有一个通道。但是这一招会删掉对方的通道,有点残忍。所以,还是我们自己重新拨号换一个没人用的 IP 吧

12,以上介绍完。有疑问可同时参考开头处的两个链接。

使用Facebook社交插件参与评论:

2011年9月11日星期日

缓存代理服务器solipo的一些配置经验

关键词: solipo, polipo, squid, cache, proxy

有关 solipo 及 polipo 的详细介绍可参考:简单易懂的Polipo使用入门
本文重点介绍 solipo 的缓存文件夹的设置方法。

polipo 是一个轻量级的代理服务器。相比大名鼎鼎的 squid,它更加轻巧,适合个人或小型网络使用。polipo 原生 linux 平台,虽然也有用于 windows 的安装包,可惜易用性非常差。想必用 linux/unix 的人或多或少都有点瞧不起用 windows 的人吧。还好有人将 polipo 重新打包成 solipo 方便 windows 平台下的使用。以下是我在 windows 7 下使用 solipo 的一些经验,供大家参考。

1,禁用 solipo 的 log 功能:
  solipo 的 log 文件随着使用会越来越大。而且这个 log 文件不是实时更新的,每次 solipo 退出之后才一次性写入文件。这样的 log 不如不要。在 config 文件中添加一行:

  logLevel = 0x0

即可禁用 log。这样 solipo 只会新建一个空的 polipo.log 文件,不会往文件里写任何东西。

2,修改缓存文件夹的位置:
  我用的 solipo 版本是目前最新版的 0.09,通过右键菜单中的设置修改缓存文件夹(cache dir=C:\solipocache)是没有用的。可以打开 solipo.ini 文件直接改为:

  cache dir=C:/solipocache/

这样才能正常配置缓存文件夹。斜杠和反斜杠,结尾的处理,这些都是 linux 平台和 windows 平台之间的差异带来的问题。设置好之后重启 solipo,正常使用一会儿之后,缓存文件夹就开始工作了。

3,允许其他计算机连接到 solipo 服务器:
  修改 config 文件,添加一行:

  proxyAddress = "0.0.0.0"    # IPv4 only

可允许其他计算机使用该代理服务器。

使用Facebook社交插件参与评论:

2011年9月5日星期一

Windows 7,中国电信ADSL的环境下配置IPv6

关键词:ipv6, google, gmail, teredo, chinatelecom, gfw, 路由上网, 拨号上网


本文主要参考了这篇文章:开启 Teredo 通道, 提前感受 IPv6 (for 非教育网用户)

以前经常见 google reader 里出现如何设置 ipv6 的文章。讲的比较通俗易懂的我都自己试了一下,但一直都没有配置成功。只能说不是人家教程写的太差就是我自己悟性太低了。今天突然点开 gmail 最下面的访问记录看见有一个从 ipv6 地址发起的访问,仔细一看才发现是我自己东搞西搞,已经把 ipv6 配置成功了。只不过这个成功不太容易看得出来。经此一事,对 ipv6 又多了一些了解。

我的网络环境:中国电信 2M ADSL 路由器拨号上网,windows 7 64位操作系统。

以下是隧道方式连接 ipv6 的设置方法:

1,首先,如果你以前配置过 ipv6 的话,最好能把那些配置都还原回来。我这个方案不需要安装任何第三方软件,所以如果你安装过什么隧道软件的话,现在就可以卸掉了。如果经过以下配置,还不能配置成功的话,建议重新安装操作系统,用一个干净的系统开始配置。

2,使用管理员权限运行 cmd,打开命令行窗口。

3,根据使用路由器的方式不同,选择运行不同的命令:

直接在电脑上新建拨号连接,每次开机需要拨号的电脑:(有外网 IP 地址的电脑。因为 state 默认就是 client,所以如果没有动过这个的话就不用执行该命令)

netsh int ter set state client


 在路由器上设置了拨号,只要路由器开着就能上网的电脑:(IP 地址大多以 192.168. 开头的电脑)

netsh int ter set state enterpriseclient

4,以上设置默认使用了微软的 ipv6 隧道(Windows 系统默认)。如果你找到了其他隧道,可以这样修改:

netsh int teredo set state client teredo.ipv6.microsoft.com.
或者:
netsh int teredo set state enterpriseclient teredo.ipv6.microsoft.com.

5,这样就开启了 ipv6 隧道了。cmd 中运行 ipconfig 看看,有这样的一串以 2001: 开头的 ipv6 地址的话,就说明 ipv6 已经配置的差不多了。没有的话,重启一下电脑看看。



6,以上仅仅是开启了 ipv6 隧道,要通过 ipv6 上某些网站,还需要配置能够解析 ipv6 地址的 DNS。

7,最方便的 DNS 的配置方法就是改 hosts 文件(在 C:\Windows\System32\drivers\etc\ 下)。喜欢折腾的人可以试试搜索“双栈DNS”。

8,网上有人维护着一个 ipv6 地址列表(大部分是 google 系网站的 ipv6 地址)。将该列表中的所有 DNS 解析记录复制到 hosts 文件的最下面并保存。

9,运行 ipconfig /flushdns 刷新本地 DNS 缓存。最好是重启一下电脑。

10,这样 ipv6 上网的两个条件就都具备了:ipv6 地址和 ipv6 解析。

11,经过这样设置,访问刚才加到 hosts 里的网站时就能以 ipv6 进行访问了。

12,不要开启任何代理软件,不要设置任何代理服务器,然后通过浏览器登录你的 gmail,看看页面最下方的“上次帐户活动时间”,点击“详细信息”,如果看到有 ipv6 的活动的话,就说明 ipv6 配置成功了。如:



13,接下来可以配置你自己的代理服务器了。注意不要让 hosts 列表中的网站走代理。否则 ipv6 就白设置了。如果用 Proxy Switchy! 之类的插件配合 gfwlist 管理代理服务器的话,那么可以设置规则令 google 系的网站走“Direct Connection”,可以覆盖 gfwlist 中的设置。如:



14,要测试是否配置成功,找刚才 hosts 列表中的网站试一下就知道了,比如 www.youtube.com。或者运行一下 ping -6 g.cn 测试能否 ping 通 g.cn 的 ipv6 地址(当然前提是 g.cn 的 ipv6 地址已经在 hosts 列表当中)。当然,最实在的方法就是登录 gmail 然后查看活动记录。



使用Facebook社交插件参与评论: