Chinaunix首页 | 论坛 | 博客
  • 博客访问: 228002
  • 博文数量: 57
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-14 09:03
个人简介

观自在菩萨,行深般若波罗蜜多时,照见五蕴皆空,渡一切苦厄。

文章分类
文章存档

2020年(2)

2019年(2)

2018年(3)

2017年(4)

2016年(17)

2015年(9)

2014年(16)

2013年(4)

我的朋友

分类: 嵌入式

2017-09-16 21:09:09

 下面以Windows XP系统为宿主系统(qemu的运行环境)。

以ubuntu为qemu的虚拟系统(在qemu内运行)。

由于ubuntu的权限问题,如果执行命令失败,请尝试使用sudo提升权限。

 

一、对宿主系统(Windows)安装TAP-Win32虚拟网卡,并加入-net参数运行qemu

* 安装OpenVPN

下载OpenVPN的Windows安装程序。

默认勾选TAP Virtual Ethernet Adapter。

安装结束后,Windows会出现一个新的虚拟网卡。

 

* 设置qemu外windows的虚拟网卡的IP

右键“网络邻居”->属性,打开“网络连接”

把新的TAP-Win32 Adapter V9网卡的名称改为my-tap。

右键->属性->Internet协议(TCP/IP)

双击后选择“使用下面的IP地址”

把IP地址和子网掩码分别改为:

192.168.200.10

255.255.255.0

其余留空,因为这里并不需要也没有DNS服务器,

而是要自己手动为网卡分配不同的IP。

上面就是为那张虚拟网卡配IP(不影响另一张真实网卡)。

系统托盘一般会出现一个新的“网络连接”图标,

因为还没连接上虚拟机,所以出现一个红色的叉(没有连接)。

 

* 用-net参数启动qemu虚拟机

假设我的硬盘镜像是ubuntu.bin,在命令提示符下执行:

>qemu.exe -L . -m 1024 -hda ubuntu.bin -localtime -net nic -net tap,ifname=my-tap

其中-net nic表示虚拟机(qemu)内的OS添加新的网卡。

如果不添加,ubuntu中键入ifconfig将看不到eth0(即第一张网卡)。

而-net tap,ifname=my-tap表示为虚拟机(qemu)外的系统(这里是Windows XP)指定网卡。

如果不添加,默认就是连真实网卡而非OpenVPN中自带的虚拟网卡。

my-tap是虚拟网卡的名称,可以用openvpn --show-adapters查看。

因为我用中文版的Windows XP会产生带空格的中文网卡名,

所以我把它改为英文my-tap(和重命名文件的方法一样)。

更多信息请google这个关键词“qemu openvpn”。

或者参考以下网址(日文):

如果系统启动成功,你会看到系统托盘的新网络图标提示连接上网络。

 

* 配置qemu内ubuntu的网卡IP和默认网关

为虚拟机内部设置一个不同的IP(假设为192.168.200.11)

如果不设置IP,ifconfig命令将不会得到IPv4的地址

打开终端(应用程序->附件->终端),键入命令如下:

$ sudo ifconfig eth0 192.168.200.11

这里eth0是指第一张网卡,可以用ifconfig查看。

然后,把虚拟机外部的host机IP(假设为192.168.200.10)设置为默认网关。

如果不设置网关,ping命令将出现Destination Host Unreachable错误。

键入指令如下:

$ sudo route add default gw 192.168.200.10 eth0

如果操作正常的话,你可以访问默认网关192.168.200.10

(即虚拟机外Windows的那个虚拟网卡TAP-Win32 Adapter V9)

尝试连接宿主系统的网卡:

$ ping 192.168.200.10

可以看到ping可以到达宿主机器。

 

* 关于网络设置的补充说明

通常使用192.168.*.*格式的IP。

因为192.168.0.0-192.168.255.255(192.168/16)属特殊IP地址段供本地使用。

只是这样的IP不可以直接用于互联网(这里没有问题)。

有些命令可以是这样的:

1. 添加默认网关时可以忽略最后的eth0。

route add default gw 192.168.200.10

2. 配置以太网广播地址和子网掩码(可以省略)。

ifconfig eth0 broadcast 255.255.255.255 netmask 255.255.255.0

 

* 恢复IP设置

正常情况下,只要重启qemu就可还原虚拟机内ubuntu的IP和网关设置。

如果想手动删除默认网关,可键入:(假设虚拟网卡以192.168.200.10为IP)

$ sudo route del default gw 192.168.200.10 eth0

如果想重新设置虚拟系统(例如qemu内的ubuntu)的对外IP,

直接执行ifconfig指定新的IP即可。

例如sudo ifconfig eth0 192.168.200.12。

 

* qemu可能会启动失败

qemu可能会在启动时挂掉(不知为何,可能是虚拟网卡的问题),重启再试。

 

二、让虚拟机内的ubuntu可以访问宿主Windows的共享文件。

