如何在Xen客户端上启用网络Hetzner的DS服务器(Debian Etch)
本教程将介绍如何在Hetzner的DS服务器上的Xen guest虚拟机(domU)中启用网络 。 使用DS服务器,您可以获得八个附加IP(或更多)的子网 - 通常该子网不同于服务器主IP的子网。 问题是这些附加的IP被绑定到主机系统的MAC地址(dom0) - 如果Hetzner的路由器来自一个未知的MAC地址,它将转发IP数据包。 这意味着我们不能使用Xen的桥接模式,但必须切换到Xen的路由模式,其中主机系统(dom0)充当guest虚拟机的网关。
我不会保证这将为您工作!
1初步说明
我已经在Debian Etch Xen服务器上测试了这个,现有的Xen客户端,我不得不从桥接模式切换到路由模式。 我没有在Debian Lenny上测试过这个,但是我猜并没有太大的不同。
我假设您根据本教程在DS服务器(运行Debian Etch)上设置Xen: Debian Etch和Xen从Debian存储库 。
我在服务器vm.example.com
上有一个现有的Xen guest虚拟机。 现在我需要配置路由模式。
- DS服务器的IP(dom0):
88.198.70.47
- 网关:
88.198.70.33
- 网络掩码:
255.255.255.224
- 附加子网:
78.47.159.32/255.255.255.240
(可用IP地址:78.47.159.33
-78.47.159.46
) - 将从用于
vm.example.com
(domU)的子网中的IP:78.47.159.44
2现有网络配置
dom0:
在主机系统上,网络配置目前看起来如下:
cat /etc/network/interfaces
### Hetzner Online AG - installimage
# Loopback device:
auto lo
iface lo inet loopback
# device: eth0
auto eth0
iface eth0 inet static
address 88.198.70.47
broadcast 88.198.70.63
netmask 255.255.255.224
gateway 88.198.70.33
# default route to access subnet
up route add -net 88.198.70.32 netmask 255.255.255.224 gw 88.198.70.33 eth0
在客户端,网络配置如下:
domU:
cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 78.47.159.44
gateway 78.47.159.33
netmask 255.255.255.240
# post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
up route add -net 78.47.159.32 netmask 255.255.255.240 gw 78.47.159.33 eth0
在我们继续之前,请确保ethtool
包安装在guest虚拟机上:
apt-get install ethtool
3配置主机系统(dom0)
dom0:
首先备份/ etc / network / interfaces
:
cd /etc/network
cp interfaces interfaces.old
然后打开/ etc / network / interfaces
,看看如下:
vi /etc/network/interfaces
### Hetzner Online AG - installimage # Loopback device: auto lo iface lo inet loopback # device: eth0 auto eth0 iface eth0 inet static address 88.198.70.47 netmask 255.255.255.255 gateway 88.198.70.33 pointopoint 88.198.70.33 |
删除广播
和上线路由加
入网
线很重要。 网络掩码
必须更改为255.255.255.255
,我们添加一个与网关相同IP的点对点
线路(是的,它是pintopoint
,而不是点对点!)。
接下来,我们必须修改文件/etc/xen/xend-config.sxp
和/etc/xen/scripts/vif-common.sh
,以便我们先创建这两个文件的备份副本:
cd /etc/xen
cp xend-config.sxp xend-config.sxp.old
cd scripts
cp vif-common.sh vif-common.sh.old
现在打开/etc/xen/xend-config.sxp
并注释掉(网络脚本网桥)
和(vif-script vif-bridge)
行,并添加(网络脚本网络路由)
和(vif-script vif -route)
代替:
vi /etc/xen/xend-config.sxp
[...] #(network-script network-bridge) #(vif-script vif-bridge) (network-script network-route) (vif-script vif-route) [...] |
打开/etc/sysctl.conf
并确保你有以下行:
vi /etc/sysctl.conf
[...] net.ipv4.conf.all.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 net.ipv4.conf.default.proxy_arp=1 [...] |
跑
sysctl -p
阅读新配置。
打开/etc/xen/scripts/vif-common.sh
并修改函数ip_of()
:
vi /etc/xen/scripts/vif-common.sh
注释出ip addr show“$ 1”|
awk“/^.*inet.*$1\$/{print \ $ 2}”|
sed -n'1 s,/。* ,, p'line
并添加ip -4 -o addr show primary dev $ 1 |
awk'$ 3 ==“inet”{print $ 4;
exit}'|
sed的#/。* ##'
代替:
[...] ## # ip_of interface # # Print the IP address currently in use at the given interface, or nothing if # the interface is not up. # function ip_of() { #ip addr show "$1" | awk "/^.*inet.*$1\$/{print \$2}" | sed -n '1 s,/.*,,p' ip -4 -o addr show primary dev $1 | awk '$3 == "inet" {print $4; exit}' | sed 's#/.*##' } [...] |
然后重新启动系统:
reboot
4配置访客系统
dom0:
重新启动后,请启动客户系统,例如:
xm create /etc/xen/vm.example.com.cfg
然后连接到其控制台:
xm console vm.example.com
domU:
现在在客系统中,备份/ etc / network / interfaces
...的备份
cd /etc/network
cp interfaces interfaces.old
...并编辑/ etc / network / interfaces
,使其看起来如下:
vi /etc/network/interfaces
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 78.47.159.44 gateway 88.198.70.47 netmask 255.255.255.255 pointopoint 88.198.70.47 post-up ethtool -K eth0 tx off |
地址
行包含客人的IP; 网关
线必须包含主机系统的IP地址(dom0)( 88.198.70.47
),而不是主机系统的网关( 88.198.70.33
)! 网络掩码
必须为255.255.255.255
。 重点
线路必须再次包含主机系统的IP地址(dom0)( 88.198.70.47
)(是的,它是pintopoint
,而不是点对点!)。
而已! 现在我们可以从主机系统重新启动客人:
dom0:
xm reboot vm.example.com
之后,您应该能够连接到访客并ping通,您还应该能够从访客内部ping其他主机。
5链接
- Xen: http : //www.xensource.com/xen/
- Hetzner的DS服务器: http : //www.hetzner.de/en/hosting/produktmatrix/rootserver-produktmatrix-ds/