系统 Ubuntu 20.04.3 LTS
安装cockpit后, 软件列表刷新一直报错, 提示cannot refresh cache whilst offline
.
解决方法: 在netplan中调整渲染器(renderer)为NetworkManager
, ubuntu默认的渲染器为networkd
. 配置类似如下:
1 | network: |
参考的文章已经讲的特别清晰了, 本篇主要是把原文里简述的部分稍微展开描述.
本文中提到的Chain功能, 可通过wg-ops工具更简单的实现. 使用该工具可避免一些常见的容易犯错的点.
peer为NodeA, allowed-ips设为0.0.0.0/0
, 即全部流量. 假设网卡名称为wg0. 如果不想转发本地流量, 请设置allowed-ips为0.0.0.0/1, 128.0.0.0/1
注意当allowed-ips设为全部流量转发的时候, 可能需要添加DNS选项才能正确解析. DNS解析请求会走隧道.
先与client建立连接, allowed-ips设为client的ip即可 (按需设置). 假设网卡名称为wg1
再与NodeB建立连接, allowed-ips设为NodeA的ip + Client的ip. (按需设置). 假设网卡名称为wg2
与NodeA建立连接, allowed-ips设为NodeA的ip. (按需设置). 假设网卡名称为wg3
1 | echo "1 middleman" >> /etc/iproute2/rt_tables |
注意此处ip rule
的from
要配置为NodeA原本对Client的allowed-ips
, 从而让Client来的流量可以按照middleman
表来进行路由.
1 | wg set wg2 peer <NodeB的公钥> allowed-ips 0.0.0.0/0 |
这句话主要是将面向NodeB的wg2接口的WireGuard路由调整为0.0.0.0/0. 注意, 此处并没有调整系统路由表. 所以如果用ip route
命令查看的时候, 当前系统里原本面向NodeB的路由还是原来的路由, 因此NodeA上的其他流量不会被全部转发到NodeB.
1 | sysctl net.ipv4.ip_forward=1 |
启动IP转发.
1 | sysctl net.ipv4.ip_forward=1 |
启动IP转发.
1 | iptables -A FORWARD -i wg3 -j ACCEPT |
调整iptables规则, 允许来自wg3的流量转发. 第二句指定系统将eth0网卡作为转发流量的出口. 如果物理网卡名字不同需要调整为目标网卡名称. (否则不会报错, 但是没有效果)
可以通过traceroute
命令来验证.
如果想让来自Client的流量只经过NodeA转发, 但是某些想经过NodeB转发, 那么在step-by-step里第4步, ip route
命令改为:
1 | ip route add <想经过NodeB路由的IP> dev wg2 table middleman |
除此之外还要在NodeA上调整iptables从而允许流量转发至互联网:
1 | iptables -A FORWARD -i wg2 -j ACCEPT |
更多节点: 在靠近Client端的节点按照NodeA配置, 在靠近互联网的节点按照NodeB配置, 中间的节点只需要按照NodeA配置即可.
更少节点: 如果Client只经过一跳就到达互联网, 则不需要NodeA的ip rule
和ip route
配置, 只需要在NodeA上配置允许转发到互联网的iptables规则即可.
1 | [Interface] |
wg0 (面向客户端)
1 | [Interface] |
wg1 (面向下一个节点)
1 | [Interface] |
1 | [Interface] |
这里要注意, 因为我们没有在NodeA上配置iptables规则让来自10.100.0.0/24
网段的IP包以10.200.0.2
为源地址发出, 所以我们要在NodeB上配置允许IP来自10.100.0.0/24
网段, 尽管在NodeB与NodeA之间使用的是100.200.0.0/24
网段.
Wireguard VPN: Chained Setup - The poetry of (in)security ——这篇写的真的太棒了
Wireguard VPN: Typical Setup - The poetry of (in)security
iamckn/chained-wireguard-ansible - GitHub
nealfennimore/wireguard.conf - GitHubGist
traceroute(8) — Linux manual page
Proxmox版本: pve-manager/7.0-8/b1dbf562 (running kernel: 5.11.22-1-pve)
web控制台上的 关机/重启/停止/重置 都是没用的, 最简单的关机办法是在pve主机上运行 qm stop <VMID>
, 相当于拔电源. 还有一种比较邪门的方法是直接ps -ef | grep kvm
然后看kvm -id
后对应的VMID, 再直接kill -9
其他可能的命令:
qm shutdown <VMID>
走正常流程关机
qm reboot <VMID>
走正常流程重启, 如果有准备中的改动会应用上去. 注意, VM内自行的重启不会导致改动被应用.
qm reset <VMID>
相当于按下reset键的重启
trying to aquire lock…TASK ERROR: can’t lock file ‘/var/lock/qemu-server/…
VMWare Workstation版本: VMware® Workstation 16 Pro 16.1.2 build-17966106
Proxmox版本: pve-manager/7.0-8/b1dbf562 (running kernel: 5.11.22-1-pve)
在workstation里启动一下目标vm, 然后走正常流程关机, 在workstation面板里关闭这个vm.
打开这个vm所在的文件夹, 找到vmdk文件, 将其复制到PVE机器上.
在PVE机器上走正常流程新建一个虚拟机, 拿到vm号码 (以104举例)
运行 qm importdisk 104 <vmdk文件路径> <本地存储名称>
. 一般来说本地存储名称叫 local-lvm
, 可以在Proxmox存储面板上看到
等待导入完成后, 在PVE面板上找到VM104, 可以看到一个没有挂载的硬盘, 将其挂载, 并将刚刚创建的空磁盘分离并删除.
【关键】在VM104面板上, 点击<选项>, 编辑<引导顺序>, 勾选新加入的磁盘, 取消对net0的勾选.
开机测试迁移效果.
Ubuntu Server 20.04 LTS 迁移后可能会因为网卡名称发生变化而没有网, 需要编辑 /etc/netplan下的文件调整原网卡名到新的网卡名, 再运行 sudo netplan apply
如果出现CPU单核打满, 屏幕显示Booting from Hard Disk...
且持续很长时间, 则考虑磁盘的控制器是否选错了. 一般来说从vmware迁移过来的磁盘都是基于SATA的. 有帖子称跟UEFI BIOS有关, 但实际测试中没有解决问题.
importdisk
可能是新出的命令, 之前的很多帖子都要先convert
再挂载, 对pve7参考价值不大.
How to migrate a VMWare vmdk to Proxmox 4.4 with local-lvm storage
ProxmoxVE 之 V2V迁移(vmware->PVE)
Proxmox VE导入OVA、VMDK虚拟机文件,可以“随心所欲”的迁移到PVE平台
Proxmox VE磁盘/目录详解,并且安装第二个硬盘,修改ISO/虚拟机存放位置
Proxmox to Vmware: How to migrate a Proxmox VM to Vmware
Location of Disk Images in Local-LVM
Migration of servers to Proxmox VE
Importing VMWare and VirtualBox VMs to Proxmox
Migrating VM Disk from HyperV to Proxmox (qm importdisk) BOOT FAILED
请支持正版, 在日常使用机器上购买正版并激活Windows操作系统
某些场景下(例如VM环境), windows实例存活时间较短, 激活不是很划算. 此时想要调整任务栏样式, 例如不合并按钮等, 则需要调整注册表:
Dir: 计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
(英文操作系统请将计算机
替换为Computer
)
Key | Type | Value | Notice |
---|---|---|---|
TaskbarGlomLevel | REG_DWORD | 2 | 主屏任务栏按钮不合并 |
MMTaskbarGlomLevel | REG_DWORD | 2 | 多显示器其他任务栏按钮不合并 |
MMTaskbarMode | REG_DWORD | 2 | 多显示器其他任务栏只显示打开的程序 |
调整后, 在任务管理器-进程-应用
中, 选中Windows资源管理器
, 右键重新启动
即可.
创建 win10_customize_taskbar.reg
1 | Windows Registry Editor Version 5.00 |
Task Bar Settings Not Editable with deactivated windows 10
Disable Windows 10 Taskbar Grouping and Small Icons about Registry?
How-to: Windows 10 registry - user interface settings
Surface Book 2 13寸, USB-TypeC接hub, 鼠标键盘接在hub上. 大约30秒-1分钟间隔键盘鼠标会停止响应. 尝试切换鼠标直接接usb也没有改善.
据传因固件问题导致CPU过度超频影响USB设备. 通过以下命令调整DC/AC模式下CPU的最大频率, 防止过度超频. 调整后需要重启才能生效.
1 | powercfg -SETDCVALUEINDEX SCHEME_BALANCED SUB_PROCESSOR PROCFREQMAX 3800 |
Nginx版本: nginx/1.14.0 (Ubuntu)
Let’s Encrypt证书使用acme.sh客户端获取, 由Let’s Encrypt颁发.
问题现象: nginx配置https网站后, 浏览器(Edge/Chrome等)访问正常, curl访问报错提示curl: (60) SSL certificate problem: unable to get local issuer certificate
. 从Java中通过HttpClient访问也提示证书校验失败.
分析: 根据 SSL Server Test 系统测试提示 This server's certificate chain is incomplete. Grade capped to B.
多处搜索无果, 于是查看通过acme.sh获取到的几个证书, 可以看到chain.cer
中包含两个证书, *
开头的cer文件中包含一个证书, fullchain.cer
中包含以上两个证书, 考虑是否因证书链不完整导致报错.
解决方案: nginx对应server配置中:
ssl_certificate
改用 fullchain.cer
ssl_trusted_certificate
改用 chain.cer
.
改动后需重新加载服务器: systemctl reload nginx
比较疑惑的是为什么非泛解析域名就不存在这个问题, 还没太想明白.
主板: 微星MSI 迫击炮 B550
网卡: Intel Corporation Ethernet Connection (7) I219-V (rev 10)
内核版本: Linux 5.11.22-1-pve #1 SMP PVE 5.11.22-2
PVE版本: pve-manager/7.0-8/b1dbf562
问题现象: 每隔1-3分钟, 网卡会掉线15-30秒, 期间ping丢包100%, ip丢包100%. 系统日志提示如下:
1 | Aug 15 18:48:46 proxmox kernel: e1000e 0000:00:1f.6 eno1: Detected Hardware Unit Hang: |
解决方法: 驱动问题, 需要关闭网卡的一些属性.
1 | ethtool -K eno1 gso off gro off tso off tx off rx off rxvlan off txvlan off sg off |
使用apt install -y ethtool
以安装以太网工具.
此改动仅限本次开机期间, 重启后会失效. 持久化保存需要修改 /etc/network/interfaces
在对应的网卡配置下, 与address
同级添加配置:
1 | offload-gso off |
不修改interfaces
也可以使用另一种方式, 即开机运行一次ethtool
命令, 创建一个ethfix.service
1 | [Unit] |
运行systemctl enable ethfix
, 即可在今后开机时自动应用改动.
e1000 driver hang | Proxmox Support Forum
e1000 driver hang | Page 8 | Proxmox Support Forum
e1000e eno1: Detected Hardware Unit Hang: | Proxmox Support Forum