.plist
```
### 拒绝SASL机制
由于Mac OS X 10.7.2(狮子)Open Directory将尝试通过SASL机制连接到OpenLDAP。如果您的OpenLDAP服务器使用Simple Bind Lion,则不会回落到此状态,但会拒绝登录。10.7之前的版本仅使用Simple Bind,因此工作没有问题。
Wireshark显示,Mac做的第一件事是连接到LDAP服务器,要求服务器根过滤(objectClass=\*), 并请求支持的SASLMechanisms 、defaultNamingContext 、schemaNamingContext 和salRealm 。
如果我们用ldapsearch 模仿支持 的SASLMechanisms ,它看起来是这样的:
```
# ldapsearch -x -h localhost -b '' -D "cn=manager,dc=example,dc=com" -y /etc/secrets/ldap-manager.secret -s base -LLL "(objectclass=*)" 支持SASLMechanisms
```
这导致了这样的事情:
```
支持SASL机制:DIGEST-MD5支持SASL机制:GSSAPI支持SASL机制:CRAM-MD5支持SASL机制:NTLM
```
为了让Mac再次运行良好,我们必须在Mac上对LDAP服务器提供的每个机制运行以下命令(用LDAP服务器的名称替换*yourldapserver*):
```
/usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string DIGEST-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/yourldapserver.plistOpendirectoryd.plist?
```
## 映射属性
返回目录实用程序,网址为:

选择新...
点按“搜索与映射”标签。使用Open Directory将访问此LDAPv3服务器设置为Open Directory。左列中的每个条目更正搜索库,以反映DLAP树。

之后,请确保用户使用:inetOrgPerson、posixAccount、shadowAccount和apple-user。
组应设置为:posixGroup和apple-group
如果您想进行更多调整,请继续。完成后,选择保存模板...
像这样创建一个LDIF文件:
```
dn:ou=macosxodconfig,ou=apps,dc=example,dc=com更改类型:修改添加:描述描述:< file:///home/admin/Documents/Template.plist
```
根据您的本地情况调整DN和文件路径。
使用:
```
ldapmodify -x -h ldap.example.com -D "cn=manager,dc=example,dc=com" -W -f macosxodconfig.ldif
```
将Template.plist添加到您的LDAP树中。
在其他客户端上,您现在可以将LDAP映射设置为From Server而不是RFC2307。


客户将请求搜索库,并找出其余部分。
[原文链接](http://pig.made-it.com/ldap-mac.html)
# 终端命令
# SSH 最基本的用法
#### SSH
- 主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。
```
ssh user@host
```
- 如果本地用户名与远程用户名一致,登录时可以省略用户名。
```
ssh host
```
- SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。
```
ssh -p 2222 user@host
```
上面这条命令表示,ssh直接连接远程主机的2222端口。
# Linux 命令⼿册
```
shutdown -h now
即刻关机
```
```
shutdown -h 10
10分钟后关机
```
```
shutdown -h 11:00
11:00关机
```
```
shutdown -h +10
预定时间关机(10分钟后)
```
```
shutdown -c
取消指定时间关机
```
```
shutdown -r now
重启
```
```
shutdown -r 10
10分钟之后重启
```
```
shutdown -r 11:00
定时重启
```
```
logout
退出登录Shell
关机/重启/注销常⽤命令
作⽤
```
```
uname -a
查看内核/OS/CPU信息
```
```
who am i
显示登录时的⽤户名
```
```
cat /proc/version
查看linux版本信息
```
```
cat /proc/cpuinfo
查看CPU信息
```
```
cat /proc/interrupts
查看中断
```
```
cat /proc/loadavg
查看系统负载
```
```
uptime
查看系统运⾏时间、⽤户数、负载
```
```
lsusb -tv
查看系统USB设备信息
```
```
lspci -tv
查看系统PCI设备信息
```
```
系统信息和性能查看grep MemTotal /proc/meminfo
查看内存总量
grep MemFree /proc/meminfo
查看空闲内存量
```
```
free -m
查看内存⽤量和交换区⽤量
```
```
cal 2021
显示2021⽇历表
```
```
top
动态显示cpu/内存/进程等情况
```
```
vmstat 1 20
每1秒采⼀次系统状态,采20次
```
```
iostat
查看io读写/cpu使⽤情况
```
```
sar -u 1 10
查询cpu使⽤情况(1秒⼀次,共10次)
```
```
sar -d 1 10
查询磁盘性能常⽤命令
```
```
作⽤
fdisk -l
查看所有磁盘分区
```
```
swapon -s
查看所有交换分区
```
```
df -h
查看磁盘使⽤情况及挂载点
df -hl
同上
```
```
du -sh /dir
查看指定某个⽬录的⼤⼩
```
```
du -sk * | sort -rn
从⾼到低依次显示⽂件和⽬录⼤⼩
```
```
mount /dev/hda2 /mnt/hda2
挂载hda2盘
```
```
mount -t ntfs /dev/sdc1 /mnt/usbhd1
指定⽂件系统类型挂载(如ntfs)
```
```
mount -o loop xxx.iso /mnt/cdrom
挂载iso⽂件
```
```
mount /dev/sda1 /mnt/usbdisk
挂载usb盘/闪存设备
```
```
umount -v /dev/sda1
通过设备名卸载
```
```
umount -v /mnt/mymnt
通过挂载点卸载
```
```
fuser -km /mnt/hda1
强制卸载( 慎⽤)
磁盘和分区常⽤命令
```
```
作⽤
useradd codesheep
创建⽤户
```
```
userdel -r codesheep
删除⽤户
```
```
usermod -g group_name user_name
修改⽤户的组
```
```
usermod -aG group_name user_name
将⽤户添加到组
```
```
usermod -s /bin/ksh -d /home/codepig
–g dev codesheep
修改⽤户codesheep的登录Shell、
主⽬录以及⽤户组
```
```
groups test
查看test⽤户所在的组
```
```
groupadd group_name
创建⽤户组
```
```
groupdel group_name
删除⽤户组
```
```
groupmod -n new_name old_name
重命名⽤户组
```
```
su - user_name
完整切换到⼀个⽤户环境
```
```
passwd codesheep
修改某⽤户的⼝令
```
```
id codesheep
查看指定⽤户codesheep信息
```
```
crontab -l
查看当前⽤户的计划任务
```
```
cut -d : -f1 /etc/passwd
查看系统所有⽤户
```
```
cut -d : -f1 /etc/group
查看系统所有组
⽤户和⽤户组常⽤命令
```
```
作⽤
ifconfig
查看⽹络接⼝属性
```
```
ifconfig eth0
查看某⽹卡的配置
```
```
netstat -lntp
查看所有监听端⼝
```
```
netstat -antp
查看已经建⽴的TCP连接
```
```
netstat -lutp
查看TCP/UDP的状态信息
```
```
ifup eth0
启⽤eth0⽹络设备
```
```
ifdown eth0
禁⽤eth0⽹络设备
```
```
iptables -L
查看iptables规则
ifconfig eth0 192.168.1.1 netmask
255.255.255.0
```
```
配置ip地址
dhclient eth0
```
```
以dhcp模式启⽤eth0
route add -net 0/0 gw Gateway_IP
```
```
配置默认⽹关
route add -net 192.168.0.0 netmask
255.255.0.0 gw 192.168.1.1
```
```
配置静态路由到达⽹络'192.168.0.0/16'
route del 0/0 gw Gateway_IP
删除静态路由
```
```
hostname
查看主机名
⽹络和进程管理host www.codesheep.cn
解析主机名
nslookup www.codesheep.cn
查询DNS记录,查看域名解
析是否正常
ps -ef
查看所有进程
ps -ef | grep codesheep
过滤出你需要的进程
kill -s name
kill指定名称的进程
kill -s pid
kill指定pid的进程
top
实时显示进程状态
vmstat 1 20
每1秒采⼀次系统状态,采
20次
iostat
查看io读写/cpu使⽤情况
sar -u 1 10
查询cpu使⽤情况(1秒⼀
次,共10次)
sar -d 1 10
查询磁盘性能常⽤命令
作⽤
chkconfig --list
列出系统服务
service <服务名> status
查看某个服务
service <服务名> start
启动某个服务
service <服务名> stop
终⽌某个服务
service <服务名> restart
重启某个服务
systemctl status <服务名>
查看某个服务
systemctl start <服务名>
启动某个服务
systemctl stop <服务名>
终⽌某个服务
systemctl restart <服务名>
重启某个服务
systemctl enable <服务名>
开启⾃启动
systemctl disable <服务名>
关闭⾃启动
常⻅系统服务命令常⽤命令
作⽤
cd <⽬录名>
进⼊某个⽬录
cd ..
回上级⽬录
cd ../..
回上两级⽬录
cd
进个⼈主⽬录
cd -
回上⼀步所在⽬录
pwd
显示当前路径
ls
查看⽂件⽬录列表
ls -F
查看⽬录中内容(显示是⽂件还是⽬录)
ls -l
查看⽂件和⽬录的详情列表
ls -a
查看隐藏⽂件
ls -lh
查看⽂件和⽬录的详情列表(增强⽂件⼤⼩易读性)
ls -lSr
查看⽂件和⽬录列表(以⽂件⼤⼩升序查看)
tree
查看⽂件和⽬录的树形结构
mkdir <⽬录名>
创建⽬录
mkdir dir1 dir2
同时创建两个⽬录
mkdir -p
/tmp/dir1/dir2
创建⽬录树
rm -f file1
删除'file1' ⽂件
rmdir dir1
删除'dir1' ⽬录
⽂件和⽬录操作rm -rf dir1
删除'dir1' ⽬录和其内容
rm -rf dir1 dir2
同时删除两个⽬录及其内容
mv old_dir new_dir
重命名/移动⽬录
cp file1 file2
复制⽂件
cp dir /* .
复制某⽬录下的所有⽂件⾄当前⽬录
cp -a dir1 dir2
复制⽬录
cp -a /tmp/dir1 .
复制⼀个⽬录⾄当前⽬录
ln -s file1 link1
创建指向⽂件/⽬录的软链接
ln file1 lnk1
创建指向⽂件/⽬录的物理链接
find / -name file1
从跟⽬录开始搜索⽂件/⽬录
find / -user user1
搜索⽤户user1的⽂件/⽬录
find /dir -name * .bin
在⽬录/dir中搜带有.bin后缀的⽂件
locate <关键词>
快速定位⽂件
locate * .mp4
寻找.mp4结尾的⽂件
whereis <关键词>
显示某⼆进制⽂件/可执⾏⽂件的路径
which <关键词>
查找系统⽬录下某的⼆进制⽂件
chmod ugo+rwx
dir1
设置⽬录所有者( u) 、群组( g) 及其他⼈( o) 的读(r)写
( w) 执⾏( x) 权限
chmod go-rwx dir1
移除群组( g) 与其他⼈( o) 对⽬录的读写执⾏权限
chown user1 file1
改变⽂件的所有者属性
chown -R user1
dir1
改变⽬录的所有者属性
chgrp group1 file1
改变⽂件群组chown
user1:group1 file1
改变⽂件的所有⼈和群组
常⽤命令
作⽤
cat file1
查看⽂件内容
cat -n file1
查看内容并标示⾏数
cat xxx.txt
awk 'NR%2==1'
tac file1
从最后⼀⾏开始反看⽂件内容
more file1
查看⼀个⻓⽂件的内容
less file1
类似more命令,但允许反向操作
head -2 file1
查看⽂件前两⾏
tail -2 file1
查看⽂件后两⾏
tail -f /log/msg
实时查看添加到⽂件中的内容
grep codesheep hello.txt
在⽂件hello.txt中查找关键词codesheep
grep ^sheep hello.txt
在⽂件hello.txt中查找以sheep开头的内容
⽂件查看和处理grep [ 0-9] hello.txt
选择hello.txt⽂件中所有包含数字的⾏
sed 's/s1/s2/g' hello.txt
将hello.txt⽂件中的s1替换成s2
sed '/^$/d' hello.txt
从hello.txt⽂件中删除所有空⽩⾏
sed '/ *#/d; /^$/d' hello.txt
从hello.txt⽂件中删除所有注释和空⽩⾏
sed -e '1d' hello.txt
从⽂件hello.txt 中排除第⼀⾏
sed -n '/s1/p' hello.txt
查看只包含关键词"s1" 的⾏
sed -e 's/ *$//' hello.txt
删除每⼀⾏最后的空⽩字符
sed -e 's/s1//g' hello.txt
从⽂档中只删除词汇s1并保留剩余全部
sed -n '1,5p;5q' hello.txt
查看从第⼀⾏到第5⾏内容
sed -n '5p;5q' hello.txt
查看第5⾏
paste file1 file2
合并两个⽂件或两栏的内容
paste -d '+' file1 file2
合并两个⽂件或两栏的内容,中间⽤"+" 区分
sort file1 file2
排序两个⽂件的内容
sort file1 file2
uniq
sort file1 file2
uniq -u
sort file1 file2
uniq -d
comm -1 file1 file2
⽐较两个⽂件的内容( 去除'file1' 所含内容)
comm -2 file1 file2
⽐较两个⽂件的内容( 去除'file2' 所含内容)
comm -3 file1 file2
⽐较两个⽂件的内容( 去除两⽂件共有部分) 常⽤命令
作⽤
zip xxx.zip file
压缩⾄zip包
zip -r xxx.zip file1 file2 dir1
将多个⽂件+⽬录压成zip包
unzip xxx.zip
解压zip包
tar -cvf xxx.tar file
创建⾮压缩tar包
tar -cvf xxx.tar file1 file2 dir1
将多个⽂件+⽬录打tar包
tar -tf xxx.tar
查看tar包的内容
tar -xvf xxx.tar
解压tar包
tar -xvf xxx.tar -C /dir
将tar包解压⾄指定⽬录
tar -cvfj xxx.tar.bz2 dir
创建bz2压缩包
tar -jxvf xxx.tar.bz2
解压bz2压缩包
tar -cvfz xxx.tar.gz dir
创建gzip压缩包
tar -zxvf xxx.tar.gz
解压gzip压缩包
bunzip2 xxx.bz2
解压bz2压缩包
bzip2 filename
压缩⽂件
gunzip xxx.gz
解压gzip压缩包
gzip filename
压缩⽂件
gzip -9 filename
最⼤程度压缩
打包和解压常⽤命令
作⽤
rpm -qa
查看已安装的rpm包
rpm -q pkg_name
查询某个rpm包
rpm -q --whatprovides xxx
显示xxx功能是由哪个包提供的
rpm -q --whatrequires xxx
显示xxx功能被哪个程序包依赖的
rpm -q --changelog xxx
显示xxx包的更改记录
rpm -qi pkg_name
查看⼀个包的详细信息
rpm -qd pkg_name
查询⼀个包所提供的⽂档
rpm -qc pkg_name
查看已安装rpm包提供的配置⽂件
rpm -ql pkg_name
查看⼀个包安装了哪些⽂件
rpm -qf filename
查看某个⽂件属于哪个包
rpm -qR pkg_name
查询包的依赖关系
rpm -ivh xxx.rpm
安装rpm包
rpm -ivh --test xxx.rpm
测试安装rpm包
rpm -ivh --nodeps xxx.rpm
安装rpm包时忽略依赖关系
rpm -e xxx
卸载程序包
rpm -Fvh pkg_name
升级确定已安装的rpm包
rpm -Uvh pkg_name
升级rpm包( 若未安装则会安装)
rpm -V pkg_name
RPM包详细信息校验
RPM包管理命令常⽤命令
作⽤
yum repolist enabled
显示可⽤的源仓库
yum search pkg_name
搜索软件包
yum install pkg_name
下载并安装软件包
yum install --downloadonly pkg_name
只下载不安装
yum list
显示所有程序包
yum list installed
查看当前系统已安装包
yum list updates
查看可以更新的包列表
yum check-update
查看可升级的软件包
yum update
更新所有软件包
yum update pkg_name
升级指定软件包
yum deplist pkg_name
列出软件包依赖关系
yum remove pkg_name
删除软件包
yum clean all
清除缓存
yum clean packages
清除缓存的软件包
YUM包管理命令常⽤命令
作⽤
dpkg -c xxx.deb
列出deb包的内容
dpkg -i xxx.deb
安装/更新deb包
dpkg -r pkg_name
移除deb包
dpkg -P pkg_name
移除deb包( 不保留配置)
dpkg -l
查看系统中已安装deb包
dpkg -l pkg_name
显示包的⼤致信息
dpkg -L pkg_name
查看deb包安装的⽂件
dpkg -s pkg_name
查看包的详细信息
dpkg –unpack xxx.deb
解开deb包的内容
DPKG包管理命令常⽤命令
作⽤
apt-cache search pkg_name
搜索程序包
apt-cache show pkg_name
获取包的概览信息
apt-get install pkg_name
安装/升级软件包
apt-get purge pkg_name
卸载软件(包括配置)
apt-get remove pkg_name
卸载软件(不包括配置)
apt-get update
更新包索引信息
apt-get upgrade
更新已安装软件包
apt-get clean
清理缓存
```
# 配置
配置是建立IT基础设施的过程。它还可以参考管理数据和资源访问所需的步骤,并将其提供给用户和系统。
配置与配置不同,但它们都是部署过程中的步骤。配置完内容后,下一步就是配置。
当使用“配置”一词时,它可以指许多不同类型的配置,例如服务器配置、网络配置、用户配置、服务配置等。
[了解自动化如何加快配置](https://www.redhat.com/en/engage/automated-enterprise-ebook-20171107 "SOLP:电子书自动企业")
服务器配置是根据所需资源设置服务器在网络中使用的过程。
配置可以包括创建新机器并将其带到工作状态所需的所有操作,并包括定义系统所需的状态。
服务器配置包括在数据中心设置物理硬件,安装和配置软件,包括操作系统和应用程序,并将其连接到中间件、网络和存储。
用户配置是一种监控访问权限和授权权限的身份管理。配置是通过用户对象定义的,例如员工、供应商、承包商等和用户属性。提供的服务可能包括电子邮件、访问数据库或访问网络。
配置基于角色的访问控制(RBAC)是用户配置的一个例子。RBAC通常由权限、角色、组和用户组成。
用户被分配到一个或多个组,组被分配给角色(例如只读、编辑器或管理员),角色由权限组成。
用户配置通常在IT和人力资源之间进行管理。
网络配置可以包括设置供用户、服务器、容器和物联网设备访问的网络等。在当今互联的世界中,有许多不同类型的项目是网络消费者。
[电信行业](https://www.redhat.com/en/technologies/industries/telecommunications)经常使用网络配置来指向用户提供电信服务,包括所需的设备和布线。它还可能包括为用户激活无线环境的服务。
服务配置包括设置服务和管理与之相关的数据。服务配置在电信行业、为客户设置服务以及[云基础设施](https://www.redhat.com/en/topics/cloud)方面都有应用。
例如,[云服务](https://www.redhat.com/en/topics/cloud-computing/what-are-cloud-services)配置是云计算的自助服务组件。用户无需IT人员的帮助,即可通过自助门户获得云服务。
过去,IT基础设施配置通常是手动处理的,包括设置物理服务器和将硬件配置到所需的设置。如果您需要额外的容量,则必须订购更多硬件,等待它到达,然后进行设置并配置。
今天,基础设施现在通常用软件定义,[虚拟化](https://www.redhat.com/en/topics/virtualization/what-is-virtualization)和[容器](https://www.redhat.com/en/topics/containers)加快了配置过程,同时消除了频繁硬件配置和管理的需求。配置也可以通过自动化来处理。
虚拟基础设施也增加了许多企业环境的规模和容量,这伴随着自身的挑战。开发人员仍然需要为每个新部署配置虚拟基础设施,手动配置很耗时,容易出现人为错误。
当开发人员手动管理每次部署的配置时,很难跟踪更改和控制版本,并避免错误和不一致。
[基础设施即代码(IaC)](https://www.redhat.com/en/topics/automation/what-is-infrastructure-as-code-iac)提供了一个解决方案,并使您的基础设施自动化成为可能。
IaC是通过代码而不是手动流程管理和配置基础设施。
使用IaC自动配置基础设施意味着开发人员无需每次开发或部署应用程序时手动配置和管理服务器、操作系统、存储和其他基础设施组件。
使用IaC,创建包含基础架构规范的配置文件。这剥夺了开发人员的大部分配置工作,他们只需要执行脚本即可准备好基础架构。
IaC确保您每次都提供相同的环境。
将基础架构作为代码部署还意味着您可以将基础架构划分为模块化组件,然后可以通过自动化以不同方式组合。
编纂您的基础设施为您提供了一个模板进行配置,尽管这仍然可以手动完成,但自动化工具,如[Red HatR Ansible AutomationR平台](https://www.redhat.com/en/technologies/management/ansible),可以为您完成。
使用Ansible Automation Platform,使用剧本来描述基础架构的所需状态,然后该工具可以配置。您还可以使用Ansible自动化平台进行[配置管理](https://www.redhat.com/en/topics/automation/what-is-configuration-management),以将系统保持在所需的状态。
自动化配置任何基础设施是自动化应用程序运行生命周期的第一步。
# 转换镜像格式
### Cloud Virtual Machine
> 实例镜像=已挂载的系统盘镜像+数据盘镜像
**导入**
- 格式:**qcow2、vmdk、vhd、raw**;
- 大小:导入镜像的实际文件大小不得超过50GB(按转换为 qcow2 格式的镜像文件为准)、导入镜像的系统盘大小不得超过500GB;
- 分区:不支持 GPT 分区 / Linux 支持 xfs、ext2、ext3、ext4 / Windows 支持 NTFS/支持 MBR分区;
- 网络:默认为实例提供 eth0 网络接口、修改网卡名字为 eth0、修改 selinux配置为disabled、关闭 DNS查找、ttyS0服务要打开;
- 驱动:必须安装虚拟化平台 KVM 的 Virtio 驱动/镜像需安装 cloud-init,以保证能成功配置 hostname、NTP源和yum源;
**方法**
1. 通过 qemu-img 工具将其他格式的镜像文件转换为 VHD 或 RAW 格式;
2. [KMS 客户端设置密钥 ](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/jj612867(v=ws.11)?redirectedfrom=MSDN)
3. [实例元数据](https://cloud.tencent.com/document/product/213/4934)
4. [详情参考 Linux 导入镜像安装 ](http://book.321jr.com/cloudinit%20https:/cloud.tencent.com/document/product/213/12587)
5. [详情参考 Linux 导入镜像检查 Virtio 驱动 ](https://cloud.tencent.com/document/product/213/9929)
6. 如因其它原因,镜像无法安装 cloudinit,[请根据强制导入镜像自行配置实例](https://cloud.tencent.com/document/product/213/12849) ;
7. [制作 Linux 镜像](https://cloud.tencent.com/document/product/213/17814);
8. [制作 Windows 镜像](https://cloud.tencent.com/document/product/213/17815)、[Windows 操作系统安装](http://book.321jr.com/Cloudbase-Init%20https:/cloud.tencent.com/document/product/213/30000) ;
9. 1[腾讯云导出镜像](https://github.com/tencentyun/qcloud-documents/blob/master/product/)
# 转换镜像格式-命令行
#### Windows 操作系统
**验证环境变量配置**
1. 按 **Win + R**,打开运行窗口。
2. 在“运行”窗口中,输入 **cmd** 打开命令行。
3. 执行以下命令,根据返回结果判断环境变量是否配置成功
```
qemu-img --help
```
```
cd <源镜像文件所在的目录>
```
```
qemu-img convert -f <源镜像文件格式> -O <目标镜像格式> <源镜像文件名> <目标镜像文件名>
```
**转换镜像格式**
在命令行中,执行以下命令,切换至镜像文件所在目录
```
cd <源镜像文件所在的目录>
```
执行以下命令,转换镜像格式
```
qemu-img convert -f <源镜像文件格式> -O <目标镜像格式> <源镜像文件名> <目标镜像文件名>
```
参数说明如下:
- `-f`:参数值为源镜像文件的格式。
- `-O`(必须为大写):参数值为目标镜像格式、源镜像文件名和目标文件名。
例如,执行以下命令,将 `test.qcow2` 镜像文件转换为 `test.raw`。
```
qemu-img convert -f qcow2 -O raw test.qcow2 test.raw
```
转换完成后,目标文件会出现在源镜像文件所在的目录下。
# Proxmox VE
# Proxmox VE上传ISO镜像教程
#### Proxmox VE上传ISO镜像教程
上传镜像很简单。
默认的iso镜像仓库为(PVE——local——内容)
[](http://book.321jr.com/uploads/images/gallery/2022-03/2YZusQBPjRR91sXV-image-1646969996812.png)
这里有个模板选项,如果不知道如何下载,在哪儿下载镜像,可以直接在模板下载,当然,我博客页写了一篇在哪儿下载的文章
[linux各发行版下载](https://foxi.buduanwang.vip/linux/168.html/) 也可以去[清华大学镜像站](https://mirrors.tuna.tsinghua.edu.cn/)下载。
我们看看PVE提供的模板有哪些。如下图,竟然全是lxc就是openvz。不是我们需要的镜像,如果不开openvz,就不用管了
[](http://book.321jr.com/uploads/images/gallery/2022-03/jbM1XGWeQQT4hKdf-image-1646970019040.png)
[](http://book.321jr.com/uploads/images/gallery/2022-03/HNXVC7nNjv6nQ79W-image-1646970030687.png)
我这里上传了一个ubuntu的镜像。
# Proxmox VE 虚拟机磁盘的选择
这么多类型?怎么选才能让PVE的磁盘性能得到最优的结果?
[](http://book.321jr.com/uploads/images/gallery/2022-03/as3TS2l9FuHyABv3-image-1646970097188.png)
**先说一下基本的概念吧。**
- VirtIO Block:
一种很好的半虚拟化磁盘驱动
- VirtIO SCSI:
VirtIO block优化后的半虚拟化磁盘驱动
- VirtIO SCSI Single:
和VirtIO SCSI一样,只不过一个SCSI磁盘对应一个VirtIO的控制器
**那3者有什么区别呢?**
当然是VirtIO-SCSI性能比VirtIO-Block性能好
参考:https://www.ovirt.org/develop/release-management/features/storage/virtio-scsi.html
virtio-scsi 功能是一种新的半虚拟化 SCSI 控制器设备。它是 KVM 虚拟化存储堆栈替代 virtio-blk 并改进其功能的替代存储实施的基础。它提供与 virtio-blk 相同的性能,并增加了以下直接好处:
- 改进的可扩展性——虚拟机可以连接到更多的存储设备(virtio-scsi 可以处理每个虚拟 SCSI 适配器的多个块设备)。
- 标准命令集——virtio-scsi 使用标准 SCSI 命令集,简化了新功能的添加。
- 标准设备命名——virtio-scsi 磁盘使用与裸机系统相同的路径。这简化了物理到虚拟和虚拟到虚拟的迁移。
- SCSI 设备直通——virtio-scsi 可以将物理存储设备直接呈现给来宾。
与 virtio-blk 相比,Virtio-SCSI 提供了直接连接到 SCSI LUN 的能力,并显着提高了可扩展性。virtio-SCSI 的优势在于它能够处理数百个设备,而 virtio-blk 只能处理大约 30 个设备并耗尽 PCI 插槽。
virtio-scsi 旨在取代 virtio-blk,保留了 virtio-blk 的性能优势,同时提高了存储可扩展性,允许通过单个控制器访问多个存储设备,并能够重用客户操作系统的 SCSI 堆栈。
简要的可以参考下图
[](http://book.321jr.com/uploads/images/gallery/2022-03/HJ9VwLEtZ0aj7X6M-image-1646970125331.png)
引用于:[https://www.cnblogs.com/kylingx/p/11704994.html](https://www.cnblogs.com/kylingx/p/11704994.html) 从实际上看
我们创建一个虚拟机,使用VirtIO SCSI控制器,创建了2个SCSI设备,一个VirtIO BLK设备。
[](http://book.321jr.com/uploads/images/gallery/2022-03/Qs4AVIiA6sUhMGSV-image-1646970148088.png)
在系统下可以看到如下信息
[](http://book.321jr.com/uploads/images/gallery/2022-03/rH1bJHSF3S2K7HlF-image-1646970164899.png)
从上面的信息来看,
VirtIO BLK是有独立的磁盘控制器的,叫做:Red Hat VirtIO Scsi controller。
VirtIO SCSI控制器名字叫做:Red Hat VirtIO SCSI pass-through contoller
VirtIO BLK磁盘名叫做:Red Hat SCSI Disk Device
VirtIO SCSI磁盘名叫做:QEMU QEMU HARDDISK SCSI Disk Device
VirtIO-SCSI VirtIO-BLK 磁盘名 QEMU QEMU HARDDISK SCSI Disk Device Red Hat SCSI Disk Device 控制器 Red Hat VirtIO SCSI pass-through contoller Red Hat VirtIO SCSI controller 驱动 vioscsi.sys viostor.sys
然后我们将磁盘控制器改成VirtIO-SCSI-Single
在OS上面再次看
[](http://book.321jr.com/uploads/images/gallery/2022-03/4zMKuCHPQkt2IJOt-image-1646970226336.png)
显而易见,VirtIO-SCSI-Single控制器,是一个SCSI磁盘对应一个控制器,这样可以提高性能
[](http://book.321jr.com/uploads/images/gallery/2022-03/LcjPrB3FlkI6z0eD-image-1646970247139.png)
有个明显的例子如下[https://c.cra.moe/t/topic/24](https://c.cra.moe/t/topic/24)
[](http://book.321jr.com/uploads/images/gallery/2022-03/J3kpLvqtiIyOQ5C4-image-1646970266075.png)
这边跑了个数据
[](http://book.321jr.com/uploads/images/gallery/2022-03/ENPlFwEwqD9UQmmH-image-1646970284563.png)
上面是VirtIO-SCSI-Single模式,下面是普通的VirtIO-SCSI模式
[](http://book.321jr.com/uploads/images/gallery/2022-03/lJyZ1L2U6t422w1b-image-1646970305004.png)
两者看起来差距不大。但是从理论上,还是single模式效益高点。
所以总目前的结论来看,在PVE中要发挥最大的磁盘性能,建议使用VirtIO-SCSI-Single模式的SCSI硬盘。
# 如何更新 Proxmox VE
编辑
`/etc/apt/sources.list`
```
deb http://ftp.us.debian.org/debian buster main contrib
deb http://ftp.us.debian.org/debian buster-updates main contrib
# security updates
deb http://security.debian.org buster/updates main contrib
# not for production use
deb http://download.proxmox.com/debian buster pve-no-subscription
```
执行
```
apt-get update
apt dist-upgrade
```
# Cloud Image and Cloud Init Proxmox 模板
#### 安装步骤
- 选择您的 [Ubuntu 云映像 ](https://cloud-images.ubuntu.com/)
- 下载 Ubuntu(替换为您从上面选择的 URL)
```
wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img
```
- 创建一个新的虚拟机
```
qm create 8000 --memory 2048 --core 2 --name ubuntu-cloud --net0 virtio,bridge=vmbr0
```
- 将下载的 Ubuntu 磁盘导入到 local-lvm 存储
```
qm importdisk 8000 focal-server-cloudimg-amd64.img local-lvm
```
- 将新磁盘作为 scsi 控制器上的 scsi 驱动器附加到 vm
```
qm set 8000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-8000-disk-0
```
- 添加云初始化驱动器
```
qm set 8000 --ide2 local-lvm:cloudinit
```
- 使云初始化驱动器可启动并限制 BIOS 仅从磁盘启动
```
qm set 8000 --boot c --bootdisk scsi0
```
- 添加串行控制台
```
qm set 8000 --serial0 socket --vga serial0
```
**不要启动你的虚拟机 **
现在,配置硬件和云初始化,然后创建模板并克隆。如果您想扩展您的硬盘驱动器,您可以在创建模板之前或克隆新机器之后使用此基础映像。我更喜欢根据需要克隆一台新机器后扩展硬盘驱动器。
- 创建模板
```
qm template 8000
```
- 克隆模板
```
qm clone 8000 135 --name yoshi --full
```
#### 故障排除
- 如果您需要重置您的机器 ID
```
sudo rm -f /etc/machine-id
sudo rm -f /var/lib/dbus/machine-id
```
- 然后关闭它,不要启动它。下次启动时会生成一个新的 id。如果没有,您可以运行:
```
sudo systemd-machine-id-setup
```
# Proxmox 安装后设置
### Proxmox 版本 7.X
(有关 Proxmox 7 的完整指南,请[参阅此链接](https://docs.technotim.live/posts/proxmox-7/))
#### 更新
- 编辑
`/etc/apt/sources.list`
```
deb http://ftp.debian.org/debian bullseye main contrib
deb http://ftp.debian.org/debian bullseye-updates main contrib
# security updates
deb http://security.debian.org/debian-security bullseye-security main contrib
# PVE pve-no-subscription repository provided by proxmox.com,
# NOT recommended for production use
deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription
```
- 编辑
`/etc/apt/sources.list.d/pve-enterprise.list`
```
# deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise
```
- 执行
```
apt-get update
apt dist-upgrade
reboot
```
#### 贮存
- 擦除磁盘
```
fdisk /dev/sda
```
然后 P 表示分区,然后 D 表示删除,然后 W 表示写入
#### 检查 SMART 监控
```
smartctl -a /dev/sda
```
#### IOMMU(PCI 直通)
(请参阅[Proxmox PCI 直通)](https://pve.proxmox.com/wiki/Pci_passthrough)
- 编辑
`nano /etc/default/grub`
```
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
```
`update-grub`
- 编辑
`/etc/modules`
```
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
```
`update-initramfs -u -k all`
`reboot`
#### VLAN
- 限制 VLAN
```
nano /etc/network/interfaces
```
- 设置 VLAN
```
bridge-vlan-aware yes
bridge-vids 20
```
#### NIC 团队示例
```
nano /etc/network/interfaces
```
```
auto eno1
iface eno1 inet manual
auto eno2
iface eno2 inet manual
auto bond0
iface bond0 inet manual
bond-slaves eno1 eno2
bond-miimon 100
bond-mode 802.3ad
bond-xmit-hash-policy layer2+3
auto vmbr0
iface vmbr0 inet static
address 192.168.0.11/24
gateway 192.168.0.1
bridge-ports bond0
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 2-4094
#lacp nic team
```
**如果您正在运行 Proxmox 7,请在[此处](https://docs.technotim.live/posts/proxmox-7/)查看修改后的 LAGG / LACP配置**
#### 克隆
在克隆 Linux 机器后运行的命令,以便它重置克隆它的机器的所有信息。
- 更改主机名
```
sudo nano /etc/hostname
```
- 更改主机文件,找到主机名并更改它
```
sudo nano /etc/hosts
```
- 重置机器ID
```
rm -f /etc/machine-id /var/lib/dbus/machine-id
dbus-uuidgen --ensure=/etc/machine-id
dbus-uuidgen --ensure
```
- 重新生成 ssh 密钥
```
regen ssh keys
sudo rm /etc/ssh/ssh_host_*
sudo dpkg-reconfigure openssh-server
```
- 重启
[原文链接](https://docs.technotim.live/posts/first-11-things-proxmox/)
# 启用 IOMMU
**进入**
```
nano /etc/default/grub
```
**找到 "GRUB\_CMDLINE\_LINUX\_DEFAULT",变成**
```
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
```
**更新 grub**
```
update-grub
```
**重启**
```
Reboot
```
**验证硬件直通开启是否成功**
```
dmesg | grep -e DMAR -e IOMMU
```
应该有一行看起来像“**DMAR:IOMMU enabled**”。如果没有输出,说明有问题。
**点对点模式**
Intel 和 AMD 芯片都可以使用附加参数“iommu=pt”,以与上述相同的方式添加到内核 cmdline。
```
iommu = pt
```
这仅在必要时启用 IOMMU 转换,适配器不需要对内存使用 DMA 转换,因此可以提高 **管理程序 **PCIe 设备(未传递到 VM)的 性能
**所需模块 **
添加到 /etc/modules
```
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
```
请注意,在基于 5.4 的内核中,其中一些模块已经直接内置到内核中。
#### IOMMU 中断重映射
如果没有中断重新映射,就无法使用 PCI 直通。设备分配将失败,并显示“无法分配设备“\[设备名称\]”:不允许操作”或“未找到中断重新映射硬件,将设备传递到非特权域是不安全的。” 错误。
所有使用 Intel 处理器和芯片组且支持 Intel Virtualization Technology for Directed I/O (VT-d) 但不支持中断重新映射的系统都会看到此类错误。较新的处理器和芯片组(AMD 和 Intel)提供中断重新映射支持。
要确定您的系统是否支持中断重新映射
```
dmesg | grep 'remapping'
```
如果您看到以下行之一:
- "AMD-Vi: Interrupt remapping enabled"
- "DMAR-IR: Enabled IRQ remapping in x2apic mode" ('x2apic' can be different on old CPUs, but should still work)
然后支持重新映射。
如果您的系统不支持中断重新映射,您可以通过以下方式允许不安全的中断:
```
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
```
#### 验证 IOMMU 隔离
对于工作 PCI 直通,您需要一个专用的 IOMMU 组,用于要分配给 VM 的所有 PCI 设备。
你应该有类似的东西:
```
# find /sys/kernel/iommu_groups/ -type l
/sys/kernel/iommu_groups/0/devices/0000:00:00.0
/sys/kernel/iommu_groups/1/devices/0000:00:01.0
/sys/kernel/iommu_groups /1/devices/0000:01:00.0
/sys/kernel/iommu_groups/1/devices/0000:01:00.1
/sys/kernel/iommu_groups/2/devices/0000:00:02.0
/sys/kernel/iommu_groups/3 /devices/0000:00:16.0
/sys/kernel/iommu_groups/4/devices/0000:00:1a.0
/sys/kernel/iommu_groups/5/devices/0000:00:1b.0
/sys/kernel/iommu_groups /6/devices/0000:00:1c.0
/sys/kernel/iommu_groups/7/devices/0000:00:1c.5
/sys/kernel/iommu_groups/8/devices/0000:00:1c.6
/sys /kernel/iommu_groups/9/devices/0000:00:1c.7
/sys/kernel/iommu_groups/9/devices/0000:05:00.0
/sys/kernel/iommu_groups/10/devices/0000:00:1d.0
/sys/kernel/iommu_groups/11/devices/0000:00:1f.0
/sys/kernel/iommu_groups/11/devices/0000:00:1f.2
/sys/kernel/iommu_groups/11/devices/0000:00:1f.3
/sys/kernel/iommu_groups/12/devices/0000:02:00.0
/sys/kernel/iommu_groups/12/devices/0000:02:00.1
/sys/kernel/iommu_groups/13/devices/0000:03:00.0
/sys/kernel/iommu_groups/14/devices/0000:04:00.0
```
要拥有单独的 IOMMU 组,您的处理器需要支持称为 ACS(访问控制服务)的功能。确保为此在 BIOS 中启用相应的设置。
除至强 E3-1200 外,所有至强处理器都支持它们(E3、E5)。
对于 Intel Core 则不同,只有部分处理器支持 ACS。只要支持 VT-d,任何比下面列出的更新都应该支持 ACS。请参阅 [https://ark.intel.com ](https://ark.intel.com/)了解更多信息。
```
Haswell-E (LGA2011-v3)
i7-5960X (8-core, 3/3.5GHz)
i7-5930K (6-core, 3.2/3.8GHz)
i7-5820K (6-core, 3.3/3.6GHz)
Ivy Bridge- E (LGA2011)
i7-4960X (6-core, 3.6/4GHz)
i7-4930K (6-core, 3.4/3.6GHz)
i7-4820K (4-core, 3.7/3.9GHz)
Sandy Bridge-E (LGA2011)
i7 -3960X(6 核,3.3/3.9GHz)
i7-3970X(6 核,3.5/4GHz)
i7-3930K(6 核,3.2/3.8GHz)
i7-3820(4 核,3.6/3.8GHz)
```
来自 Ryzen 第一代和更新版本的 AMD 芯片也很好。
如果您没有专门的 IOMMU 组,您可以尝试:
1) 将卡移动到另一个 pci 插槽
2) 将“pcie\_acs\_override=downstream”添加到内核引导命令行(grub 或 systemd-boot)选项中,这有助于某些 ACS 实施不良的设置。
[查看有关编辑内核命令行](https://pve.proxmox.com/pve-docs/chapter-sysadmin.html#sysboot_edit_kernel_cmdline)的文档 更多信息:
[http://vfio.blogspot.be/2015/10/intel-processors-with-acs-support.html ](http://vfio.blogspot.be/2015/10/intel-processors-with-acs-support.html) [http://vfio.blogspot.be/2014/08/iommu-groups-inside-and-out.html ](http://vfio.blogspot.be/2014/08/iommu-groups-inside-and-out.html)
#### 确定您的 PCI 卡地址,并配置您的虚拟机
最简单的方法是使用 GUI 在 VM 的硬件选项卡中添加类型为“Host PCI”的设备。
或者,您可以使用命令行:
使用“lspci”找到您的卡。地址应采用以下格式: 01:00.0 编辑 <vmid>.conf 文件。它可以位于:/etc/pve/qemu-server/vmid.conf。
将此行添加到文件末尾:
```
hostpci0: 01:00.0
```
如果您有一个多功能设备(例如带有嵌入式音频芯片组的 vga 卡),您可以手动传递所有功能:
```
hostpci0: 01:00.0;01:00.1
```
或者,自动传递所有函数:
```
hostpci0: 01:00
```
#### PCI Express 直通
添加设备时选中 GUI 中的“PCI-E”复选框,或手动将 pcie=1 参数添加到 VM 配置:
```
machine: q35
hostpci0: 01:00.0,pcie=1
```
PCIe 直通仅在 Q35 机器上受支持。
请注意,这并不意味着分配没有此设置的设备将只有 PCI 速度,它只是为来宾设置一个标志,告诉它该设备是 PCIe 设备,而不是“真正快速的传统 PCI 设备”。一些来宾应用程序从中受益。
#### GPU 直通
对于 VM 配置,它们有 4 种可能的配置:
#### GPU OVMF PCI 直通(推荐)
为您的 VM 选择“OVMF”作为“BIOS”,而不是默认的“SeaBIOS”。您需要安装支持 uefi 的来宾操作系统。(对于 Windows,请尝试 win >=8)
使用 OVMF,您还可以将 disable\_vga=1 添加到 vfio-pci 模块,如果可能,它会尝试从 vga 仲裁中选择退出设备:
```
echo "options vfio-pci ids=10de:1381,10de:0fbc disable_vga=1" > /etc/modprobe.d/vfio.conf
```
并且您需要确保您的显卡具有 UEFI 可启动 rom:http: [//vfio.blogspot.fr/2014/08/does-my-graphics-card-rom-support-efi.html ](http://vfio.blogspot.fr/2014/08/does-my-graphics-card-rom-support-efi.html)
```
bios: ovmf
scsihw: virtio-scsi-pci
bootdisk: scsi0
scsi0: .....
hostpci0: 01:00,x-vga=on
```
#### GPU OVMF PCI Express 直通
同上,但将机器类型设置为 q35 并启用 pcie=1:
```
bios: ovmf
scsihw: virtio-scsi-pci
bootdisk: scsi0
scsi0: .....
machine: q35
hostpci0: 01:00,pcie=1,x-vga=on
```
#### GPU Seabios PCI 直通
```
hostpci0: 01:00,x-vga=on
```
#### GPU Seabios PCI Express 直通
```
machine: q35
hostpci0: 01:00,pcie=1,x-vga=on
```
#### 如何知道显卡是否兼容 UEFI (OVMF)
获取并编译软件“rom-parser”:
```
git clone https://github.com/awilliam/rom-parser
cd rom-parser
make
```
然后转储你的VGA卡的ROM:
```
cd /sys/bus/pci/devices/0000:01:00.0/
echo 1 > rom
cat rom > /tmp/image.rom
echo 0 > rom
```
并通过以下方式对其进行测试:
```
./rom-parser /tmp/image.rom
```
输出应如下所示:
```
Valid ROM signature found @0h, PCIR offset 190h
PCIR: type 0, vendor: 10de, device: 1280, class: 030000
PCIR: revision 0, vendor revision: 1
Valid ROM signature found @f400h, PCIR offset 1ch
PCIR: type 3, vendor: 10de, device: 1280, class: 030000
PCIR: revision 3, vendor revision: 0
EFI: Signature Valid
Last image
```
要与 UEFI 兼容,您需要在结果中添加“类型 3”。
#### NVIDIA 提示
一些 Windows 应用程序,如 geforce experience、Passmark Performance Test 和 SiSoftware Sandra crash 可能会使 VM 崩溃。您需要添加:
```
echo "选项 kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
```
如果您在“dmesg”系统日志中看到大量警告消息,请添加以下内容:
```
echo "options kvm ignore_msrs=1 report_ignored_msrs=0" > /etc/modprobe.d/kvm.conf
```
用户报告说 NVIDIA Kepler K80 GPU 在 vmid.conf 中需要这个:
```
args: -machine pc,max-ram-below-4g=1G
```
### “romfile”选项
[http://lime-technology.com/forum/index.php?topic=43644.msg482110#msg482110 ](http://lime-technology.com/forum/index.php?topic=43644.msg482110#msg482110)
默认情况下,某些主板无法通过第一个 PCI(e) 插槽上的 GPU,因为它的 vbios 在启动期间会被遮蔽。您需要在其“正常”工作时捕获其 vBIOS(即安装在不同的插槽中),然后您可以将卡移动到插槽 1 并使用转储的 vBIOS 启动 vm。
要转储 BIOS:
```
cd /sys/bus/pci/devices/0000:01:00.0/
echo 1 > rom
cat rom > /usr/share/kvm/vbios.bin
echo 0 > rom
```
然后您可以通过以下命令传递 vbios 文件(必须位于 /usr/share/kvm/ 中):
```
hostpci0: 01:00,x-vga=on,romfile=vbios.bin
```
#### 故障排除
#### BAR 3:无法保留 \[mem\] 错误
如果您在尝试将卡用于 VM 时遇到此错误:
```
vfio-pci 0000:04:00.0: BAR 3: can't reserve [mem 0xca000000-0xcbffffff 64bit]
```
您可以尝试添加以下内核命令行选项:
```
video=efifb:off
```
[查看有关编辑内核命令行](https://pve.proxmox.com/pve-docs/chapter-sysadmin.html#sysboot_edit_kernel_cmdline)的文档
#### 香料
Spice 在通过 GPU 时可能会带来麻烦,因为它会向来宾提供“虚拟”PCI 显卡,并且即使两张卡都出现,一些驱动程序也会遇到问题。总是值得尝试禁用 SPICE 并再次检查是否出现故障。
#### HDMI 音频噼啪声/损坏
某些数字音频设备(通常通过 GPU 功能添加)可能需要启用 MSI(消息信号中断)才能正常运行。如果您遇到任何问题,请尝试更改客户机中的 MSI 设置并重新启动客户机。
此处提供了简化此操作的 Windows 工具: [https ://github.com/CHEF-KOCH/MSI-utility/releases/latest ](https://github.com/CHEF-KOCH/MSI-utility/releases/latest)
Linux 来宾通常会自行启用 MSI。要强制将 MSI 用于 GPU 音频设备,请使用以下命令并重新启动:
```
echo "options snd-hda-intel enable_msi=1" >> /etc/modprobe.d/snd-hda-intel.conf
```
使用“lspci -vv”并检查设备上的以下行以查看是否启用了 MSI:
```
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
```
如果显示“启用+”,则 MSI 正在工作,“启用-”表示支持但已禁用,如果该行缺失,则 PCIe 硬件不支持 MSI。
这也可以潜在地提高其他直通设备(包括 GPU)的性能,但这取决于所使用的硬件。
#### BIOS 选项
确保您使用的是适用于主板的最新 BIOS 版本。通常 IOMMU 分组或直通支持在以后的版本中得到了改进。
一些可能需要更改以允许直通工作的常规 BIOS 选项:
- IOMMU 或 VT-d:设置为“启用”或等效项,通常“自动”不一样
- 'Legacy boot' 或 CSM:对于 GPU 直通,它可以帮助禁用此功能,但请记住 PVE 必须安装在 UEFI 模式下,因为如果不启用此功能,它将无法在 BIOS 模式下启动。禁用此功能的原因是它避免了已安装 GPU 的传统 VGA 初始化,使它们能够在以后根据直通要求重新初始化。尝试在单 GPU 系统中使用直通时最有用。
- “Resizable BAR”/“Smart Access Memory”:如果在主机上启用此功能,某些 AMD GPU(Vega 及更高版本)在 Windows 客户机中会遇到“Code 43”。无论哪种方式(目前),VM 都不支持它,因此推荐设置为“关闭”。
#### 验证操作
启动虚拟机并在 CLI 上输入 qm 监视器:“qm monitor vmnumber” 验证您的卡是否在此处列出:“info pci”然后在您的客户操作系统上安装驱动程序。
注:卡支持可能仅限于 2 或 3 个设备。
注意:PCI 设备只能连接到单个 VM。
注意:只要它所连接的 VM 正在运行,此过程就会从 proxmox 主机操作系统中移除该卡。
注意:使用 PCI 直通将驱动器直接呈现给 ZFS(FreeNAS、Openfiler、OmniOS)虚拟机可以进行测试,但 **不建议 **用于生产用途。具体的 FreeNAS 警告可以在这里找到: [http ://forums.freenas.org/threads/absolutely-must-virtualize-freenas-a-guide-to-not-completely-losing-your-data.12714/ ](http://forums.freenas.org/threads/absolutely-must-virtualize-freenas-a-guide-to-not-completely-losing-your-data.12714/)
#### USB 直通
如果您需要通过 USB 设备(键盘、鼠标),请遵循此 wiki 文章:
[https://pve.proxmox.com/wiki/USB\_physical\_port\_mapping](https://pve.proxmox.com/wiki/USB_physical_port_mapping)
[原文链接 ](https://pve.proxmox.com/wiki/Pci_passthrough#Enable_the_IOMMU)
# Linux 使用前设置
在本教程中设置我们的第一个 Linux 服务器,并逐步完成正确的设置。
### 更新
```
sudo apt-get update
sudo apt-get upgrade
```
重新配置无人值守升级
```
sudo dpkg-reconfigure --priority=low unattended-upgrades
```
在您选择的文本编辑器中验证无人值守升级配置文件
```
/etc/apt/apt.conf.d/20auto-upgrades
```
要通过自动升级配置禁用自动重启,编辑以下文件
```
/etc/apt/apt.conf.d/50unattended-upgrades
```
并通过删除前导斜杠取消注释以下行
```
//Unattended-Upgrade::Automatic-Reboot "false";
```
### 帐户
添加用户
```
sudo adduser someuser
```
添加到 sudoers
```
sudo usermod -aG sudo someuser
```
### SSH 服务器
安装
```
sudo apt-get install openssh-server
```
将密钥从客户端复制到服务器
```
ssh-copy-id someuser@192.168.0.100
```
切换到基于密钥的身份验证
```
sudo nano /etc/ssh/sshd_config
```
添加这些属性
```
PasswordAuthentication no
ChallengeResponseAuthentication no
```
### 联网
静态IP
sudo nano /etc/netplan/01-netcfg.yaml
```YAML
network:
version: 2
renderer: networkd
ethernets:
ens18:
dhcp4: no
addresses:
- 192.168.0.222/24
gateway4: 192.168.0.1
nameservers:
addresses: [192.168.0.4]
```
### 安装
oh-my-zsh
```shell
sudo apt-get update
sudo apt-get install zsh
sudo apt-get install powerline fonts-powerline
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```
### 修复 LVM
```shell
sudo lvm
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
exit
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
```
### 主机名
```
sudo hostnamectl set-hostname
sudo nano /etc/hosts
```
### 时区
检查时区
```
timedatectl
```
更改时区
```
sudo timedatectl set-timezone
```
如果你想要一个菜单,你也可以使用
```
sudo dpkg-reconfigure tzdata
```
### NTP时间
```shell
sudo nano /etc/systemd/timesyncd.conf
NTP=192.168.0.4
sudo timedatectl set-net off
sudo timedatectl set-ntp on
```
### 安装 kvm 代理
```
sudo apt-get install qemu-guest-agent
```
### 防火墙
```
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
```
### fail2ban
```
sudo apt-get install fail2ban
sudo cp /etc/fail2ban/fail2ban.{conf,local}
sudo cp /etc/fail2ban/jail.{conf,local}
sudo nano /etc/fail2ban/jail.local
backend = systemd
```
检查状态
```
sudo fail2ban-client status
sudo fail2ban-client status sshd
```
# PVE 后台添加证书
- 首先我们为自己的域名申请免费的ssl证书,此步骤略,腾讯云、阿里云后台都可以免费申请一年的域名ssl证书。
- 申请到证书后下载,得到xxxx.crt和xxxx.key
- 将xxxx.crt和xxxx.key重命名为 pve-ssl.crt pve-ssl.key,然后将pve-ssl.crt和pve-ssl.key上传到pve主机的/etc/pve/nodes/xx目录下,xx表示pve节点名称,此处我用scp进行上传
```bash
scp pve-ssl.crt pve-ssl.key root@192.168 .2.3 :/etc/pve/nodes/xx
```
- 使用openssl命令,将pve-ssl.crt转换为pve-ssl.pem
```bash
openssl x509 -in pve-ssl.crt -out pve-ssl.pem -outform PEM
```
- 删除目录下pveproxy-ssl.key和pveproxy-ssl.pem,重新生成。此步骤非常重要,否则进入不了PVE后台。
```bash
rm -rf pveproxy-ssl.key pveproxy-ssl.pem
systemctl restart pveproxy
```
至此,我们已经成功添加PVE后台ssl证书,再次打开后台管理地址已经没有烦人的不安全提示。
# 在 PVE上安装 Openwrt(VM)
#### **创建虚拟机**
**1、一般**
- 节点【pve】
- VM ID【100】
- 名称【openwrt】
[](http://book.321jr.com/uploads/images/gallery/2022-07/dgTCeiQzBLJ6kp3K-image-1657416656334-30-42.png)
**2、操作系统**
- 选择【不适用任何介质】
- 类别【Linux】
- 版本【5.x-2.6Kernel】
[](http://book.321jr.com/uploads/images/gallery/2022-07/XLrWYkc9EWzVWx4b-image-1657416694436-31-19.png)
**3、系统**
- 完全照下图即可,下一步
[](http://book.321jr.com/uploads/images/gallery/2022-07/Qg4m34kCV3WUt37g-image-1657416850023-33-29.png)
**4、硬盘**
- 完全照下图即可,下一步
[](http://book.321jr.com/uploads/images/gallery/2022-07/EUm8N45lNrZTPHQt-image-1657416939902-35-26.png)
**5、CPU**
- 核心数量 【4】
- CPU权重【1025】
- 启用NUMA【☑️】
[](http://book.321jr.com/uploads/images/gallery/2022-07/4rKax4YXyedxW86V-image-1657417076488-37-40.png)
**6、内存**
- 内存(MB)【4096】
[](http://book.321jr.com/uploads/images/gallery/2022-07/AOEzdluVoMDYvtLU-image-1657417145180-38-26.png)
**7、网络**
- 完全照下图即可,下一步
[](http://book.321jr.com/uploads/images/gallery/2022-07/737PRZ5WRNMZGqzm-image-1657417198155-39-41.png)
**8、点击【完成】**
**9、分离硬盘**
- 选择刚刚创建的“Openwrt”虚拟机
- 硬件
- 硬盘(scsi0)
- 点击【分离】
[](http://book.321jr.com/uploads/images/gallery/2022-07/IkGK3Jbva3rC6Pbz-image-1657417378667-42-00.png)
10、**删硬盘和光驱**
- 【未使用的磁盘0】
- 点击【删除】
- 【CD/DVD驱动器(ide2)】
- 点击【删除】
[](http://book.321jr.com/uploads/images/gallery/2022-07/qGqzmpwyNc7AqldM-image-1657417512531-44-23.png)
#### **添加启动盘**
**1、终端登入PVE**
- `ssh root@192.168.2.5`
[](http://book.321jr.com/uploads/images/gallery/2022-07/isgRzVNcmo0iZbYE-image-1657417897732-50-35.png)
- `cd /root/`
- `qm importdisk 100 openwrt.vmdk local-lvm --format=qcow2`
**2、导入成功后在‘Openwrt’虚拟机的“硬件”选项卡就能看到一个“未使用的磁盘0”,选中它点击编辑,弹出配置窗口,设备类型选“sata”,最后点击添加。**
[](https://cdn.10bests.com/wp-content/uploads/2020/04/PVE%E5%AE%89%E8%A3%85OpenwrtLEDE%E8%BD%AF%E8%B7%AF%E7%94%B1%E6%95%99%E7%A8%8B14.jpg?x-oss-process=image/resize,m_fill,w_1600,h_1334/format,webp)
**3、切换到虚拟机的“选项”选项卡,双击“引导顺序”,第一引导项选“Disk ‘sata0’”。**
[](https://cdn.10bests.com/wp-content/uploads/2020/04/PVE%E5%AE%89%E8%A3%85OpenwrtLEDE%E8%BD%AF%E8%B7%AF%E7%94%B1%E6%95%99%E7%A8%8B15.jpg?x-oss-process=image/resize,m_fill,w_1430,h_960/format,webp)
#### **添加虚拟网卡**
**1、添加虚拟网卡到虚拟机**
- 选择“Openwrt”虚拟机
- - 硬件【添加 > 网络设备】
- 桥接选【vmbr1】
- 网卡模型选【Virto】
- 点击【添加】
[](http://book.321jr.com/uploads/images/gallery/2022-07/q7tl1i8LOgW6Xvyt-image-1657243242031.png)
# PVE 网络命令
**网络配置**
```
/etc/network/interfaces
```
**IP 地址**
```
vi /etc/issue
vi /etc/hosts
```
**修改hosts**
```
etc/hosts
```
**修改dns**
```
/etc/resolv.conf
```
**重启网络接口和web管理服务**
```
/etc/init.d/networking restart
service pveproxy restart
```
**ip a**
ip命令取代了ifconfig命令。上面的命令“ip a”将列出检测到的所有网络适配器,并显示它们的状态(向上/向下)。
**ifup**
ifup命令将调出(激活)(在线)特定的网络适配器。
**ifdown**
ifup命令将带下(停用)(离线)特定的网络适配器。
上面的命令也适用于虚拟/绑定适配器,例如vmbr0。
**接口配置列表的位置**
如果您想编辑接口列表,您可以在这里找到它们:
**/etc/network/接口**
只需使用这样的nano命令即可进行编辑:
**nano /etc/network/接口**
**安装网络工具**
如果您不想处理必须记住的新命令,如“ip a”等......也许您只是想安装您习惯于ifconfig的相同网络命令,只需键入以下命令即可安装它们:
**apt-get更新**
**安装网络工具**
# PVE 开启 ipv6
Proxmox安装后默认没有通过SLAAC配置公网ipv6地址,使用debian/ubuntu的方法配置ipv6提示错误不支持的方法auto。
原来Proxmox使用的是ifupdown2,非debian/ubuntu使用ifupdown。
查看内核也已经开启ipv6自动配置:
1
2
3
4
`cat` `/proc/sys/net/ipv6/conf/vmbr0/accept_ra`
`1`
`cat` `/proc/sys/net/ipv6/conf/vmbr0/autoconf`
`1`
查看已开启ipv6转发:
1
2
`cat` `/proc/sys/net/ipv6/conf/vmbr0/forwarding`
`1`
需要将accept\_ra值改成2才能自动配置SLAAC ipv6地址:
1
2
3
4
5
6
7
`/etc/sysctl.conf`
`net.ipv6.conf.all.accept_ra=2`
`net.ipv6.conf.default.accept_ra=2`
`net.ipv6.conf.vmbr0.accept_ra=2`
`net.ipv6.conf.all.autoconf=1`
`net.ipv6.conf.default.autoconf=1`
`net.ipv6.conf.vmbr0.autoconf=1`
# PVE 无法关闭虚拟机解决办法
**通过 ps命令查看对应 VM进程**
```
ps -ef|grep "/usr/bin/kvm -id 101"|grep -v grep
```
- 这里查找到的进程ID是20582
[](http://book.321jr.com/uploads/images/gallery/2022-07/c8kfIYwXsLlFbdof-image-1658102529562.png)
- 将这个进程杀掉
```
kill 20582
```
# 强制停止 VM
- 查询 VMID运行 PID号
```
ps aux | grep "/usr/bin/kvm -id VMID"
```
- 停止 PID运行
```
kill -9 PID
```
# Cloud images
# Cloud images
#### Cloud images
在下载ubuntu镜像的时候,官网会提供4个版本。ubuntu desktop & ubuntu server& ubuntu Iot。故名思意,一个是桌面版,带GUI;一个是服务器版本,不带gui,一个是物联网版本。而剩下的一个版本就是cloud images
[](http://book.321jr.com/uploads/images/gallery/2022-03/U7QnItMpUp3ubza9-image-1646722229432-50-23.png)
#### Cloud images 是一个什么样的镜像?
- 1、使用对象:cloud images是面向公有云用户,也即是aws/Azure/GCP/阿里云/腾讯云这种云服务器上。能够二次定制、批量部署,适用于虚拟机环境。
- 2、文件格式。cloud images就是一个虚拟磁盘镜像,通常为raw/vmdk/qcow2/img。不同于一般发行版为iso格式。
- 3、功能。和server版本无大的区别,但是cloud images精简了server版本无用的软件包,体积更小,性能消耗更小。
- 4、安装。cloud images 不同于其他版本使用iSO安装,cloud images是直接将磁盘镜像文件挂载到虚拟机上。通过cloud-init组件,自动下发root账号密码,不需要手动创建账号,开机就用。能够快速部署。完美适用于虚拟环境。
#### Cloud images 怎么用
cloud images可以用在hyperv /esxi/xen/openstak/kvm上。
具体平台请参见虚拟化平台说明。我这边目前就列出来了一个proxmox ve
PVE cloud images 部署[https://foxi.buduanwang.vip/virtualization/pve/388.html/](https://foxi.buduanwang.vip/virtualization/pve/388.html/)
#### 在Proxmox VE pve里使用cloud-init 构建(centos\\ubuntu\\debian)cloud images
cloud images是各个发行版专门推出的面向公有云的镜像,例如openstack、ec2等等
#### cloud images下载地址
**centos:**
[http://cloud.centos.org/centos/](http://cloud.centos.org/centos/)
**ubuntu:** [http://cloud-images.ubuntu.com/releases/](http://cloud-images.ubuntu.com/releases/)
**debian:**
[https://cloud.debian.org/images/cloud/OpenStack/](https://cloud.debian.org/images/cloud/OpenStack/)
**fedora:** [https://alt.fedoraproject.org/cloud/](https://alt.fedoraproject.org/cloud/)
**rehat7:** [https://access.redhat.com/downloads/content/69/ver=/rhel---7/x86\_64/product-downloads](https://access.redhat.com/downloads/content/69/ver=/rhel---7/x86_64/product-downloads)
**opensuse:** [https://software.opensuse.org/distributions/leap#JeOS-ports](https://software.opensuse.org/distributions/leap#JeOS-ports)
国内分流下载 [cloud images 国内分流下载](https://foxi.buduanwang.vip/linux/555.html/)
我这里因为需求不大。就下了前3。做了下图的模板
[](http://book.321jr.com/uploads/images/gallery/2022-03/rgyGVDUhp67HR1sJ-image-1646722799744-59-35.png)
- [cloud images下载地址](https://foxi.buduanwang.vip/virtualization/pve/388.html/#cloud-images%E4%B8%8B%E8%BD%BD%E5%9C%B0%E5%9D%80)
- [第一步:下载cloud镜像](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E4%B8%80%E6%AD%A5%EF%BC%9A%E4%B8%8B%E8%BD%BDcloud%E9%95%9C%E5%83%8F)
- [第二步:导入cloud镜像到pve](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E4%BA%8C%E6%AD%A5%EF%BC%9A%E5%AF%BC%E5%85%A5cloud%E9%95%9C%E5%83%8F%E5%88%B0pve)
- [第三步:创建虚拟机](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E4%B8%89%E6%AD%A5%EF%BC%9A%E5%88%9B%E5%BB%BA%E8%99%9A%E6%8B%9F%E6%9C%BA)
- [第四步:为vm导入cloud镜像](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E5%9B%9B%E6%AD%A5%EF%BC%9A%E4%B8%BAvm%E5%AF%BC%E5%85%A5cloud%E9%95%9C%E5%83%8F)
- [第五步:设置引导顺序](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E4%BA%94%E6%AD%A5%EF%BC%9A%E8%AE%BE%E7%BD%AE%E5%BC%95%E5%AF%BC%E9%A1%BA%E5%BA%8F)
- [第六步:配置cloudinit](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E5%85%AD%E6%AD%A5%EF%BC%9A%E9%85%8D%E7%BD%AEcloudinit)
- [第七步:开机试试](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E4%B8%83%E6%AD%A5%EF%BC%9A%E5%BC%80%E6%9C%BA%E8%AF%95%E8%AF%95)
- [第八步:支持使用密码登录](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E5%85%AB%E6%AD%A5%EF%BC%9A%E6%94%AF%E6%8C%81%E4%BD%BF%E7%94%A8%E5%AF%86%E7%A0%81%E7%99%BB%E5%BD%95)
- [第九步:扩容试试](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E4%B9%9D%E6%AD%A5%EF%BC%9A%E6%89%A9%E5%AE%B9%E8%AF%95%E8%AF%95)
- [第十步:将vm克隆成模板——然后就可以链接克隆。不断创建vm了](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E5%8D%81%E6%AD%A5%EF%BC%9A%E5%B0%86vm%E5%85%8B%E9%9A%86%E6%88%90%E6%A8%A1%E6%9D%BF%E2%80%94%E2%80%94%E7%84%B6%E5%90%8E%E5%B0%B1%E5%8F%AF%E4%BB%A5%E9%93%BE%E6%8E%A5%E5%85%8B%E9%9A%86%E3%80%82%E4%B8%8D%E6%96%AD%E5%88%9B%E5%BB%BAvm%E4%BA%86)
#### 第一步:下载cloud镜像
我这里直接用迅雷下载了ubuntu18.04。也可以用wget 直接在pve里下载镜像。镜像都是直链。
#### 第二步:导入cloud镜像到pve
如果上一步是wget,就不用导入了,如果是迅雷的话,可以smb共享到PVE母鸡去。
#### 第三步:创建虚拟机
创建一个vm。注意必须是VirtIO SCSI
[](http://book.321jr.com/uploads/images/gallery/2022-03/SCUCeHmJbBjH2jIg-image-1646722888512-01-15.png)
接着移除原来的硬盘。先分离再删除
并且添加,【usb设备】,【串口设备】,【cloudinit Drive】
[](http://book.321jr.com/uploads/images/gallery/2022-03/WegbmM3RLIGzjCCm-image-1646722920075-01-55.png)
#### 第四步:为vm导入cloud镜像
切换到cloud镜像所在的目录
重命名下cloud镜像,方便点。
```
```
```
mv ubuntu-18.04-server-cloudimg-amd64.vmdk ubuntu18.04.vmdk
```
为vm添加这个cloud镜像(命令语法见<[为pve导入磁盘镜像](https://foxi.buduanwang.vip/virtualization/372.html/)>)
```
```
```
qm importdisk 101 ubuntu18.04.vmdk NVME --format=qcow2
```
成功之后,pve面板的vm硬件里会出现磁盘,这时是未使用的
[](http://book.321jr.com/uploads/images/gallery/2022-03/im2TWqyZDs0DGC7H-image-1646723025041-03-39.png)
双击这个未使用磁盘即可使用(注意最好选择scsi)
[](http://book.321jr.com/uploads/images/gallery/2022-03/04PmbHJj0Gm5U380-image-1646723047067-04-02.png)
#### 第五步:设置引导顺序
在vm的配置页面。【选项】——【引导顺序】——【引导设备选择刚才导入的磁盘】
[](http://book.321jr.com/uploads/images/gallery/2022-03/D8Gpdx3io4ZGAXGc-image-1646723150898-04-27.png)
#### 第六步:配置cloudinit
[](http://book.321jr.com/uploads/images/gallery/2022-03/l88JEsTe2Vj6dagf-image-1646723219965-06-55.png)
【用户】:即用户
【密码】:即用户密码
【dns域和dns服务器】:即dns。如果有dhcp可忽略。设置了就是静态dns
【SSH公钥】:就是ssh公钥,可以通过xshell生成,具体可见【[xshell生成ssh-key](https://foxi.buduanwang.vip/windows/395.html/)】
【ip设置】:可以在这里设置ip,或者dhcp。
配置完成如下
[](http://book.321jr.com/uploads/images/gallery/2022-03/jaQab98tw65Q5KLQ-image-1646723295612-08-09.png)
其中cloudinit会使vm的名字作为主机名
#### 第七步:开机试试
[](http://book.321jr.com/uploads/images/gallery/2022-03/xXvmwF060AshQmzL-image-1646723333040.png)
启动正常
[](http://book.321jr.com/uploads/images/gallery/2022-03/ZmZorLZNtoJKasxU-image-1646723364691.png)
[](https://img.buduanwang.vip/images/2020/02/29/d559cf5ea78a5c9e8ab766e8f32ee5c1.jpg)root账号密码登录正常
[](http://book.321jr.com/uploads/images/gallery/2022-03/7pxhzhPWmMOxjwNQ-image-1646723420558.png)
[](https://img.buduanwang.vip/images/2020/02/29/63738ba911724945c06e86b0c1a3d1b7.jpg)在连接的时候,xshell需要选择和公钥对应的密钥以及密码
[](http://book.321jr.com/uploads/images/gallery/2022-03/42C1quPFckLqQVE8-image-1646723439103.png)
[](https://img.buduanwang.vip/images/2020/02/29/a27111a1c3520c195a5f789605fbb00a.jpg)登陆成功
#### 第八步:支持使用密码登录
修改sshd\_config
```
```
```
vi /etc/ssh/sshd_config
```
```
修改PermitRootLogin yes
```
```
修改PasswordAuthentication yes
```
重启ssh服务
[](http://book.321jr.com/uploads/images/gallery/2022-03/UNJ099l0qZhAOH7T-image-1646723477352.png)
#### 第九步:扩容试试
将vm关机,把硬盘增加10G
[](http://book.321jr.com/uploads/images/gallery/2022-03/6sBPdbSz5f3wObxr-image-1646723500520.png)
再开机
[](http://book.321jr.com/uploads/images/gallery/2022-03/65f9vmDU3xAa1sXM-image-1646723517489.png)
[](https://img.buduanwang.vip/images/2020/02/29/1a23c9a9c434e672a4cea1af65baa3b3.jpg)已经看到扩容成功
#### 第十步:将vm克隆成模板——然后就可以链接克隆。不断创建vm了
[更多Proxmox VE使用教程](https://foxi.buduanwang.vip/pve/)
# Pve Cloud-init 构建
#### Cloud images下载地址
**centos:**
[http://cloud.centos.org/centos/](http://cloud.centos.org/centos/)
**ubuntu:** [http://cloud-images.ubuntu.com/releases/](http://cloud-images.ubuntu.com/releases/)
**debian:**
[https://cloud.debian.org/images/cloud/OpenStack/](https://cloud.debian.org/images/cloud/OpenStack/)
**fedora:** [https://alt.fedoraproject.org/cloud/](https://alt.fedoraproject.org/cloud/)
**rehat7:** [https://access.redhat.com/downloads/content/69/ver=/rhel---7/x86\_64/product-downloads](https://access.redhat.com/downloads/content/69/ver=/rhel---7/x86_64/product-downloads)
**opensuse:** [https://software.opensuse.org/distributions/leap#JeOS-ports](https://software.opensuse.org/distributions/leap#JeOS-ports)
## 创建一个虚拟机
**这里的名称,会自动作为本次操作系统的计算机名称**
 设置虚拟机名称
 不使用任何介质
 勾选QEMU代理
**这里默认即可,一会是要删除这个硬盘的**
 保持默认。
一路走下去,到完成。
**先分离硬盘,再删除**
 分离硬盘
 删除硬盘
# 下载并转换镜像
下载镜像,通过SSH登录到母机上;进入镜像的存放目录或者使用Web页面的下载镜像功能也可以;但是之后的转换云镜像为磁盘的操作需要命令行来完成。
如果你没有添加过额外的存储,那么默认路径在 `/var/lib/vz/template/iso` 目录下;以Ubuntu为例;使用 `qm` 命令将下载的云镜像文件转为一个磁盘文件;我这里添加了 `/raid0` 目录存储虚拟机和镜像文件;
**bug:使用ubuntu-20.04-server-cloudimg-amd64-disk-kvm.img这个镜像或开机会提示attempting initrdless boot;所以得下载不带KVM关键字的镜像;至少这个日期版本(20211004)是有问题的。**
```bash
# 下载镜像
wget https://cloud-images.ubuntu.com/releases/focal/release-20211004/ubuntu-20.04-server-cloudimg-amd64.img
# 转换云镜像为虚拟磁盘
qm importdisk 104 ubuntu-20.04-server-cloudimg-amd64.img raid0 --format=qcow2
# 104 为虚拟机的ID
# raid0 为存储的名称,如果没有额外存储,则默认是local
# --format=qcow2 为转换后的格式
# 看到Successfully,转换完成
Successfully imported disk as 'unused0:raid0:104/vm-104-disk-0.qcow2'
```
**CentOS的Cloud Image提供了qcow2格式,则无需使用--format参数**
**回到虚拟机“硬件”页面;多了一块“未使用的磁盘0”;双击后,点击添加。**
 添加新硬盘
**这里初始磁盘容量比较小,可以点击磁盘“调整磁盘大小”;显示的是MB,增量的是GB。**
 调整磁盘大小
**再点击“添加”Cloud-Init设备。**
 添加Cloud-Init设备
**选择存储和SCSI ID为1,创建**
 设置添加的Cloud-Init设备
***由于刚刚删除了磁盘,所以启动选项里为空,这时候需要勾选一下刚刚添加的新磁盘为启动盘。勾选“scsi0”并拖拽到第一个,或者取消其他的,只保留scsi0也可以。***
**光驱默认是IDE接口,可以把它删除了,重新添加为SCSI 2;选项为“不使用任何介质”。**
 这个时候就可以设置Cloud-Init选项了;由于我们使用的是Ubuntu,则这里不能设置用户为“root”,因为这个账户Ubuntu默认禁用;如果有需要,可以在之后的启动后开启root,再生成模板。
 在继续填写SSH公钥(可以加载文件)和IP配置,这个时候网卡的Mac地址已经生成,IP配置的选项为DHCP和Static。这些就绪之后,就可以启动这个系统了。
## 配置模板系统
1. 设置时区
```bash
sudo timedatectl set-timezone Asia/Shanghai
```
2\. 设置APT仓库源
```bash
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
```
3\. 安装软件或更新系统
```bash
# 更新源和安装常用软件
sudo apt update && sudo apt install vim bash-completion -y
# 安装qemu代理
sudo apt install qemu-guest-agent -y
sudo systemctl enable --now qemu-guest-agent
# 更新系统
sudo apt upgrade
```
[](http://book.321jr.com/uploads/images/gallery/2022-07/37gHF7gH1aXV65NI-image-1656674007483.jpeg)
4\. 修改SSH配置;(有必要)
```bash
# 开启root登录(如果需要的话;这里开启了之后Cloud-Init用户就可以设置root)
PermitRootLogin yes
# 开启密钥登录
PubkeyAuthentication yes
# 密钥路径
AuthorizedKeysFile
# 开启密码登录(默认只允许密钥登录)
PasswordAuthentication yes
# 不允许空密码登录
PermitEmptyPasswords no
# 关闭连接的DNS解析
UseDNS no
```
5\. 清理缓存
```bash
sudo apt autoclean all
```
6\. 其他自定义配置
关机,转换为模板,就可以了。
#### [源地址](https://www.cpci.dev/pve-cloud-init-and-cloud-image/amp/)
#### [源地址2](https://www.cpci.dev/pve-cloud-init-and-cloud-image/amp/)
# PVE 里使用Cloud-init 构建(centos\ubuntu\debian)Cloud images
#### 在Proxmox VE pve里使用cloud-init 构建(centos\\ubuntu\\debian)cloud images
cloud images是各个发行版专门推出的面向公有云的镜像,例如openstack、ec2等等
#### cloud images下载地址
**centos:**
[http://cloud.centos.org/centos/](http://cloud.centos.org/centos/)
**ubuntu:** [http://cloud-images.ubuntu.com/releases/](http://cloud-images.ubuntu.com/releases/)
**debian:**
[https://cloud.debian.org/images/cloud/OpenStack/](https://cloud.debian.org/images/cloud/OpenStack/)
**fedora:** [https://alt.fedoraproject.org/cloud/](https://alt.fedoraproject.org/cloud/)
**rehat7:** [https://access.redhat.com/downloads/content/69/ver=/rhel---7/x86\_64/product-downloads](https://access.redhat.com/downloads/content/69/ver=/rhel---7/x86_64/product-downloads)
**opensuse:** [https://software.opensuse.org/distributions/leap#JeOS-ports](https://software.opensuse.org/distributions/leap#JeOS-ports)
国内分流下载 [cloud images 国内分流下载](https://foxi.buduanwang.vip/linux/555.html/)
我这里因为需求不大。就下了前3。做了下图的模板
[](http://book.321jr.com/uploads/images/gallery/2022-03/ijjAdZ0mFThUD9nA-image-1646968726179.png)
- [cloud images下载地址](https://foxi.buduanwang.vip/virtualization/pve/388.html/#cloud-images%E4%B8%8B%E8%BD%BD%E5%9C%B0%E5%9D%80)
- [第一步:下载cloud镜像](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E4%B8%80%E6%AD%A5%EF%BC%9A%E4%B8%8B%E8%BD%BDcloud%E9%95%9C%E5%83%8F)
- [第二步:导入cloud镜像到pve](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E4%BA%8C%E6%AD%A5%EF%BC%9A%E5%AF%BC%E5%85%A5cloud%E9%95%9C%E5%83%8F%E5%88%B0pve)
- [第三步:创建虚拟机](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E4%B8%89%E6%AD%A5%EF%BC%9A%E5%88%9B%E5%BB%BA%E8%99%9A%E6%8B%9F%E6%9C%BA)
- [第四步:为vm导入cloud镜像](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E5%9B%9B%E6%AD%A5%EF%BC%9A%E4%B8%BAvm%E5%AF%BC%E5%85%A5cloud%E9%95%9C%E5%83%8F)
- [第五步:设置引导顺序](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E4%BA%94%E6%AD%A5%EF%BC%9A%E8%AE%BE%E7%BD%AE%E5%BC%95%E5%AF%BC%E9%A1%BA%E5%BA%8F)
- [第六步:配置cloudinit](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E5%85%AD%E6%AD%A5%EF%BC%9A%E9%85%8D%E7%BD%AEcloudinit)
- [第七步:开机试试](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E4%B8%83%E6%AD%A5%EF%BC%9A%E5%BC%80%E6%9C%BA%E8%AF%95%E8%AF%95)
- [第八步:支持使用密码登录](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E5%85%AB%E6%AD%A5%EF%BC%9A%E6%94%AF%E6%8C%81%E4%BD%BF%E7%94%A8%E5%AF%86%E7%A0%81%E7%99%BB%E5%BD%95)
- [第九步:扩容试试](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E4%B9%9D%E6%AD%A5%EF%BC%9A%E6%89%A9%E5%AE%B9%E8%AF%95%E8%AF%95)
- [第十步:将vm克隆成模板——然后就可以链接克隆。不断创建vm了](https://foxi.buduanwang.vip/virtualization/pve/388.html/#%E7%AC%AC%E5%8D%81%E6%AD%A5%EF%BC%9A%E5%B0%86vm%E5%85%8B%E9%9A%86%E6%88%90%E6%A8%A1%E6%9D%BF%E2%80%94%E2%80%94%E7%84%B6%E5%90%8E%E5%B0%B1%E5%8F%AF%E4%BB%A5%E9%93%BE%E6%8E%A5%E5%85%8B%E9%9A%86%E3%80%82%E4%B8%8D%E6%96%AD%E5%88%9B%E5%BB%BAvm%E4%BA%86)
#### 第一步:下载cloud镜像
我这里直接用迅雷下载了ubuntu18.04。也可以用wget 直接在pve里下载镜像。镜像都是直链。
#### 第二步:导入cloud镜像到pve
如果上一步是wget,就不用导入了,如果是迅雷的话,可以smb共享到PVE母鸡去。
#### 第三步:创建虚拟机
创建一个vm。注意必须是VirtIO SCSI
[](http://book.321jr.com/uploads/images/gallery/2022-03/8KvbW2YZALm9xFg6-image-1646968739144.png)
接着移除原来的硬盘。先分离再删除
并且添加,【usb设备】,【串口设备】,【cloudinit Drive】
[](http://book.321jr.com/uploads/images/gallery/2022-03/H0p30Wh4mQevduKm-image-1646968755865.png)
#### 第四步:为vm导入cloud镜像
切换到cloud镜像所在的目录
重命名下cloud镜像,方便点。
```
```
```
mv ubuntu-18.04-server-cloudimg-amd64.vmdk ubuntu18.04.vmdk
```
为vm添加这个cloud镜像(命令语法见<[为pve导入磁盘镜像](https://foxi.buduanwang.vip/virtualization/372.html/)>)
```
```
```
qm importdisk 101 ubuntu18.04.vmdk NVME --format=qcow2
```
成功之后,pve面板的vm硬件里会出现磁盘,这时是未使用的
[](http://book.321jr.com/uploads/images/gallery/2022-03/qWHe70jOCc2Waqqy-image-1646968769472.png)
双击这个未使用磁盘即可使用(注意最好选择scsi)
[](http://book.321jr.com/uploads/images/gallery/2022-03/9zb0MT2JiMDgjmLn-image-1646968783159.png)
#### 第五步:设置引导顺序
在vm的配置页面。【选项】——【引导顺序】——【引导设备选择刚才导入的磁盘】
[](http://book.321jr.com/uploads/images/gallery/2022-03/el2MYHSsEzKJvsqY-image-1646968796058.png)
#### 第六步:配置cloudinit
[](http://book.321jr.com/uploads/images/gallery/2022-03/YiLfPpWLL4uOMuXF-image-1646968805569.png)
【用户】:即用户
【密码】:即用户密码
【dns域和dns服务器】:即dns。如果有dhcp可忽略。设置了就是静态dns
【SSH公钥】:就是ssh公钥,可以通过xshell生成,具体可见【[xshell生成ssh-key](https://foxi.buduanwang.vip/windows/395.html/)】
【ip设置】:可以在这里设置ip,或者dhcp。
配置完成如下
[](http://book.321jr.com/uploads/images/gallery/2022-03/jpH0BqJwn0Aji8BM-image-1646968815218.png)
其中cloudinit会使vm的名字作为主机名
#### 第七步:开机试试
[](http://book.321jr.com/uploads/images/gallery/2022-03/v3LG3NH3kzbMBa4v-image-1646968829867.png)
启动正常
[](http://book.321jr.com/uploads/images/gallery/2022-03/SiTT94sP6tDTvHZZ-image-1646968869125.png)
[](https://img.buduanwang.vip/images/2020/02/29/d559cf5ea78a5c9e8ab766e8f32ee5c1.jpg)root账号密码登录正常 [](http://book.321jr.com/uploads/images/gallery/2022-03/JAqvAfziWZ69dNc6-image-1646968894118.png)
[](https://img.buduanwang.vip/images/2020/02/29/63738ba911724945c06e86b0c1a3d1b7.jpg)在连接的时候,xshell需要选择和公钥对应的密钥以及密码 [](http://book.321jr.com/uploads/images/gallery/2022-03/gxWG7PcelzzdgorY-image-1646968914924.png)
[](https://img.buduanwang.vip/images/2020/02/29/a27111a1c3520c195a5f789605fbb00a.jpg)登陆成功 #### 第八步:支持使用密码登录
修改sshd\_config
```
```
```
vi /etc/ssh/sshd_config
```
```
修改PermitRootLogin yes
```
```
修改PasswordAuthentication yes
```
重启ssh服务
[](http://book.321jr.com/uploads/images/gallery/2022-03/AvH1IYwJoZZR19ZX-image-1646968935178.png)
#### 第九步:扩容试试
将vm关机,把硬盘增加10G
[](http://book.321jr.com/uploads/images/gallery/2022-03/2oUlswqHX5j5AtCY-image-1646968944633.png)
再开机
[](http://book.321jr.com/uploads/images/gallery/2022-03/w8dZxRRJ6BmM1jrf-image-1646968957338.png)
#### 第十步:将vm克隆成模板——然后就可以链接克隆。不断创建vm了
[更多Proxmox VE使用教程](https://foxi.buduanwang.vip/pve/)
# Ubuntu 使用方法
# 远程桌面访问
#### **教程中将学习**
- 如何在 Ubuntu 上共享桌面
- 如何打开 Windows 10 客户端
- 如何远程连接到 Ubuntu 桌面共享
[](https://linuxconfig.org/wp-content/uploads/2020/02/06-ubuntu-20-04-remote-desktop-access-from-windows-10.png "来自 Windows 10 的 Ubuntu 20.04 远程桌面访问")
来自 Windows 10 的 Ubuntu 20.04 远程桌面访问
## 使用的软件要求和约定
软件要求和 Linux 命令行约定 类别 使用的要求、约定或软件版本 系统 [安装 Ubuntu 20.04](https://linuxconfig.org/how-to-install-ubuntu-20-04-focal-fossa-desktop)或[升级 Ubuntu 20.04 Focal Fossa](https://linuxconfig.org/how-to-upgrade-ubuntu-to-20-04-lts-focal-fossa) 软件 不适用 其他 `sudo`以 root 身份或通过命令特权访问您的 Linux 系统。 约定 **\#** – 要求给定的[linux 命令](https://linuxconfig.org/linux-commands)以 root 权限直接作为 root 用户或使用`sudo`命令执行
**$** – 要求给定的[linux 命令](https://linuxconfig.org/linux-commands)以普通非特权用户的身份执行
## Windows 10 的 Ubuntu 20.04 远程桌面分步说明
1. 第一步是`xrdp`在 Ubuntu 20.04 桌面上安装远程桌面协议 (RDP) 服务器。为此,请执行以下命令: ```
$ sudo apt install xrdp
```
2. 重新启动后启用并运行远程桌面共享服务器`xrdp`: ```
$ sudo systemctl enable --now xrdp
```
3. 仍然在 Ubuntu 20.04 桌面上,为传入流量 [打开防火墙端口:](https://linuxconfig.org/how-to-open-allow-incoming-firewall-port-on-ubuntu-20-04-focal-fossa) `3389````
$ sudo ufw 允许从任何到任何端口 3389 proto tcp
```
1. 移动到 Windows 10 主机并打开远程桌面连接客户端。使用搜索框搜索`remote`关键字并单击`Open`按钮。 [](https://linuxconfig.org/wp-content/uploads/2020/02/01-ubuntu-20-04-remote-desktop-access-from-windows-10.png "移动到 Windows 10 主机并打开远程桌面连接客户端。")
移动到 Windows 10 主机并打开远程桌面连接客户端。
- - - - - -
- - - - - -
2. 输入 Ubuntu 的远程桌面共享 IP 地址或主机名。或者,允许 Windows 10 保存您的凭据。 [](https://linuxconfig.org/wp-content/uploads/2020/02/02-ubuntu-20-04-remote-desktop-access-from-windows-10.png "输入 Ubuntu 的远程桌面共享 IP 地址或主机名")
3. `Yes`消息提示时单击: `The identity of the remote computer cannot be verified`。 [](https://linuxconfig.org/wp-content/uploads/2020/02/03-ubuntu-20-04-remote-desktop-access-from-windows-10.png "无法验证远程计算机的身份")
4. 输入远程 Ubuntu 用户的密码。 [](https://linuxconfig.org/wp-content/uploads/2020/02/04-ubuntu-20-04-remote-desktop-access-from-windows-10.png "输入远程 Ubuntu 用户的密码。")
5. 您现在应该从 Windows 10 计算机远程连接到 Ubuntu 桌面共享。
- - - - - -
- - - - - -
[](https://linuxconfig.org/wp-content/uploads/2020/02/05-ubuntu-20-04-remote-desktop-access-from-windows-10.png "您现在应该从 Windows 10 计算机远程连接到 Ubuntu 桌面共享。")
## 从 Windows 到 Ubuntu 20.04 的远程桌面故障排除
### Xrdp 黑屏
[](https://linuxconfig.org/wp-content/uploads/2020/02/07-ubuntu-20-04-remote-desktop-access-from-windows-10.png "xrdp黑屏bug")
在启动与 Xrdp 远程桌面协议 (RDP) 服务器的远程连接后,我有时会收到黑屏。虽然我不确定如何完全解决这个问题,但在建立远程连接之前从 Ubuntu 桌面注销至少暂时解决了这个问题。
# 安装图形界面
有多种方法可以在 Ubuntu 20.04 上安装 GUI。最简单的方法之一是使用一个名为 **tasksel **的工具,它通过自动安装正确的窗口管理器和其他包依赖项来为我们简化流程。
1. 首先更新 apt 包索引并使用这些[Linux 命令](https://linuxconfig.org/linux-commands) `tasksel`安装该工具。 ```
$ sudo apt 更新
$ sudo apt install tasksel
```
2. 接下来,选择您要安装的 GUI。下表显示了可通过以下方式安装的主要桌面环境 `tasksel`:
使用 tasksel 的任务的主要可用图形用户界面 (GUI) 安装 任务 描述 kubuntu-桌面 Kubuntu 桌面(KDE 桌面) lubuntu-桌面 Lubuntu 桌面(LXQt 桌面) ubuntu-budgie-桌面 Ubuntu Budgie 桌面 ubuntu-桌面 Ubuntu 桌面(默认 GNOME) ubuntu-桌面-最小 Ubuntu 最小桌面(默认 GNOME) ubuntu-mate-桌面 Ubuntu MATE 桌面 ubuntustudio-桌面 Ubuntu Studio 桌面(基于 Xfce 的桌面) ubuntustudio-桌面核心 Ubuntu Studio 最小 DE 安装(基于 Xfce 的桌面) xubuntu-桌面 Xubuntu 桌面(Xfce 桌面)
对于其他 GUI 选择,请执行以下命令:
```
$ tasksel --list-tasks
```
3. 选择要在 Ubuntu 上安装的 GUI 后,执行以下 `tasksel`命令。例如,我们将安装默认的 Ubuntu 桌面环境,即 GNOME。但是您可以更改此命令以匹配您自己的选择。 ```
$ sudo tasksel 安装 ubuntu-desktop
```
4. `tasksel`现在将开始下载并安装您选择的桌面环境所需的所有软件包。根据正在安装的 GUI,在安装过程中可能会提示您是否要更改系统的默认窗口管理器。 [](https://linuxconfig.org/wp-content/uploads/2020/02/02-ubuntu-20-04-gui-installation.png)从 tasksel 提示更改默认窗口管理器
5. 安装后,重新启动系统。 ```
$重启
```
6. 此时,GUI 应该启动。在登录之前,您可能需要在登录页面上选择所需的桌面风格。如果 GUI 根本没有启动,请确保您的系统启动到图形目标。为此,请执行: ```
$ sudo systemctl set-default graphics.target
```
# 安装步骤
从光盘启动后,安装程序将引导用户进行简单设置,并将系统安装到硬盘。 主要步骤如下:
### 语言
第一步是选择语言:
[](https://linux.fasionchan.com/zh_CN/latest/_images/a96324b9fc769ff7d1ff783e076de27f.png)
第一个选项是英语,按键可以将光标下移至其他选项。 选好语言后,按下回车即可进入下一设置环节。
推荐读者 **不妨选英语** 好了,理由有二:
1. 计算机发源于英语国家,英语能力是必须的;
2. 一些术语可能翻译得不是很准确,影响理解;
再说了,读了这么些年书,谁还不会个英语?
### 键盘
第二步进行键盘设置:
[](https://linux.fasionchan.com/zh_CN/latest/_images/b1ceb7b132d6a4c997f08c19fe061314.png)
对于普通电脑,按照默认选美式英语即可。
### 安装类型
第三步选择安装类型:
[](https://linux.fasionchan.com/zh_CN/latest/_images/c12dc19ce22c841dadc808e9a61438b4.png)
我们选择第一个,即安装 Ubuntu 服务器版。
### 网络
第四步进行网络设置:
[](https://linux.fasionchan.com/zh_CN/latest/_images/6a4c86ff8a9e511c2425ee6d34c7cdae.png)
这个界面显示电脑当前可用的网卡以及配置状态。 设置因网络环境而异:
1. 如果网络支持 DHCP ,系统将自动获取 IP 地址(如上图);
2. 如果网络使用静态 IP ,则需要填写 IP 地址、网关地址以及 DNS 服务器地址等;
接下来设置网络代理:
[](https://linux.fasionchan.com/zh_CN/latest/_images/752d0c535f371f8aa59d131f6af8d6ed.png)
如果不使用网络代理,留空即可。在这,我们直接点击回车进入下一环节。
### 磁盘分区
第六步是进行磁盘设置,这是 **非常关键** 也是 **比较危险** 的一步。
[](https://linux.fasionchan.com/zh_CN/latest/_images/f59adafc836a31d926dbdbbce781ba78.png)
这里有两种不同的选项:
1. 使用整块磁盘(系统将自动在磁盘上分区);
2. 手动设置;
#### 使用整块磁盘
在这个模式下,安装程序将按照默认分区策略定磁盘进行分区。 选择安装磁盘,这是一块 VirtualBox 虚拟磁盘:
[](https://linux.fasionchan.com/zh_CN/latest/_images/d757e37523da07f9daf76bd092974c1e.png)
安装程序自动设置两个分区:
[](https://linux.fasionchan.com/zh_CN/latest/_images/72eadd06cbaaf03d08dbf475b1f59f80.png)
分区一用于存放 grub 引导程序;分区二用于安装系统,挂载到根目录( `/ ` )。
确认无误后,点击回车,进入二次确认界面:
[](https://linux.fasionchan.com/zh_CN/latest/_images/ca5006055ca56e0ca79cb679c6d12252.png)
选择继续( `continue ` )并点击回车进入下一环节。
警告
将系统安装在物理磁盘上时要格外谨慎!
分区调整、格式化、安装系统时均可能清理数据。 因此做这类危险操作前,一定要先备份数据,以免造成不必要损失!
### 用户设置
在这个环节,配置一个用于登录系统的用户:
[](https://linux.fasionchan.com/zh_CN/latest/_images/1987c090487bdf01d7457f07d0ca1515.png)
需要填写的信息包括:
- 真实姓名
- 服务器名
- 用户名(用于登录,可以与真实姓名不同,简单好记即可)
- 密码
- 公钥(可选)
警告
用户名以及密码需要牢牢记住!
### 开始安装
[](https://linux.fasionchan.com/zh_CN/latest/_images/cf5353113f75fa61f25c15234cabfc47.png)
在这个环节,无须额外操作,耐心等待即可。
注意到,在 磁盘分区 环节设置完毕后,后台即开始进行安装了。 这是一个不错的改进,帮你节省一些时间。
### 重启
第九步进行重启。 走到这一步,也就意味着系统已经安装成功!
[](https://linux.fasionchan.com/zh_CN/latest/_images/5cdbaaa47017ce1150b7bd14d19ee832.png)
重启前,系统将自动弹出光盘:
[](https://linux.fasionchan.com/zh_CN/latest/_images/58a2525eb7ec4634b5dd8e79800c46d2.png)
点击回车确认后即可重启。 电脑重新启动后,即进入新装系统!
### 登录
系统启动完毕后,进入登录界面。 用户需要输入 **用户名** 以及 **密码** ,认证通过后方可进行操作:
[](https://linux.fasionchan.com/zh_CN/latest/_images/34f14f83a3eb65dfcc2440de267bd6df.png)
注解
注意到,密码输入时屏幕没有任何显示! 这是 Unix 的风格, **默念密码准确输入** 并按回车即可。
### Shell
成功登录系统后,进入 Shell 环境:
[](https://linux.fasionchan.com/zh_CN/latest/_images/d15fd6f9af44dbe725f78d352843e637.png)
在 Shell 中,用户可以输入一些命令,由系统执行并返回结果:
[](https://linux.fasionchan.com/zh_CN/latest/_images/e755e3795b5f9082b3a7a883ad2a05ea.png)
我们输入 ls 命令用于列举当前目录(家目录)下的所有文件及目录。 因为系统是新装的,我们没有看到任何文件存在。
我们通过 echo 将一句话( `Hello, welcome to Linux! ` )写入一个文件,名为 `first_file.txt ` 。 接着,我们用 `ls ` 确认,当前目录下确实存在 `first_file.txt ` 文件。
最后,我们用 `cat ` 命令将文件输出文件内容,确实是之前写进入的内容。 **欢迎来到 Linux 世界!**
# 网络
# 动态公网IP再利用
## 问题
- 这个公网IP为路由器WAN口所得,我可以让局域网内的服务主机供公网访问吗
- 利用路由器上的端口映射功能,将内网的8081映射到公网的8081
- 这个IP地址每天会更新一次,我要每次使用都需要查询一下吗
- 通过DDNS更新IP地址值到域名的A记录
- 我想做一个网站,80、443端口被运营商封了怎么办
- 通过服务器搭建的反向代理服务,将服务器上的80端口反向代理到公网IP的8081端口
## 端口映射
内网地址:192.168.188.205的所有端口,映射到外网接口的1-65536,all端口
[](https://img.llzdsec.com/ddns/%E6%88%AA%E5%B1%8F2022-04-23%20%E4%B8%8B%E5%8D%884.23.22.png)
映射成功后,比如192.168.188.205这台主机搭建了WEB服务在8088端口,此时,访问外网接口的8088端口就可以进行连接
## DDNS:
端口映射后,虽然可以达成访问需求,但是毕竟是动态公网IP,此地址每天都会更新,我们可以利用DDNS服务,定期检查现在公网,把这个地址自动写进DNS的域名解析A记录的值
### DDNS工作流程:
获取当前公网IP地址
通过API的ID与密码登录DNS控制台
修改配置文件里子域名的IP值
通过定时任务定时更新域名解析的值为当前公网IP
## 材料:
- 随便注册域名一个
- Linux主机或支持DDNS服务的路由器
我拿已经注册好的域名来做一个演示(DNSPod平台)
在控制台->我的域名->选择已有域名->增加记录
[](https://img.llzdsec.com/ddns/%E6%88%AA%E5%B1%8F2022-04-23%20%E4%B8%8B%E5%8D%885.14.11.png)
随便增加一个三级域名记录:xxx.llzdsec.com,类型为A记录,记录值随便填
[](https://img.llzdsec.com/ddns/%E6%88%AA%E5%B1%8F2022-04-23%20%E4%B8%8B%E5%8D%885.18.47.png)
## 获取控制台API
点击右上角头像->账号中心->API密钥->DNSPod Token
创建成功后,请记住ID与Token值,为API的账号与密码
[](https://img.llzdsec.com/ddns/%E6%88%AA%E5%B1%8F2022-04-23%20%E4%B8%8B%E5%8D%887.24.43.png)
## 编辑脚本
```
1 2
```
```
mkdir /ddns -m 777 vim /ddns/ddns.sh
```
BASH
修改`TOKEN`,`DOMAIN`,`SUB_DOMAIN`为实际值
```
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
```
```
#!/bin/bash TOKEN="112233,67fa231667a33de0f5255f62d33161eb" DOMAIN="yourdomain.com" SUB_DOMAIN="xxx" DATA="login_token=$TOKEN &format=json&domain=$DOMAIN &sub_domain=$SUB_DOMAIN &record_type=A&offset=0&length=3" JOSN_RECORDS=`curl -4 -s -X POST https://dnsapi.cn/Record.List -d $DATA ` RECORD_ID=`echo $JOSN_RECORDS |sed '/id/ s/.*id":"\(.*\)","ttl.*/\1/' ` LINE_ID=`echo $JOSN_RECORDS |sed '/line_id/ s/.*line_id":"\(.*\)","type.*/\1/' ` IP_RESOLVED=`echo $JOSN_RECORDS |sed '/value/ s/.*value":"\(.*\)","enabled.*/\1/' `
```
1 2 3
```
```
chmod ugo+x ./*.sh nslookup update.llzdsec.com curl ip.sb
```
BASH
## 定时执行
```
1 2
```
```
crontab -e */30 * * * * /bin/bash /liangzai/ddns.sh
```
BASH
## 反向代理
做完上面步骤后,已经可以通过域名的方式访问内网的WEB应用了,但是由于运营商封堵了80(http)和443(https)端口,导致要用到其他端口才可以访问:update.llzdsec.com:8088,加个端口会显得比较别扭,用反向代理可以很好解决
[](https://img.llzdsec.com/ddns/%E6%97%A0%E6%A0%87%E9%A2%98.png)
登录自己购买的服务器
在开始之前,先关闭阻止菜鸟前进的SElinux和防火墙
```
1 2 3
```
```
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/ selinux/config cat /etc/ selinux/config |grep ^SELINUX= setenforce 0
```
GRADLE
```
1 2
```
```
systemctl stop firewalld systemctl disable firewalld
```
BASH
### 安装配置
```
1
```
```
yum install nginx -y
```
BASH
```
1
```
```
vim /etc/nginx/conf.d/proxy.conf
```
BASH
```
1 2 3 4 5 6 7 8
```
```
server { listen 80; server_name test.llzdsec.com; location / { proxy_pass http://update.llzdsec.com:8088; } }
```
BASH
```
1
```
```
systemctl enable nginx -now
```
# 一个IP建多个Web站点--主机头名法
由于各种原因,我们有时候需要在一个IP地址上建立多个web站点,在IIS中,我们可能通过简单的设置达到这个目标。 在IIS中,每个 Web 站点都具有唯一的、由三个部分组成的标识,用来接收和响应请求: 1、IP地址 2、端口号 3、主机头名。 在IIS中,在一个IP地址上建立多个
由于各种原因,我们有时候需要在一个IP地址上建立多个web站点,在IIS中,我们可能通过简单的设置达到这个目标。
在IIS中,每个 Web 站点都具有唯一的、由三个部分组成的标识,用来接收和响应请求:
1、IP地址
2、端口号
3、主机头名。
在IIS中,在一个IP地址上建立多个独立的web站点,通常有两种方法,本文以以例子的形式介绍主机头法,使用这种方法可以建立起专业的虚拟主机。
环境:假设某公司用一台win2000服务器提供虚拟主机服务,地址是192.168.1.10。在这台服务器已经安装了Internet服务即IIS。
现在公司要求网络管理员在服务器上使用一个IP为A、B、C、D四个公司建立独立的网站,每个网站拥有自己独立的域名。四家网站域名分别为:www.a.com,www.b.com,www.c.com和www.d.com。
通过使用主机头,站点只需一个IP地址即可维护多个站点。客户可以使用不同的域名访问各自的站点,根本感觉不到这些站点在同一主机上。
具体操作如下:
1、在win2000服务器为四家公司建立文件夹,做为Web站点主目录。如下:
Web站点主目录
Web站点
d:\web\a
A公司网站
d:\web\b
B公司网站
d:\web\c
C公司网站
d:\web\d
D公司网站
2、使用WEB站点管理向导,分别四家公司建立独立的WEB站点,四者最大的不同是使用了不同的主机头名。
以下是个表格:
A公司网站
B公司网站
C公司网站
D公司网站
IP地址
192.168.1.10
TCP端口
80
权限
读取和运行脚本
主机头名
www.a.com
www.b.com
www.c.com
www.d.com
站点主目录
d:\web\a
d:\web\b
d:\web\c
d:\web\d
在DNS中将这四个域名注册上,均指向同一地址:192.168.1.10.这样,客户端就可以通过分配指定目录:
www.a.com 访问A公司站点
www.b.com 访问B公司站点
www.c.com 访问C公司站点
www.d.com 访问D公司站点
3、每个站点的主机头名可以在WEB站点建立向导中设置,它与站点的IP地址,TCP端口在同一屏上。也可能通过该站点->“属性”->“WEB站点”标签->选IP地址右边的"高级"按钮,跳出“高级多WEB站点配置”进行配置。
这种方法建立可以建立专业的虚拟主机,几乎所有使用IIS提供虚拟主机的公司都这样做的。
# 通过Nginx反向代理实现多个域名站点复用一个公网IP
大家都知道现在全球IPv4地址是稀缺资源,如果您的公司或自己的互联网相关应用需要对外提供服务,那么固定IP是必不可少的。申请一条带固定公网IP的互联网线路所提供的免费IP是有限的,如果需要扩充IP地址则需要增加月租费用,如果您要发布的域名及站点比较多的话,每个域名对应一个固定IP,那么就会增加您的成本,长久下来也是一笔不小的费用。
另外互联网站点通常为了增加应用的高可靠性以及横向的扩展性,通常会部署如F5、LVS、HAproxy或NGINX这类的反向代理(负载均衡)的硬件或软件在web服务器的前面,以实现四层、七层的负载均衡能力。
一、
对于有多个站点的情况,通常是通过二级域名来区分,比如说你有2个站点,你可以做2条DNS分别解析到2个不同的公网IP上。例如:
站点1: [http:// news.aaa.com ](https://link.zhihu.com/?target=http%3A//news.aaa.com) 192.168.50.123
站点2: [http:// sports.aaa.com ](https://link.zhihu.com/?target=http%3A//sports.aaa.com) 192.168.50.124
这样当用户请求[http:// news.aaa.com ](https://link.zhihu.com/?target=http%3A//news.aaa.com)及[http:// sports.aaa.com ](https://link.zhihu.com/?target=http%3A//sports.aaa.com)时,就会访问到对应的页面里,但这样就会消耗掉2个公网IP,如果你有N个站点,以此类推,你就需要N个公网IP地址。
 二、
有朋友会说,我可以通过IP+端口号的方式来区分我的站点啊,将2个不同的域名DNS解析为同一个公网IP,这样我也是可以复用我这个公网IP的,比如将192.168.50.123:80(默认端口)映射到[http:// news.aaa.com ](https://link.zhihu.com/?target=http%3A//news.aaa.com),将192.168.50.123:8080映射到[http:// sports.aaa.com ](https://link.zhihu.com/?target=http%3A//sports.aaa.com)这个站点,用户访问时则需要在浏览器输入
[http:// sports.aaa.com:8080 ](https://link.zhihu.com/?target=http%3A//sports.aaa.com%3A8080),这样也可以实现复用1个公网IP达到访问2个不同域名站点的需求。但问题是域名带了端口号之后对于用户体验就非常不友好了,对于小白用户来说8080端口号可能还容易敲错。对于内部用户还好,但是对于外部用户如果网站多加个端口号来访问并不太现实。
以上复用公网IP,用端口号区分网站的做法,将2个域名做DNS解析到同一个公网IP。
站点1: [http:// news.aaa.com ](https://link.zhihu.com/?target=http%3A//news.aaa.com) 192.168.50.123
站点2: [http:// sports.aaa.com ](https://link.zhihu.com/?target=http%3A//sports.aaa.com) 192.168.50.123
 三、
那有没有办法多域名多站点的情况下,通过同一个IP+80端口来访问呢?是有办法的,以下就以NGINX作为反向代理(负载均衡)为例介绍一下如何实现,其他硬件或软件也是同理的。主要是用到“虚拟主机”的这个功能,来实现公网IP的收敛。
首先NGINX作为反向代理需要使用七层代理模式(Nginx默认即为七层代理),大家知道http的请求是有http报文头的,在http报文头里有个字段叫做host,当我们用浏览器输入一个域名访问一个站点时,http request报文头里面就会插入对应的host域名,Nginx反向代理服务器则可以通过获取这个http request的报文头host字段,通过判断这个域名根据设定的转发规则,转发到相应的Web集群服务器里,并response对应的页面给到浏览器,这样就能够实现根据不同域名解析到同一个公网IP及端口的复用的场景,节省了公网IP的使用了。
 以下是Nginx里的具体配置及请求过程,其实配置是非常简单的,只要根据servername来proxy\_pass给不同的upstream即可(因网上已有大量讲解nginx反向代理及负载均衡的配置详解,这里具体配置参数的含义就不再赘述了)。
编辑nginx配置文件,vim /etc/nginx/nginx.conf
1、分别创建2个upstream,也就是后台真实服务器的pool,一个是news指向web服务器web服务器192.168.50.201,另外一个是sports,指向web服务器192.168.50.202;
2、分别创建2个server并监听80端口,其中一个设定servername为[http:// news.aaa.com ](https://link.zhihu.com/?target=http%3A//news.aaa.com),proxy\_pass转发到news这个upstream,另外一个设定为[http:// sports.aaa.com ](https://link.zhihu.com/?target=http%3A//sports.aaa.com),proxy\_pass转发到sports这个upstream;
3、Nginx反向代理对外发布的是192.168.50.123这个IP;
```text
http {
upstream news{
ip_hash;
server 192.168.50.201:80;
}
upstream sports{
ip_hash;
server 192.168.50.202:80;
}
server {
listen 80;
server_name news.aaa.com ;
location / {
proxy_pass http://news;
proxy_set_header Host $http_host;
}
}
server {
listen 80;
server_name sports.aaa.com;
location / {
proxy_pass http://sports;
proxy_set_header Host $http_host;
}
}
}
```
下面我们来测试一下,我自己的电脑模拟为客户端,并修改系统的hosts文件模拟DNS解析[http:// news.aaa.com ](https://link.zhihu.com/?target=http%3A//news.aaa.com)及[http:// sports.aaa.com ](https://link.zhihu.com/?target=http%3A//sports.aaa.com)解析到192.168.50.123这个IP地址,windows的hosts文件在这个目录下C:\\Windows\\System32\\drivers\\etc
  通过浏览器访问[http:// news.aaa.com ](https://link.zhihu.com/?target=http%3A//news.aaa.com)
  通过浏览器访问[http:// sports.aaa.com ](https://link.zhihu.com/?target=http%3A//sports.aaa.com)
  ## 以上,就实现了使用http报文头的host来选择转发到相应的节点,实现虚拟主机的功能。当然根据http报文头还可以使用很多的规则进行七层转发的操作。。
# WHOIS 数据
亲爱的贵重客户:
此消息提醒您,可帮助您使与域名注册关联的联系人数据保持最新状态。我们的记录包括以下信息:
域名:example.com
注册人姓名:IANA\_RESERVED
注册人:
名称:互联网号码分配局(IANA)
地址:4676 Admiralty Way, Suite 330
城市:Marina del Rey
州/省:CA
国家:美国
邮编:92092
行政联系人:
名称:互联网号码分配局(IANA)
地址:4676 Admiralty Way, Suite 330
城市:Marina del Rey
州/省:CA
国家:美国
邮编:92092
电话:[310-823-9358](tel:310-823-9358)
传真:[310-823-8649](tel:310-823-8649)
电子邮件:
技术联系人:
名称:互联网号码分配局(IANA)
地址:4676 Admiralty Way, Suite 330
城市:Marina del Rey
州/省:CA
国家:美国
邮编:92092
电话:[310-823-9358](tel:310-823-9358)
传真:[310-823-8649](tel:310-823-8649)
电子邮件:
原始创建日期:2001年11月1日
到期日期:2001年11月1日
名称服务器信息:
名称服务器:a.iana-servers.net。
名称服务器:b.iana-servers.net。
名称服务器:c.iana-servers.net。
如果上述任何信息不准确,您必须通过访问我们的网站进行更正。(如果您的审查表明上述所有信息都是准确的,则无需采取任何行动。)请记住,根据您的注册协议条款,提供虚假的WHOIS信息可以作为取消您的域名注册的理由。
[如何更正我的WHOIS信息?](https://whois.icann.org/en/how-do-i-correct-my-whois-information)
# 申请企业网络专线流程及资质
### 中国电信
**流程**
- 预接受
- 立项
- 勘察
- 施工
- 开通
- 签订合同
**证件**
1. 营业执照复印件
2. 组织机构代码证
3. 银行开户许可证
4. 法人身份证复印件
5. 经办人身份证复印件
**协议**
- 网络承诺书
- 受理表
- 资费表
# 网络优化
#### 调优思路
本章主要是围绕优化网卡性能和利用网卡的能力分担CPU的压力来提升性能。在高并发的业务场景下,推荐使用两块网卡,减少跨片内存访问的次数。即将两块网卡分别绑定在服务器的不同CPU上,每个CPU只处理对应的网卡数据。高并发场景还可以为网卡选择x16的PCIe卡。
说明:
高并发场景是指:在同时或极短时间内,有大量的请求到达服务端,每个请求都需要服务端耗费资源进行处理,并做出相应的反馈。
#### 主要优化参数
优化项
优化项简介
默认值
生效范围
鲲鹏916处理器
鲲鹏920处理器
调整TLP(Transaction Layer Packet)的最大有效负载
调整PCIE总线每次数据传输的最大值
128B
重启生效
Y
Y
设置网卡队列数
调整网卡队列数量
不同操作系统和网卡不同
立即生效
Y
Y
将每个网卡中断分别绑定到距离最近的核上
减少跨NUMA访问内存
Irqbalance
立即生效
Y
Y
聚合中断
调整合适的参数以减少中断处理次数
不同操作系统和网卡不同
立即生效
Y
Y
开启TCP分段Offload(卸载)
将TCP的分片处理交给网卡处理
关闭
立即生效
Y
Y
**父主题:** [网络子系统性能调优](https://support.huaweicloud.com/tuningtip-kunpenggrf/kunpengtuning_12_0019.html)
# BIND DNS
域名系统可帮助您在互联网上达到您想要的位置。确保您知道它是什么,以及如何设置、配置和测试它。
域名系统(DNS)用于将主机名解析(翻译)为互联网协议(IP)地址,反之亦然。DNS服务器,也称为**名称服务器**,将IP地址映射到主机名或域名。
在本文中,您将学习DNS的基础知识,从DNS如何获取IP地址和主机名,到正向和反向查找区域的概念。它还将向您展示如何安装和配置DNS,定义和编辑区域文件,并验证DNS是否可以借助命令解析到正确的地址。如果您是DNS的新手,本文将帮助您使用基本配置在系统上玩它。
## DNS的工作原理
当客户端从nameserver请求信息时,它通常连接到端口53,然后nameserver解析请求的名称。
图像

(Ashish Bharadwaj,CC BY-SA 4.0) -
## 更多Linux资源
- [基本Linux命令作弊表](https://developers.redhat.com/cheat-sheets/linux-commands-cheat-sheet/?intcmp=701f20000012ngPAAQ)
- [高级Linux命令作弊表](https://developers.redhat.com/cheat-sheets/advanced-linux-commands/?intcmp=701f20000012ngPAAQ)
- [Linux系统管理技能评估](https://rhtapps.redhat.com/assessment/?intcmp=701f20000012ngPAAQ)
- [免费课程:RHEL技术概述](https://www.redhat.com/en/services/training/rh024-red-hat-linux-technical-overview?intcmp=701f20000012ngPAAQ)
从DNS客户端向DNS服务器发送请求称为**查找请求。**
- 从DNS服务器获得对DNS客户端的响应称为**查找响应**。
- 配置DNS服务的系统称为DNS**服务器**。
- 访问DNS服务器的系统称为DNS**客户端**。
## DNS 在哪里获取 IP 地址?
您可能会想知道DNS如何获取相应主机名或域名的IP。DNS如何在不同的IP地址之间搜索并正确关联您的域名?谁存储了域名和IP地址之间的映射?
DNS工作流程说明了DNS内部通信的方式以及它如何解决地址问题。
图像

(Ashish Bharadwaj,CC BY-SA 4.0) - 当客户端搜索域名`www.example.com`时,请求最初将发送到互联网服务提供商(ISP)解析器。它将响应用户解析域名的请求。
- 如果在解析器上找不到IP地址,请求将转发到根DNS服务器,然后转发到顶级域(TLD)服务器。
- TLD服务器存储顶级域的信息,如**.com**或**.net**。
- 请求被转发给名称服务器,这些服务器知道有关域和IP地址的详细信息。
- 命名服务器响应ISP的解析器,然后解析器使用请求的IP响应客户端。
- 当解析器不知道IP时,它会将IP及其域存储在缓存中,以服务未来的查询。
***\[立即下载:[系统管理员IT自动化指南](https://www.redhat.com/en/engage/system-administrator-guide-s-202107300146?intcmp=701f20000012ngPAAQ)。】***
## 向前和反向查找
**正向查找区域**使用域名搜索IP地址,而**反向查找区域**使用IP地址搜索域名。
图像

(Ashish Bharadwaj,CC BY-SA 4.0) ## 安装和配置DNS
BIND是一个名称服务器服务,负责在基于Linux的DNS服务器上执行域名称到IP的转换。
```shell
[root@servera ~] # yum install bind
```
BIND软件包提供`named`服务。它从`/etc/named`和`/etc/named.conf`文件中读取配置。安装此软件包后,您可以开始配置DNS。
### 配置 /etc/named.conf 文件
首先,在**选项**字段中添加或编辑这两个值。一个是DNS服务器地址,另一个是**允许查询任何**地址。
```shell
[root@servera ~] # vim /etc/named.conf
listen-on port 53 { 127.0.0.1; 192.168.25.132; };
allow-query { localhost; any; };
```
以下是上述文件中的值:
- **192.168.25.132** – DNS 服务器地址
- **任何** – 匹配每个 IP 地址
### 定义正反区域
在`/etc/named.conf`或`/etc/named.rfc1912.zones`中定义正向和反向区域(您可以在其中任何文件中定义区域)。在本例中,我将区域定义详细信息附加到`/etc/named.rfc1912.zones`文件中。
```shell
[root@servera ~] # vim /etc/named.rfc1912.zones
zone "example.com" IN { type master;
file "example.forward.zone";
allow-update { none; };
};
zone "25.168.192.in-addr.arpa" IN {
type master;
file "example.reverse.zone";
allow-update { none; };
};
```
### 创建前进和反向区域文件
您还需要在`/var/named`目录中创建正向和反向区域文件。
**注意**:默认情况下,`named.conf`文件包括用于检查区域文件的`/var/named`目录。在安装BIND软件包期间创建`named.localhost`和`named.loopback`的示例区域文件。
```shell
[root@servera ~] # vim /var/named/example.forward.zone
```
图像

(Ashish Bharadwaj,CC BY-SA 4.0) ```shell
[root@servera ~] # vim /var/named/example.reverse.zone
```
图像

(Ashish Bharadwaj,CC BY-SA 4.0) ### 将nameserver IP添加到/etc/resolv.conf
首先,您必须禁用NetworkManager的DNS处理,因为它从其活动连接配置文件中动态更新带有DNS设置的`/etc/resolv.conf`文件。要禁用此功能并允许手动编辑`/etc/resolv.conf`,您必须创建一个文件(例如`90-dns-none.conf`),作为`/etc/NetworkManager/conf.d/`目录中的根文件,其中包含以下内容:
```plaintext
[main]
dns=none
```
保存文件并重新加载(重新启动)NetworkManager。
```shell
# systemctl reload NetworkManager
```
重新加载NetworkManager后,它不会更新`/etc/resolv.conf`。现在,您可以手动将nameserver的IP地址添加到`/etc/resolv.conf`文件中。
```shell
[root@servera ~] # vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain example.com
nameserver 192.168.25.132
```
***做好准备,以防出错。阅读[DNS故障诊断简介](https://www.redhat.com/sysadmin/intro-dns-troubleshooting)。】***
### 启动/重新启动并启用指定的服务
如果`named`服务没有运行或被禁用,则启动并启用它。如果它已经处于活动状态(正在运行),并且您进行了所有这些配置,则需要重新启动服务以进行更改。
```shell
[root@servera ~] # systemctl status named.service
[root@servera ~] # systemctl start named.service
[root@servera ~] # systemctl enable named.service
[root@servera ~] # systemctl restart named.service
```
## 验证DNS名称分辨率
您已安装BIND软件包,配置`named`文件,创建了查找区域,并重新启动了服务以使配置生效。现在使用`nslookup`和`dig`命令来检查DNS是否正常工作,并验证您是否得到了预期结果。
- `nslookup`是一个查询互联网域名服务器的程序。
- `dig`是查询DNS服务器的工具。它执行DNS查找并显示从nameserver返回的答案。
### 使用nslookup查询
```shell
[root@servera ~] # nslookup servera.example.com
Server: 192.168.25.132
Address: 192.168.25.132#53
Name: servera.example.com
Address: 192.168.25.132
[root@servera ~] # nslookup 192.168.25.132
132.25.168.192.in-addr.arpa name = servera.example.com.
```
### 询问挖掘
以下是前瞻性查找,其中DNS以**192.168.11.132**作为IP forservera**.example.com进行**响应:
```shell
[root@servera ~] # dig servera.example.com
...output truncated...
;; ANSWER SECTION:
servera.example.com. 86400 IN A 192.168.25.132
;; AUTHORITY SECTION:
example.com. 86400 IN NS servera.example.com.
...output truncated...
```
此示例显示反向查找,其中DNS服务器以**servera.example.com**作为**192.168.25.132**的域名进行响应:
```shell
[root@servera ~] # dig -x 192.168.25.132
...output truncated...
;; ANSWER SECTION:
132.25.168.192.in-addr.arpa. 86400 IN PTR servera.example.com.
;; AUTHORITY SECTION:
25.168.192.in-addr.arpa. 86400 IN NS servera.example.com.
;; ADDITIONAL SECTION:
servera.example.com. 86400 IN A 192.168.25.132
...output truncated...
```
## 总结
在本文中,您了解了什么是DNS及其工作原理。此外,您现在知道什么是正向和反向查找区域以及它们的工作原理。您还学习了如何安装BIND软件包,该软件包负责在系统上设置DNS并配置`named`文件和查找区域。最后,您学习了两个命令,`nslookup`和`dig`,来查询DNS分辨率。
# windows 5G路由器安装
[https://cloud.tencent.com/developer/article/1678119](https://cloud.tencent.com/developer/article/1678119)
# 路由器
# 5GCPE 脚本使用方法
[](http://book.321jr.com/uploads/images/gallery/2022-06/lw7lCktOSsVEBHpc-openwrt-321gadget-5gcpe.png)
# 4G网络USB共享网络
[](http://book.321jr.com/uploads/images/gallery/2022-06/KkuCBGCA4Tqop0g3-openwrt-4gusb.png)
# 路由器重置、恢复
#### 重置
```
su root &切换为root账户
》回车
ssh root@nas.321jr.com &远程登陆路由器 root账户
》回车
Jaggedsocks919 &密码
》回车
firstboot &重置系统
》回车
y &确认重置系统
》回车
reboot &重启路由器
》回车
```
#### 恢复
- 使用浏览器,登入路由器页面
```
网址:192.168.1.1
密码:koolshare
```
[](http://book.321jr.com/uploads/images/gallery/2022-06/4I1e6xO3ypqcT4YD-image-1656467965697.jpg)
- 上传恢复文件
[](http://book.321jr.com/uploads/images/gallery/2022-06/vrG1aJbICj3pLwj6-image-1656468097055.jpg)
- 路由器自动配置、重启系统完成后,登陆地址变为192.168.2.1。
# 企业微信
# 企业微信应用消息推送
第一个值是企业id,第二个值是secret,第三个值@all(或者成员id),第四个值是AgentID,第五个值是图片id 中间以逗号隔开
最终格式例:" ww479cadfqfe8c151f , MPKN9gX97w4e4b4h4u7u4i4i4i4iO6mN\_dDedBFzqC5c , @all , 1000002 ,2S8H-JWEdsadFDSFSDDijbrtkldfhjslafhs5zEU1GyUkU "
最终将此代码填入config.sh推送渠道9企业微信应用消息推送的值
1. 扫码进入企业微信后台,获取企业id
[https://work.weixin.qq.com/wework\_admin/loginpage\_wx ](https://work.weixin.qq.com/wework_admin/loginpage_wx)
[](http://book.321jr.com/uploads/images/gallery/2022-07/kfzvGZ28A1Ft6obs-image-1658509683534.png)
2.依次进入应用管理-应用-自建-创建应用,自己创建完成后获取secret和AgentID和成员id
前两个直接填,如果给所有人推送填@all( 这里的所有人指的是已经添加到可见范围内的成员 ),如果指定某个接收者直接填id, 多个接收者用‘|’分隔。
[](http://book.321jr.com/uploads/images/gallery/2022-07/oR5NVyEHt134rXkv-image-1658509703709.png)
3. 点击自建应用下方的发消息,依次选择素材库-图片-添加图片,上传完成后从下载库下载图片复制下载链接,然后图片id只需要填写下载链接中红色标出的部分。
例:
https://work.weixin.qq.com/wework_admin/material/getOpenMsgBuf?type=image&media_id=28If78oLQTolSULoVBeKTvSK8-B6LtFJbc\_JWwV2JSou6bftKVmpxyWA1kgU8bB2Y &file_name=IMG_20210205_223133_888.jpg&download=1
[](http://book.321jr.com/uploads/images/gallery/2022-07/XDQYw2czpVgC99FW-image-1658509721581.png)
[](http://book.321jr.com/uploads/images/gallery/2022-07/JOvRsPiHp56GEgnt-image-1658509735533.png)
[](http://book.321jr.com/uploads/images/gallery/2022-07/AFg0r8je2lsBBC8z-image-1658509749065.png)
补充
1.推送到普通微信,需要扫一下这个
[](http://book.321jr.com/uploads/images/gallery/2022-07/8vV7qVQMGS3jXGHE-image-1658509764401.png)
2.推送给多人必须邀请其他人也加入企业,加入到应用可见范围中,也需要扫码微信插件。
3.一切以官方API为准: https://work.weixin.qq.com/api/doc/90000/90135/90235
# FreeIPA
# 设置时区和主机名
### 主机名
#### 设置系统主机名
- 设置 CentOS主机名为 ipa.321jr.net
```
hostnamectl set-hostname ipa.321jr.net
```
- 确认主机名已更改
```
hostnamectl
```
#### 清除系统主机名
- 清除系统主机名并恢复为默认值
```
sudo hostnamectl set-hostname ""
```
### 时区
#### 查询时区
- 显示当前日期和时间
```
timedatectl status
```
#### 设置时间
- 设置 CentOS主机当前时间为 下午 6:28
```
sudo timedatectl set-time 18:28:00
```
- 默认情况下,系统配置为使用 UTC,可以通过运行以下命令强制它使用本地时间:
```
sudo timedatectl set-local-rtc true
```
#### 设置日期
- 设置 CentOS主机当前日期为 2022年7月26日 晚上9点43分01秒
```
sudo timedatectl set-time "2022-07-26 21:43:01"
```
#### 更改时区
- 列出所有可用的时区
```
timedatectl list-timezones
```
- 设置正确的时区
```
sudo timedatectl set-timezone time_zone
```
- 在替换`time_zone`为 list 命令列出的任何值时
```
$ timedatectl list-timezones | grep Nairobi
Africa/Nairobi
$ sudo timedatectl set-timezone Africa/Nairobi
```
- 这会将时区设置为 `Africa/Nairobi `
# 安装 FreeIPA 服务器
- 将 SELinux设置为禁用
```
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
```
- 添加 [AppStream](https://computingforgeeks.com/how-to-use-fedora-29-modular-repository/)存储库模块,并安装 **DL1**
```
sudo yum module info idm:DL1
sudo yum -y install @idm:DL1
```
- 安装 freeipa-server
```
sudo yum -y install freeipa-server
```
- - 如果要包含 DNS 服务,还需要安装 ipa-server-dns、bind 和 bind-dyndb-ldap
- `sudo yum install ipa-server-dns bind-dyndb-ldap`
- 修改/etc/hosts 文件包括主机名和 IP 地址
```
nano /etc/hosts
```
[](http://book.321jr.com/uploads/images/gallery/2022-07/KjNQdCQnvV4Y4jx6-image-1658757432741.png)
- 验证
```
ping -c 2 ipa.321jr.net
```
- 配置服务器主机名以匹配上述名称
```
export HNAME="ipa.321jr.net"
sudo hostnamectl set-hostname $HNAME --static
sudo hostname $HNAME
```
- 配置 IPA 服务器
```
ipa-server-install --setup-dns --allow-zone-overlap
```
-
# 设置 FreeIPA客户端
- 云主机 GZH101-Debian11 下载 FreeIPA客户端软件
```
apt-get install freeipa-client
```
```
sudo ipa-client-install --hostname=gzh101.321jr.cn \
--mkhomedir \
--server=ipa.321jr.cn \
--domain 321jr.cn \
--realm 321JR.CN
```
[](http://book.321jr.com/uploads/images/gallery/2022-07/bbMWube3QTgqjFQO-image-1658763375646.png)
[](http://book.321jr.com/uploads/images/gallery/2022-07/yw6uPz8zAteTjCOw-image-1658763389635.png)
[](http://book.321jr.com/uploads/images/gallery/2022-07/e1xOU4gRf0bjiZao-image-1658763417242.png)
[](http://book.321jr.com/uploads/images/gallery/2022-07/JHerb3mhXx2RMJQR-image-1658763443354.png)
[](http://book.321jr.com/uploads/images/gallery/2022-07/gvAev68twzwEH9wt-image-1658763460820.png)
[](http://book.321jr.com/uploads/images/gallery/2022-07/F50HFHnDmUkrYRDf-image-1658763480470.png)
[](http://book.321jr.com/uploads/images/gallery/2022-07/QnzkKv7NVi1lFqsM-image-1658763543705.png)
[](http://book.321jr.com/uploads/images/gallery/2022-07/KoiC0Tg4wbrBuCJb-image-1658763583968.png)
[](http://book.321jr.com/uploads/images/gallery/2022-07/6Fz5NmpXsVFzQAjn-image-1658763621510.png)