PVE安装与配置
系统安装
使用镜像引导启动,选择Install Proxmox VE
,开始运行安装程序。
进入用户许可页面。选择同意EULA许可。下一个页面是磁盘选择页面。选择系统安装的目标磁盘。然后使用Options选项修改具体分配。
-
hdsize 定义目标硬盘的容量大小,通过设置这个参数,你可以配置硬盘预留部分空间给他用。建议不要预留空间,完整使用目标硬盘空间。
-
swapsize 定义swap逻辑卷的容量大小,默认和服务器物理内存容量大小一致,最小值为4GB,最大值为8GB,最大值不能大过
hdsize/8
。注意,如设置为0,将不会创建swap逻辑卷。 -
maxroot 定义root逻辑卷的容量大小,最大值限制为
hdsize/4
。root逻辑卷主要用于保存ISO操作系统镜像。 -
minfree 定义pve卷组容量中除了swap、root以及data逻辑卷容量之外剩余的可用容量大小,也就是说minfree大小可以按照下面方式来计算
minfree = pve - swapsize - rootsize - datasize
-
maxvz 定义data逻辑卷的容量大小,data逻辑卷主要用于保存虚拟机文件,虚拟机文件容量大小不能超过maxvz。
maxvz实际大小可以这样计算:datasize = hdsize - rootsize - swapsize - minfree
下一步输入正确的主机名,密码等信息就可以开始安装系统了。安装完成后系统会自动重启。pve安装过程中需要注意的信息不多。主要是磁盘分配和主机名比较重要。因为磁盘分配后期不能修改。主机名后期修改起来非常麻烦。
基础网络配置
vi /etc/network/interfaces
网络取决于具体配置,应该根据具体实际情况配置。
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet static
address 10.0.0.23/24
gateway 10.0.0.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
auto vmbr1
iface vmbr1 inet static
address 10.0.0.24/24
bridge-ports none
bridge-stp off
bridge-fd 0
系统配置
以下是常见的配置,需要按需添加。
cat << EOF >> /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.core.default_qdisc=fq
net.ipv4.ip_forward = 1
net.ipv4.tcp_congestion_control=bbr
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
kernel.sysrq = 1
EOF
sysctl -p
隐藏PVE登录弹窗
社区版PVE登陆以后会有一个弹窗。执行以下代码可以去除那个弹窗。
注意:pveproxy
更新以后还是需要重新执行以下代码。
cp /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak
sed -i 's/res === null || res === undefined || !res ||/false \&\&/' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
sed -i "s/vm.set('subscriptionActive', subscription);/vm.set('subscriptionActive', true);/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
systemctl restart pveproxy
配置软件源
社区版PVE需要去除企业源,如果不去除这些企业源,apt会运行失败。
echo "deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription" >> /etc/apt/sources.list
rm /etc/apt/sources.list.d/pve-install-repo.list
rm /etc/apt/sources.list.d/pve-enterprise.list
apt update
安装常用程序
按需安装,保持系统精简很重要。
apt install -y -qq apt-transport-https ca-certificates curl tmux tar chrony git rsync telnet tree net-tools python3-pip python3-dev unzip lrzsz sudo cpufrequtils vim zsh isc-dhcp-server
配置ACME证书
PVE
无论从公网访问还是内网访问,内置的自签名SSL证书不能抵御中间人攻击。可以使用acme自动申请证书,或者配置一个反向代理。通过反向代理上的SSL访问 web 界面。下文介绍了ACME申请SSL证书并配置到Web界面的流程。
这里使用cloudflare
提供的DNS方式
获取域名证书。
在你的浏览器打开链接 https://你的服务器IP:8006/。使用安装时的密码和root用户登陆系统。语言选择中文。
选择 数据中心
→ ACME
,选择添加账户。输入账户名和邮箱,点击注册注册账户。
然后选择添加质询插件。
具体参数可以参照之前的文章进行填充。
点击服务器节点,然后选择凭证。在右侧的ACME中选择添加。按照上图进行选择。然后选择创建。
选择账户后点击立即预定凭证。等待几分钟以后,如果可以用域名访问,代表证书申请成功。
下载常见镜像
网桥配置
创建网桥
auto vmbr10
iface vmbr10 inet static
address 10.1.1.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
post-up iptables -A FORWARD -i vmbr0 -j ACCEPT
post-up iptables -t nat -A POSTROUTING -s '10.1.1.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -D FORWARD -i vmbr0 -j ACCEPT
post-down iptables -t nat -D POSTROUTING -s '10.1.1.0/24' -o vmbr0 -j MASQUERADE
post-down systemctl restart isc-dhcp-server
配置DHCP
vim /etc/dhcp/dhcpd.conf
添加以下内容:
option domain-name-servers 8.8.8.8,8.8.4.4;
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.100 10.1.1.200;
option routers 10.1.10.1;
option broadcast-address 10.1.1.255;
default-lease-time 600;
max-lease-time 7200;
}
host honeyjar {
hardware ethernet fc:89:1c:cc:e5:45; # MAC地址
fixed-address 10.1.1.2; # IP地址
infinite-is-reserved on; # 保留该地址
}
vim /etc/default/isc-dhcp-server
修改为下面所列出的配置:
INTERFACESv4="vmbr10"
# 先启用网卡
ifup vmbr10
# 再重启服务
systemctl restart isc-dhcp-server
通过/var/lib/dhcp/dhcpd.leases
可以查看IP
分配情况。
安全增强
配置防火墙
推荐一开始就设置默认策略为拒绝:
sudo iptables -P INPUT DROP
只开放需要用到的端口:
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
具体的iptables
配置推荐阅读iptables
官方手册,详见其他文章。
修改 SSH 配置
sed -i "s/#Port 22/Port 2222/g" /etc/ssh/sshd_config
sed -i 's/#PermitEmptyPasswords no/PermitEmptyPasswords no/g' /etc/ssh/sshd_config
sed -i 's/^#\?PermitRootLogin .*/PermitRootLogin no/g' /etc/ssh/sshd_config
sed -i 's/^#\?MaxAuthTries .*/MaxAuthTries 2/g' /etc/ssh/sshd_config
sed -i 's/^#\?ClientAliveInterval .*/ClientAliveInterval 30/g' /etc/ssh/sshd_config
sed -i 's/^#\?ClientAliveCountMax .*/ClientAliveCountMax 2/g' /etc/ssh/sshd_config
systemctl restart sshd
常用软件配置
配置 CPU 频率
cpufreq-set -g performance
echo "0" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
# vim /etc/default/cpufrequtils
安装 lmsensor
lmsensor 主要用来监视服务器的温度等数据。
apt install -y lm-sensors
yes | sensors-detect
sensors
安装 Docker
可以参见两篇博客: