你的KVM小鸡除了能够吃灰以外,还能拿来生小鸡!今天给各位带锅们介绍一下这个玩法,流程很简单,稍微有点Linux基础都应该可以看懂。。 你可曾知道,你曾经买过的某些Xen/OpenVZ小鸡,可能是在KVM里面生出来的? 先简单确定一下你的VPS是否支持此玩法: 回显如下,说明你可以继续往下看这篇文章: 更新系统/安装依赖包: 这里有一个包应该和xen-hypervisor-4.8-amd64是等效的,但我不能完全确定:xen-system-amd64 更新Grub: 重启VPS使其加载Xen的内核: 机器没爆炸还能登录上来的话,你现在可以检查Xen状态: 有类似如下回显说明正常: 编辑Xen配置文件: 确保在这个配置文件内,如下两行是这样的(4.8版本的Xen默认这两行就是这样): 然后取消这两行的注释: 重启Xend: 找到自己小鸡的网关IP: 例如我的: 同时找到自己小鸡的子网掩码: 例如我的: 现在编辑网卡配置文件: 我的默认是使用的DHCP: 改桥接以及配置NAT(第一套方案): 这套方案是桥接/NAT都能使用,如果你的小鸡有多个独立IP,那么待会创建小鸡的时候把网卡桥到xenbr0上面,如果小鸡只有一个独立IP,那么就桥到xenbr1上面用NAT。当然有些小鸡改桥接可能一重启网卡就会挂,再加上一般的VPS也没有多IP,那么你可以使用下面这套方案。 纯NAT(第二套方案): 当然我这边还是使用的第一套方案,配置好了之后现在重启网络服务: 我的建议是既然改了Xen配置又改了网卡配置,用systemd去重启这些服务并不妥当,很有可能会报错,干脆再重启一遍VPS: 上来之后检查网桥状态: 回显如下表示网桥正常: 同时查看网卡信息,第一套方案的网卡信息应该是这样的: 而第二套方案的网卡信息应该是: 现在我们需要创建虚拟机镜像,这边我以Debian9为例,使用的网络模式是NAT(第一套方案): 在镜像创建过程中,你将可以看到类似这样的回显: 一旦镜像创建成功,你将得到该镜像的ROOT密码,这个要自己保存好: 现在列出所有虚拟机镜像: 你将看到之前创建镜像所生成的cfg文件: 使用cfg文件启动虚拟机: 如果没有任何报错,那么虚拟机应该已经启动成功,使用下面的命令检查(恭喜你,撒花): 回显如下: 此时我们就可以通过控制台进入虚拟机了: 在控制台内,我们需要更改SSH的配置以允许ROOT用户登录: 将 改为: 重启SSH: 按键盘组合键Ctrl+]退出Console,回到母鸡(VPS)内进行端口转发,将小鸡的22端口转发到母鸡(VPS)的23333端口: 现在使用母鸡(VPS)的IP:23333即可登录到这台小鸡内,这里上一张小小鸡的简单测评,毕竟是虚拟化里面再进行虚拟化,性能损失的比较严重: Xen更多常用的管理命令: 删除镜像,有多种方法,如果是使用本文的方法创建的镜像,那么是直接删除目录,如果是通过LVM逻辑卷创建的,指定对应的VG: 额外说一下,如果你和我一样是在Linode内玩这种骚操作,你需要先将Linode的Network Helper给关闭,否则网卡改了也是白改,重启会自动给你还原:lscpu|grepVirt
Virtualizationtype:full
apt-y update
apt-y dist-upgrade
apt-y install xen-hypervisor-4.8-amd64 xen-tools bridge-utils net-toolsdpkg-divert--divert/etc/grub.d/08_linux_xen--rename/etc/grub.d/20_linux_xen
update-grubreboot
xl info
host:li1609-54release:4.9.0-9-amd64
version:#1 SMP Debian 4.9.168-1+deb9u3 (2019-06-16)machine:x86_64
nr_cpus:1max_cpu_id:0nr_nodes:1cores_per_socket:1threads_per_core:1cpu_mhz:2300hw_caps:078bfbff:f7fa3203:2c100800:00000121:00000001:001c0fbb:00000000:00000000virt_caps:total_memory:1023free_memory:63sharing_freed_memory:0sharing_used_memory:0outstanding_claims:0free_cpus:0xen_major:4xen_minor:8xen_extra:.5xen_version:4.8.5xen_caps:xen-3.0-x86_64 xen-3.0-x86_32p
xen_scheduler:credit
xen_pagesize:4096platform_params:virt_start=0xffff800000000000xen_changeset:xen_commandline:placeholder
cc_compiler:gcc(Debian6.3.0-18+deb9u1)6.3.020170516cc_compile_by:ijackson
cc_compile_domain:chiark.greenend.org.uk
cc_compile_date:FriJan1118:02:57UTC2019build_id:9a71c39470d087c0c9fa0d33c04d985ea08aaa04xend_config_format:4nano/etc/xen/xend-config.sxp
# (network-script network-bridge)(vif-script vif-bridge)
(network-script network-nat)(vif-script vif-nat)
systemctl restart xend
netstat-r-n
KernelIP routing tableDestinationGatewayGenmaskFlagsMSSWindowirttIface0.0.0.0139.162.125.10.0.0.0UG000eth0139.162.125.00.0.0.0255.255.255.0U000eth0
ifconfig
eth0:flags=4163
nano/etc/network/interfaces
allow-hotplug eth0
iface eth0 inet dhcpallow-hotplug eth0
iface eth0 inet manualautoxenbr0
iface xenbr0 inetstaticaddress139.162.125.54netmask255.255.255.0gateway139.162.125.1bridge_ports eth0autoxenbr1
iface xenbr1 inetstaticaddress192.168.0.1netmask255.255.255.0bridge_ports none
bridge_stp off
bridge_fd0post-up echo1>/proc/sys/net/ipv4/ip_forward
post-up iptables-t nat-A POSTROUTING-s'192.168.0.0/24'-o xenbr0-j MASQUERADE
post-down iptables-t nat-D POSTROUTING-s'192.168.0.0/24'-o xenbr0-j MASQUERADEallow-hotplug eth0
iface eth0 inetstaticaddress139.162.125.54netmask255.255.255.0gateway139.162.125.1autoxenbr0
iface xenbr0 inetstaticaddress192.168.0.1netmask255.255.255.0bridge_ports none
bridge_stp off
bridge_fd0post-up echo1>/proc/sys/net/ipv4/ip_forward
post-up iptables-t nat-A POSTROUTING-s'192.168.0.0/24'-o eth0-j MASQUERADE
post-down iptables-t nat-D POSTROUTING-s'192.168.0.0/24'-o eth0-j MASQUERADEsystemctl restart networking.service
reboot
brctl show
bridge name bridge id STP enabled interfaces
xenbr08000.005056001a72noens18
xenbr18000.000000000000noroot@localhost:/etc/network# ifconfigeth0:flags=4163
eth0:flags=4163
xen-create-image--hostname=imlala-test--vcpus=1--memory=512mb--size=5g--dir=/opt/images \--bridge=xenbr1--ip=192.168.0.2--netmask=255.255.255.0--gateway=192.168.0.1\--pygrub--dist=stretch
GeneralInformation--------------------Hostname:imlala-testDistribution:stretchMirror:http://httpredir.debian.org/debianPartitions:swap512M(swap)/5g(ext4)Imagetype:sparseMemorysize:1024mbBootloader:pygrubNetworkingInformation----------------------IPAddress1:192.168.0.2[MAC:00:16:3E:6D:7A:AE]Netmask:255.255.255.0Gateway:192.168.0.1
InstallationSummary---------------------Hostname:imlala-testDistribution:stretch
MACAddress:00:16:3E:6D:7A:AE
IPAddress(es):192.168.0.2SSHFingerprint:SHA256:0noXFqcSFuzp4JC6/oxAnfJVMhQ9RGRXM/QMsBc5Lfw(DSA)SSHFingerprint:SHA256:c92Vgs2rEaBCSAPNXMat4yDfpN9bvq2XLmahI3aq/bM(ECDSA)SSHFingerprint:SHA256:JIUiqFGT8TIzhLpYOVRHUxJn9N6lCd9bMBejFlQZcpo(ED25519)SSHFingerprint:SHA256:JbrrjPz5Ih+yF6KKcROilWGwbxL7gt4YsmNbpkWl0pk(RSA)RootPassword:www.lala.imxen-list-images
Name:imlala-testMemory:512MB
IP:192.168.0.2Config:/etc/xen/imlala-test.cfgxl create/etc/xen/imlala-test.cfg
xl list
NameIDMemVCPUsStateTime(s)Domain-004901r-----220.1imlala-test15121------2.0
xl console imlala-test
nano/etc/ssh/sshd_config
#PermitRootLogin prohibit-password#PasswordAuthentication yes
PermitRootLoginyesPasswordAuthenticationyes
systemctl restart sshd
iptables-t nat-A PREROUTING-p tcp-m tcp--dport23333-j DNAT--to-destination192.168.0.2:22
xl shutdown imlala-test
xl destroy imlala-test
xl reboot imlala-testxen-delete-image--hostname=imlala-test--dir=/opt/images
xen-delete-image--hostname=imlala-test--lvm=vg_imlala
最后一次更新于2022-03-25


