当前位置: 技术问答>linux和unix
XEN上的虚拟机在没有IP地址的情况下如何进入shell
来源: 互联网 发布时间:2016-06-02
本文导语: 具体是这样的,在一台服务器上安装XEN系统,在此虚拟机池中再建立若干虚拟机,如DEBIAN系统,现在我可以使用思杰公司提供的XenCenter控制所建立的虚拟机,但如果没有此软件的情况下呢?因为不知道怎么样在XEN系统下...
具体是这样的,在一台服务器上安装XEN系统,在此虚拟机池中再建立若干虚拟机,如DEBIAN系统,现在我可以使用思杰公司提供的XenCenter控制所建立的虚拟机,但如果没有此软件的情况下呢?因为不知道怎么样在XEN系统下给虚拟机设置IP,所以不能进行ssh登陆,是否XEN系统有其他命令可实现,设置虚拟机IP的作用。
|
Xen网络
* 桥接网络
* 路由网络
* 包含NAT的虚拟局域网
桥接网络
Time for Action—Using Bridged Networking
1、xen里面缺省的网络设置是桥接,这可以通过查看Xen在配置文件(/etc/xen/xend-config.sxp)来进一步确认,它应该有非注释的下面两行。
(network-script network-bridge)
(vif-script vif-bridge)
2、为domU创建一个新的配置文件,你可以使用在之前章节创建的任何一个镜像或你自己拥有的其他镜像。根据你选择的镜像替换文件中的配置:
kernel = "/boot/vmlinuz-2.6.16.38-xenU"
memory = 32
name = "bridged_domU"
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'bridge=xenbr0' ]
root = "/dev/hda1 ro"
3、用xm启动domU
xm create /root/xenimages/ttylinux_domU.cfg –c
4、检查以确定domU已启动并正常运行
xm list
下面是启动Xen服务和xend时发生的事件队列:
1、执行/etc/xen/scripts/network-bridge脚本
2、这将创建一个叫xenbr0的新网桥
3、从物理网卡eth0复制MAC和IP地址
4、停止物理网卡eth0
5、创建一对新的已连接的虚拟网络接口--veth0和vif0.0
6、将之前复制的MAC和IP地址指派到veth0
7、重命名物理网卡eth0为peth0
8、重命名虚拟网卡veth0为eth0
9、连接peth0和vif0.0到xenbr0
10、启动网桥xenbr0和网卡peth0、eth0、vif0.0
使用brctl show命令可以查看连接到各个网桥上的网络接口情况
路由网络
Time for Action—Using Routed Networking
1、因为我们需要修改xend的配置文件,所以我们首先要停止xend
service xend stop
2、修改xen配置文件/etc/xen/xend-config.sxp使我们能够使用路由网络。注释关联桥接网络的两行并取消注释关联路由网络的两行。如果在配置文件中没发现配置路由网络的行,那么加上他们:
(network-script network-route)
(vif-script vif-route)
3、重新启动xend让它用新的配置起动
xend start
4、修改我们之前使用的domU的配置文件使它能使用路由网络
kernel = "/boot/vmlinuz-2.6.16.38-xenU"
memory = 32
name = "routed_domU"
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'ip=192.168.1.165' ]
root = "/dev/hda1 ro"
5、起动domU
xm create /root/xen-images/ttylinux_domU.cfg -c
6、检查domU已经起动并正常运行
xm list
下面是xend用路由网络配置起动的事件队列
1、允许dom0进行IP转发
2、当domU起动的时候,xen从eth0复制IP地址到虚拟网络接口vif.0。虚拟接口的ID是自动分配给xen起动的每个客户域的。被分配的id在单个会话里面永远不会被重用,因此如果你停止并重启一个域,它将重新分配到一个新的ID。
3、启动虚拟接口vif.0。
4、为domU的配置文件中指向虚拟接口vif.0分配的IP地址增加静态路由
Virtual Local Network with Network Address Translation
Time for Action—Using VLAN with NAT
我们将在192.168.2.0上创建一个虚拟网络并且此网络保护一个web服务器和一个数据库,所有在此网络的虚拟机的IP地址都将在此范围内。我们将在此网络创建两个虚拟机并从一个公网IP地址去访问他们。端口将被dom0转发到各个虚拟机上。
1、第一个网络接口被dom0使用了,我们需要创建一个新的网络接口用于我们的VLAN。这个接口使用dummy网络去掉创建并命名为dummy0。创建一个新的名为/etc/sysconfig/network-scripts/ifcfg-dummy0的文件:
A DEVICE=dummy0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
IPV6INIT=no
PEERDNS=yes
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=x.x.x.x
ARP=yes
2、分配一个IP地址到这个接口并把它加到网络接口文件-/etc/network/interfaces:
auto dummy0
iface dummy0 inet static
address 192.168.2.1
netmask 255.255.255.0
3、修改xend配置(/etc/xen/xend-config.sxp)增加下面的行,使我们在新的dummy网络接口dummy0上监听桥接:
(network-script 'network-bridge netdev=dummy0')
4、确定IP转发被允许
echo "1" > /proc/sys/net/ipv4/ip_forward
5、重启sysctl使修改被live kernel获取
/sbin/sysctl -p
6、在我们的VLAN上创建第一个虚拟机。修改它的配置文件使它看起来像下面这样:
# assume this is the webserver vm
kernel = "/boot/vmlinuz-2.6.16.38-xenU"
memory = 32
name = "vlan_domU_1"
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'ip=192.168.2.2' ]
root = "/dev/hda1 ro"
gateway="192.168.2.1"
7、在我们的VLAN上创建第二个虚拟机,修改他的配置文件使它看起来像下面这样:
# assume this is the mysql vm
kernel = "/boot/vmlinuz-2.6.16.38-xenU"
memory = 32
name = "vlan_domU_2"
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'ip=192.168.2.3' ]
root = "/dev/hda1 ro"
gateway="192.168.2.1"
8、通知dom0必须为特定的端口转发请求到这个VLAN。为此我们需要首先在dom0允许NAT:
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE
9、现在我们可以配置规则转发端口到正确的虚拟机,首先我们转发80端口:
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.2.2:80
10、然后转发mysql的端口3306:
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.2.3:3306
重启xend然后创建虚拟机,现在我们已经有一个简单的网络配置使dom0转发基于端口的请求到VLAN里面的一个客户域。
* 桥接网络
* 路由网络
* 包含NAT的虚拟局域网
桥接网络
Time for Action—Using Bridged Networking
1、xen里面缺省的网络设置是桥接,这可以通过查看Xen在配置文件(/etc/xen/xend-config.sxp)来进一步确认,它应该有非注释的下面两行。
(network-script network-bridge)
(vif-script vif-bridge)
2、为domU创建一个新的配置文件,你可以使用在之前章节创建的任何一个镜像或你自己拥有的其他镜像。根据你选择的镜像替换文件中的配置:
kernel = "/boot/vmlinuz-2.6.16.38-xenU"
memory = 32
name = "bridged_domU"
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'bridge=xenbr0' ]
root = "/dev/hda1 ro"
3、用xm启动domU
xm create /root/xenimages/ttylinux_domU.cfg –c
4、检查以确定domU已启动并正常运行
xm list
下面是启动Xen服务和xend时发生的事件队列:
1、执行/etc/xen/scripts/network-bridge脚本
2、这将创建一个叫xenbr0的新网桥
3、从物理网卡eth0复制MAC和IP地址
4、停止物理网卡eth0
5、创建一对新的已连接的虚拟网络接口--veth0和vif0.0
6、将之前复制的MAC和IP地址指派到veth0
7、重命名物理网卡eth0为peth0
8、重命名虚拟网卡veth0为eth0
9、连接peth0和vif0.0到xenbr0
10、启动网桥xenbr0和网卡peth0、eth0、vif0.0
使用brctl show命令可以查看连接到各个网桥上的网络接口情况
路由网络
Time for Action—Using Routed Networking
1、因为我们需要修改xend的配置文件,所以我们首先要停止xend
service xend stop
2、修改xen配置文件/etc/xen/xend-config.sxp使我们能够使用路由网络。注释关联桥接网络的两行并取消注释关联路由网络的两行。如果在配置文件中没发现配置路由网络的行,那么加上他们:
(network-script network-route)
(vif-script vif-route)
3、重新启动xend让它用新的配置起动
xend start
4、修改我们之前使用的domU的配置文件使它能使用路由网络
kernel = "/boot/vmlinuz-2.6.16.38-xenU"
memory = 32
name = "routed_domU"
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'ip=192.168.1.165' ]
root = "/dev/hda1 ro"
5、起动domU
xm create /root/xen-images/ttylinux_domU.cfg -c
6、检查domU已经起动并正常运行
xm list
下面是xend用路由网络配置起动的事件队列
1、允许dom0进行IP转发
2、当domU起动的时候,xen从eth0复制IP地址到虚拟网络接口vif.0。虚拟接口的ID是自动分配给xen起动的每个客户域的。被分配的id在单个会话里面永远不会被重用,因此如果你停止并重启一个域,它将重新分配到一个新的ID。
3、启动虚拟接口vif.0。
4、为domU的配置文件中指向虚拟接口vif.0分配的IP地址增加静态路由
Virtual Local Network with Network Address Translation
Time for Action—Using VLAN with NAT
我们将在192.168.2.0上创建一个虚拟网络并且此网络保护一个web服务器和一个数据库,所有在此网络的虚拟机的IP地址都将在此范围内。我们将在此网络创建两个虚拟机并从一个公网IP地址去访问他们。端口将被dom0转发到各个虚拟机上。
1、第一个网络接口被dom0使用了,我们需要创建一个新的网络接口用于我们的VLAN。这个接口使用dummy网络去掉创建并命名为dummy0。创建一个新的名为/etc/sysconfig/network-scripts/ifcfg-dummy0的文件:
A DEVICE=dummy0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
IPV6INIT=no
PEERDNS=yes
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=x.x.x.x
ARP=yes
2、分配一个IP地址到这个接口并把它加到网络接口文件-/etc/network/interfaces:
auto dummy0
iface dummy0 inet static
address 192.168.2.1
netmask 255.255.255.0
3、修改xend配置(/etc/xen/xend-config.sxp)增加下面的行,使我们在新的dummy网络接口dummy0上监听桥接:
(network-script 'network-bridge netdev=dummy0')
4、确定IP转发被允许
echo "1" > /proc/sys/net/ipv4/ip_forward
5、重启sysctl使修改被live kernel获取
/sbin/sysctl -p
6、在我们的VLAN上创建第一个虚拟机。修改它的配置文件使它看起来像下面这样:
# assume this is the webserver vm
kernel = "/boot/vmlinuz-2.6.16.38-xenU"
memory = 32
name = "vlan_domU_1"
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'ip=192.168.2.2' ]
root = "/dev/hda1 ro"
gateway="192.168.2.1"
7、在我们的VLAN上创建第二个虚拟机,修改他的配置文件使它看起来像下面这样:
# assume this is the mysql vm
kernel = "/boot/vmlinuz-2.6.16.38-xenU"
memory = 32
name = "vlan_domU_2"
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'ip=192.168.2.3' ]
root = "/dev/hda1 ro"
gateway="192.168.2.1"
8、通知dom0必须为特定的端口转发请求到这个VLAN。为此我们需要首先在dom0允许NAT:
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE
9、现在我们可以配置规则转发端口到正确的虚拟机,首先我们转发80端口:
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.2.2:80
10、然后转发mysql的端口3306:
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.2.3:3306
重启xend然后创建虚拟机,现在我们已经有一个简单的网络配置使dom0转发基于端口的请求到VLAN里面的一个客户域。