* 设置windows的共享文件

我的电脑->工具->文件夹属性->查看

去掉“使用简单文件共享(推荐)前的勾。

然后创建或找一个需要共享的目录,

右键->属性->共享->共享此文件夹,

你可以在对话框中设置读写权限。

然后点“权限”设置用户名。

权限->添加->高级->立即查找。

如果你想添加新的Windows用户,可以这样:

我的电脑->右键->管理->本地用户和组->用户->右键->新用户。

然后重新查找用户名。

设置完后文件夹会出现一个手掌。

 

* 用虚拟机内的ubuntu访问windows的共享文件夹

按照(一)配好ubuntu的IP后。

系统菜单->位置->网络。

打开“Windows网络”->WORKGROUP。

你会看到宿主计算机的名称。

打开后(或者在打开共享目录后)提示输入用户名和密码。

输入宿主Windows的用户名和密码。

连接成功后,就可以看到Windows的文件了。

(ubuntu好像默认自带了samba的功能)

 

三、让虚拟机内的ubuntu可以访问宿主Windows的ftp。

* 安装FileZilla的Windows服务器端(Server版)

开始菜单中选择FileZilla Server Interface。

打开管理界面,主菜单->Edit->Users添加用户名和密码。

加入新的Shared folders(共享文件夹),指定读写权限。

* 在Windows命令提示符下测试ftp连接(21端口)

假设我的用户名是test,密码是test。

C:\Documents and Settings\Administrator>ftp localhost

提示输入用户名和密码(注意密码是没有回显的)

登陆成功的话会显示

230 Logged on

ftp>

然后输入ls可以查看目录。

* 用虚拟机内的ubuntu访问windows的ftp文件夹

按照(一)配好ubuntu的IP。

登陆ftp的方法之一是使用终端。

输入ftp命令(假设宿主的虚拟网卡IP是192.168.200.10)

$ ftp 192.168.200.10

其余操作和windows的操作相同。

另一种方法是

系统菜单->位置->连接到服务器

服务类型选择:FTP(需登录)

输入相应的信息后弹出对话框。

输入密码后,即可看到宿主系统ftp的文件。

四、在Windows上访问虚拟机内的ubuntu的ftp文件夹

* 安装ftp服务器vsftpd

$ sudo apt-get install vsftpd

* 启动vsftpd服务

重启ubuntu。

按照(一)加入-net参数和配好ubuntu的IP。

键入下面的命令启动服务

$ sudo service vsftpd start

* 在windows上用IE访问ubuntu的ftp文件夹(默认是根目录)。

首先测试一下连接(假设ubuntu的网卡IP是192.168.200.11)

> ping 192.168.200.11

然后在虚拟机中看看vsftpd监听哪个端口

$ sudo netstat -anp | grep vsftpd

可以看到它正在监听tcp的21端口。

(可以修改/etc/vsftpd.conf来更改端口)

然后打开IE。输入ftp://192.168.200.11/

输入用户名和密码。即可访问ubuntu的整个根目录。

(如果乱码,可以改为utf-8编码)

如果使用其它浏览器(如Chome和Firefox),可能打开的是/home对应的用户目录。

 

五、在Windows上用telnet远程登陆虚拟机内的ubuntu

* 安装telnetd服务器

$ sudo apt-get install telnetd

虽然网上说要用xinetd,而且要修改配置文件,

但我发现只安装telnetd也可以在启动时运行telnetd服务。

* 尝试在windows上用telnet远程登陆ubuntu

重新启动qemu。

按照(一)加入-net参数和配好ubuntu的IP。

在windows下测试连接(假设ubuntu的网卡IP已经手动设置为192.168.200.11)

> ping 192.168.200.11

然后用telnet 192.168.200.11登陆上ubuntu

> telnet 192.168.200.11

提示u中t输入用户名和密码(密码是无回显的)

登陆后显示最后登陆时间、Linux的版本号、ubuntu的版本号和欢迎。

最后出现提示符。

你可以像在ubuntu的终端那样输入Linux命令(有些输出可以带颜色)。

* 乱码问题

如果有乱码,可能是字符集的问题(ubuntu使用utf-8编码)。

你可以使用一些较高级的程序代替windows的telnet命令行。

例如PuTTY可以设置窗口的字符集为UTF-8。

* 可不可以在ubuntu上远程登陆自己呢?

我试过是可以的,不过需要小心,

因为telnet登陆后的提示符和登陆前是相同的。

很容易弄错(因为不知道现在是不是在远程登陆),

所以最好不要直接在ubuntu上telnet自己。

参考资料:

1. Tapの使い方

2. Quick HOWTO : Ch16 : Telnet, TFTP, and xinetd/zh

3. Ubuntu Telnet 服务开启

http://space.itpub.net/7735683/viewspace-487329


转载:

阅读(2440) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~