求助,关于从外网访问虚拟机

Kvm、VMware、Virtualbox、Xen、Qemu 等
回复
zoll3314
帖子: 8
注册时间: 2013-10-15 17:04
系统: winXP+debian7.0

求助,关于从外网访问虚拟机

#1

帖子 zoll3314 » 2013-10-15 17:10

自行搭建类似于虚拟主机的服务。宿主机debian7.0 ,kvm,虚拟机win2003。
目前桥接正常,虚拟机能正常访问外网。但是现在希望能从外网访问特定虚拟机。

举例:有IP地址A,B。希望能使用IP地址A访问虚拟主机A的80端口,使用IP地址B访问虚拟主机B的80端口。另已有IP地址X分配给了网桥/宿主机。

查过一些资料,建议使用宿主机转发,但是资料很含糊。没有说明具体方法,求教。

:em11 :em11
头像
lanjian9151
帖子: 403
注册时间: 2008-01-09 21:19
系统: Gentoo

Re: 求助,关于从外网访问虚拟机

#2

帖子 lanjian9151 » 2013-10-15 18:00

你都桥接了还用啥宿主机转发,直接在路由器里端口转发就行了。
zoll3314
帖子: 8
注册时间: 2013-10-15 17:04
系统: winXP+debian7.0

Re: 求助,关于从外网访问虚拟机

#3

帖子 zoll3314 » 2013-10-16 8:25

lanjian9151 写了:你都桥接了还用啥宿主机转发,直接在路由器里端口转发就行了。
路由器不在我手里啊~~ 我这是学校,不可能为我一个小小的研究室配端口转发。

不过我大概明白了,需要宿主机的iptable里设转发,但是没找到详细教程,怎么保证A到A,B到B呢。或者这样说我以前也尝试过,操作如下,为虚拟机A和B分别创建的虚拟网卡A和B,并且桥街道宿主机eth0上。并为两个虚拟网卡A和B分别绑定IP地址A和B。但是最后实际情况是不管IP包发向IP地址哪个,最后的结果都是虚拟机A和B都收到该IP包。是不是我的iptable里的设置还是有问题。
zoll3314
帖子: 8
注册时间: 2013-10-15 17:04
系统: winXP+debian7.0

Re: 求助,关于从外网访问虚拟机

#4

帖子 zoll3314 » 2013-10-16 8:39

实际的用途是由几个实验软件的服务器端,使用的80端口的,由于管理员不同,而且服务器端需要调试,为了不相互影响,所以需要逻辑上分割。
我觉得我有点钻牛角尖了,我更本其实不用设置这么复杂。假设有一IP包发向虚拟机B,虚拟机A就是收到该IP包,但是解析后辨识不是该机上应用使用的数据包,虚拟机A上的服务器端也不会相应。而虚拟机A上的服务器端会响应。
头像
lanjian9151
帖子: 403
注册时间: 2008-01-09 21:19
系统: Gentoo

Re: 求助,关于从外网访问虚拟机

#5

帖子 lanjian9151 » 2013-10-16 16:13

具体环境还是没有描述清楚。

照你所说,你的虚拟机是采用桥接模式进行网络通讯的,那么你的虚拟机跟宿主机必然是处在同一网段,你们学校的内网环境是插上网线就能自动分配到IP地址么?不用进行任何绑定?你的虚拟机可以分配到一个学校的内网IP?

你说有IP分配给了你的宿主机,那这台宿主机的IP是学校内网的私有IP还是公网的IP?按你的说法推断应该是学校内网的IP吧?通常来讲学校内网的IP不是插上网线随便一台机器就能获取到的,所以我不理解为什么你能正常使用桥接。

你标题里是提到外网访问内网主机服务的问题,这种情况必须要用到上层网络设备的端口转发,也就是说你绕不过学校的路由设备,因为外网IP的请求必须通过这些设备。
举例:有IP地址A,B。希望能使用IP地址A访问虚拟主机A的80端口,使用IP地址B访问虚拟主机B的80端口。
这个不是很明白,你这个IP地址A、B是什么IP地址?我的理解是这个A、B是源IP地址,比如你和你同学的电脑的不同的两个外网地址,当A用他的电脑访问这个服务时提供服务的虚拟机是A,B用他的电脑访问这个服务时提供服务的虚拟机是B。这个是可以通过iptables实现的,其实也就是端口转发,监听80端口,将源IP为A的请求转发给A虚拟机的80端口,源IP为B的请求转发给B虚拟机的80端口,但你目前要解决的是外网到内网的端口映射问题。

要想在接触不到路由器的情况下实现的话,我所能想到的就只有VPN了,比如你内网的机器跟外网的机器同时连到一台外网的VPN服务器,这样就行了。
回复