ProxmoxVE是一个集成了KVM、OpenVZ的开源虚拟化管理平台。基于Debian构建。Proxmox有简单易用的WEB控制面板。让用户可以在网页环境中轻松的建立和管理KVM以及OpenVZ构架的虚拟机。
本方法适用于online.net / oneprovider.com和hetzner.de的独立服务器,以及digitalocean.com的VPS服务器。
1:安装ProxmoxVE
ProxmoxVE有2种安装方式,一种是常见的从ISO引导安装,需要独立服务器提供IPMI远程界面及远程挂载ISO的功能,因为地域网络限制,不方便且速度较慢。另外一种方法是直接在Debian9系统中通过网络安装,通用性较强,且直接安装最新版本,推荐使用。
首先安装标准的Debian9(64位),一般系统模板中提供的Debian9即可。
为服务器IP地址添加/etc/hosts解析
ProxmoxVE需要主机名可通过/etc/hosts
解析,即需要为该主机名分配一个IPv4地址,同时确保未指定主机名的IPv6地址。
例如,服务器IP地址195.154.138.88
,我们为主机设定名称为pve
,那么文件应该如下所示:
127.0.0.1 localhost.localdomain localhost
195.154.138.88 pve
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
输入命令hostname --ip-address
,返回值应该是你的服务器IPv4地址。这一步不可跳过且必须正确配置,这是后续安装顺利进行的保证。
接着添加ProxmoxVE的软件源及密钥,并更新系统,出现选项,选择默认即可。
echo "deb http://download.proxmox.com/debian/pve stretch pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget http://download.proxmox.com/debian/proxmox-ve-release-5.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-5.x.gpg
apt update && apt dist-upgrade -y
安装ProxmoxVE。如果你的服务器没有邮件系统,在出现的选项里面选择local only
即可。
apt install proxmox-ve postfix open-iscsi -y
安装结束。
适用于online.net / oneprovider.com的ipv6安装说明
online.net提供IPv6地址是需要通过DHCP客户端获得,且官方给的教程安装,不适用于最新的ProxmoxVE环境,即使按照教程修改配置好,又会出现一个小时左右就断开连接的问题,所以我们另外使用odhcp6c来获得IPv6地址。
首先安装软件源,编辑/etc/apt/sources.list
添加以下内容:
#DHCP6 Client
deb http://httpredir.debian.org/debian experimental main
然后安装odhcp6c
apt-get update
apt-get install odhcp6c
通过ifconfig查看你的物理网卡的名称,例如eno1
通过online网页的服务器控制台得到IPv6地址信息:
IPv6:2001:123:456:789::1/64
DUID:00:03:00:01:3f:12:34:56:78:90
在/etc/network/interfaces
中添加以下内容
post-up odhcp6c -P 64 -c 00:03:00:01:3f:12:34:56:78:90 eno1 -d
post-up ip -6 a a 2001:123:456:789::1/64 dev eno1
重启服务器后即可获得IPv6地址。
2:配置网络
首先,配置IPv6网络,编辑/etc/modprobe.d/local.conf
,修改或者添加如下内容:
options ipv6 disable=0
编辑/etc/modules
,添加如下字符:
ipv6
开启IPv4,IPv6转发,编辑/etc/sysctl.conf
,添加以下内容到尾部:
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv6.conf.eno1.autoconf=0
net.ipv6.conf.eno1.accept_ra=2
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.proxy_ndp=1
net.ipv6.conf.all.proxy_ndp=1
其中红色部分修改为自己的网卡名:
net.ipv6.conf.eno1.autoconf=0
net.ipv6.conf.eno1.accept_ra=2
最后,编辑/etc/network/interfaces
,内容如下:
auto lo
iface lo inet loopback
iface lo inet6 loopback
auto eno1
iface eno1 inet static
address 195.154.138.88
netmask 255.255.255.0
gateway 195.154.138.1
iface eno1 inet6 static
address 2a01:4f8:200:1241::1
netmask 64
gateway fe80::1
#物理网卡配置一般不做改动,系统模板都是配置好的。
auto vmbr0 #为虚拟机新建一个虚拟网桥
iface vmbr0 inet static
address 10.10.10.1 #内网地址,虚拟机的网关
netmask 255.255.255.0
bridge-ports none
bridge-stp off
bridge-fd 0
iface vmbr0 inet6 static #为虚拟机提供IPv6桥接,与主机IPv6地址相同
address 2001:123:456:789::1
netmask 64
#转发IPv4流量到虚拟机,使虚拟机与外网联通。
post-up iptables -t nat -A POSTROUTING -s \'10.10.10.0/24\' -o eno1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s \'10.10.10.0/24\' -o eno1 -j MASQUERADE
#online服务器专用
post-up odhcp6c -P 64 -c 00:03:00:01:3f:12:34:56:78:90 eno1 -d
post-up ip -6 a a 2001:123:456:789::1/64 dev eno1
重启服务器,登录https://195.154.138.88:8006
网页端进行配置。
3:配置虚拟机
ProxmoxVE可以创建KVM和OpenVZ类型虚拟机。
OpenVZ类型虚拟机是有官方提供的系统模板,可以直接下载使用,KVM需要自己上传ISO镜像进行系统安装。
CPU,内存,硬盘大小等可根据个人需求选择调配。网路部分配置如下
OpenVZ虚拟机的网卡选择桥接在vmbr0上,IPv4地址选择内网地址段,IPv6地址选择对应物理网卡的地址段。DNS可以填写8.8.8.8或者2001:4860:4860::8888.配置完成后,启动虚拟机就可以连接到外网,但是这时只能访问IPv4地址,IPv6这个时候还是不通的,需要在主机输入以下命令开启:
ip -f inet6 neigh add proxy 2001:123:456:789::100 dev eno1
ip -f inet6 route add 2001:123:456:789::100 dev vmbr0
尝试ping google.com
以及ping6 ipv6.google.com
来检验网络是否通畅。
因为IPv6地址没有内网与外网区分,外网是可以直接通过IPv6地址访问虚拟机,所以也可只配置IPv6信息,不配置IPv4信息。
如果有多台虚拟机,可以为每台虚拟机配置一个IPv6地址。理论上硬件允许的话你可以开无限个IPv6虚拟机。
另一方面,IPv4是经过内网转发的,所以现在只可以访问外网,而外网却无法访问虚拟机。所以我们需要配置端口转发,将外部的访问转发到虚拟机。一般的做法是通过iptables进行转发。
例如在主机中输入命令
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10022 -j DNAT --to-destination 10.10.10.100:22
这样,访问服务器10022端口就会自动转发到虚拟机10.10.10.100的22端口上,实现了外网通过ssh登陆虚拟机的目的。但是,这样做有一个问题,ProxmoxVE自带防火墙,iptables开放22端口,相当于在防火墙上面开了一个洞,而且这个洞不受防火墙的控制,如果需要做安全防护,你还需要单独配置iptables,不是很方便。于是想到一个折中办法,用brook做端口转发,同时利用ProxmoxVE的防火墙进行统一控制。
首先获取brook,项目地址https://github.com/txthinking/brook
在主机中,输入命令,获取最新版brook
ver=$(wget -qO- "https://github.com/txthinking/brook/tags"| grep "/txthinking/brook/releases/tag/"| head -n 1| awk -F "/tag/" \'{print $2}\'| sed \'s/\">//\') && echo ${brook_ver}
wget -O /root/brook https://github.com/txthinking/brook/releases/download/$ver/brook
chmod x /root/brook
输入命令,启动端口转发
nohup /root/brook relay -l :10022 -r 10.10.10.100:22
利用命令ps -ef|grep brook
来查看转发是否生效,同时在ProxmoxVE防火墙中开放或者关闭10022端口来控制外网对虚拟机的访问。
KVM虚拟机的配置是类似的,创建时选择桥接vmbr0,不论安装的是Linux系统还是windows系统,都需要手动输入IPv4和IPv地址,同时在主机配置IPv6信息和添加端口转发。
这样,一个同时开启了NAT和IPv6的虚拟机就创建好了,但是,还有个问题,IPv6的配置和端口转发是会随着主机重启而失效,我们需要在主机上启动开机自启服务,保证每次开机的时候,虚拟机器都能正常工作。
首先,需要在debian9中开启开机自启服务,创建/etc/rc.local
,填写:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
运行命令:
chmod x /etc/rc.local
赋予执行权限
systemctl start rc-local
启动服务
这样,我们只需要将需要执行的命令写在/etc/rc.local
的exit 0
前面,就可以在开机后自动执行。
单IP的服务器,可以通过以上方式创建虚拟机。拥有多IP的服务器,需要把物理网卡设置成手动模式iface eno1 inet manual
,然后新建一个网桥vmbr1,同时写入物理网卡信息:
独立IP虚拟机配置网卡时选择桥接到vmbr1,并填写独立IP地址,并安照要求绑定MAC地址。不要忘记将所有填写eno1的地方改为vmbr1。
更改ProxmoxVE的更新源
默认的更新源是订阅用户的更新源,这个是收费的,免费用户更新是失败的,我们需要更改至免费源。
编辑/etc/apt/sources.list
,添加:
# PVE pve-no-subscription repository provided by proxmox.com,
# NOT recommended for production use
deb http://download.proxmox.com/debian/pve stretch pve-no-subscription
同时在/etc/apt/sources.list.d/pve-enterprise.list
中注释掉
#deb https://enterprise.proxmox.com/debian/pve stretch pve-enterprise
再次更新,就不会报错。
apt-get update
apt-get dist-upgrade
解决KVM关闭失败的问题
apt-get install acpid
至此,ProxmoxVE的虚拟机环境就配置完成,你可以按照自己的需要建立各类虚拟机,开展各种项目。