Archives : March-2021

问题描述
当执行 ssh-add 命令时,产生如下错误:

# ssh-add /path/to/id_ras
Could not open a connection to your authentication agent.

问题原因
在环境变量中,相关参数未设置,导致程序无法找到 ssh-agent 服务。需要设置的变量如下:

# ssh-agent -s
SSH_AUTH_SOCK=/tmp/ssh-SUEIyA5guxOn/agent.3917; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3918; exp[……]

Read more

问题描述
我们需要创建多台虚拟机,那对于我们的场景来说,最简单的方法便是虚拟机克隆。
该笔记将记录:在 KVM 中,如何克隆虚拟机,以及常见问题处理。
解决方案
注意事项: 1)克隆虚拟机不能克隆原主机的特征信息,比如 主机密钥、日志文件、用户帐号、网络设置 等等。所以,在克隆前,需要进行准备工作。
实验环境:Ubuntu 20.04 LTS
第一步、安装命令工具

# apt-file search -x bin/virt-sysprep
libguestfs-tools: /usr/bin/virt-sysprep

# apt-file[……]

Read more

问题描述
创建这篇笔记,是因为我们遇到一个问题,这个问题与 CentOS Stream 发行版有关。自从出现 CentOS Stream 版本之后,我们直接跳过 CentOS 8 版本,便开始选择其他 Linux 发行版。我们认为短期之内不能指望使用 Rocky Linux 来替代 CentOS 发行版。最后经过一番权衡,我们选择 Ubuntu Server TLS 系列发行版。我们安装 Ubuntu 18.04 TLS 发行版,以完成相关工作任务。然而,在配置网络时,我们便遇到问题:Ubuntu 没有使用 NetworkManager 管理网络配置?
不同于 CentOS 6.[……]

Read more

问题描述
我们的虚拟机是从虚拟机模板创建的,磁盘默认仅有 10G 空间,无法容纳更多数据,因此需要进行扩容。
注意事项,错误的磁盘分区调整将导致数据的丢失,如果无足够经验,请先进行数据备份,防止数据丢失。
该笔记将记录:在 KVM 中,扩容 .qcow2 操作系统镜像文件的方法,以及常见问题处理。
解决方案
第一阶段、磁盘扩容
通过 virsh 扩容(**推荐**):

# virsh qemu-monitor-command –domain tmpl-ubuntu-1804 –hmp “info block”
drive-virtio-[……]

Read more

问题描述
在不同发行版中,网络配置方法存在很大差异。在相同发行版中,配置方法是类似的。
该笔记将记录:如何在 CentOS 6 中配置网络,包括配置静态地址、动态获取地址(DHCP)、分配多个网络地址。
注意事项
1)在 CentOS 6.x 中,NetworkManager 还未成熟,存在部分问题,因此我们不使用 NetworkManager 进行配置。 2)这里我们只演示保证网络可用的最小配置,并不包含高级复杂参数。
方法一、终端图形界面(推荐)
修改配置文件可能会带来其他错误,建议使用系统提供的工具:

y[……]

Read more

WPA Supplicant是什么?
WPA Supplicant是一个软件包,包含了一系列用于连接Wi-Fi以及管理这些连接的工具。
wpa_supplicant是支持WPA和WPA2(IEEE 802.11i/RSN)的Linux,BSD,Mac OS X和Windows的WPA请求者(WPA Supplicant)。它适用于台式机/笔记本电脑和嵌入式系统。WPA Supplicant是在客户端工作站中使用的IEEE 802.1X/WPA组件。它使用WPA身份验证器(WPA Authenticator)实现密钥协商,并控制WLAN驱动程序的漫游和IEEE 802.11身份验证[……]

Read more

内容简介
本文将介绍如何修改网卡名称。
TODO 如何在Linux中修改网卡的名称
方法一、直接重命名(临时方法)
可以使用命令ip link直接修改网络接口名:

# 关闭网卡
ip link set dev peth0 down
ifconfig peth0 down

# 修改网卡名
ip link set peth0 name eth0

# 启动网卡
ip link set dev eth0 up
ifconfig eth0 up

方法二、使用Udev配置
系统环境:Debian
修改/etc/udev/rules.d[……]

Read more

问题描述
在 Ubuntu 20.04 LTS 中,当使用 NetworkManager 正确配置并启用(nmcli connection up)网卡之后,DNS 配置没有生效,/etc/resolv.conf 坚持使用 127.0.0.53 地址的 DNS 服务。即便没有该服务(127.0.0.53:53),NetworkManager 也坚持使用该地址。并且 /etc/resolv.conf 包含 # Generated by NetworkManager 文本,就表明这是 NetworkManager 生成的。
该问题可能并不常见,只会在某些 Linux 发行版中出现,我们[……]

Read more

内容简介
本文主要介绍如何修改主机名。假如pc为原主机名,而我们现在要将laptop作为主机名。
# CentOS 6.10

#!/bin/sh

# 临时修改,重启后会丢失
hostname laptop

# 持久配置
sed ‘s/HOSTNAME=.+/HOSTNAME=laptop/g’ -i /etc/sysconfig/network

# 修改/etc/hosts文件
sed ‘s/ pc / laptop /g’

# 如果你的命令行提示符还显示以前的主机名,重新登录即可。

# System V

#!/bin/sh

### #[……]

Read more

方法一、ping & arp
向ping一次目标主机,然后使用arp命令:

#!/bin/sh

ping -c 7 “<ip-address>”
# !!!fping!!!
# 如果有有必要的话,可以使用fping -g “<ip-address>/<prefix>”来探测整个网段
# 仅打印可达主机:fping -g “<ip-address>/<prefix>” 2>/dev/null

arp -an | grep “<ip-address>”

方法二、arping[……]

Read more

网络连接检查功能
在 NetworkManager 中,有个功能:允许 NetworkManager 检测系统是否可以实际访问互联网。
就是说,虽然网络正常配置,也正常启动,但是它还是会尝试使用 HTTP 请求一个 URL 来判断到能不能访问外部网络。
默认的配置信息
这个 URL 可以在配置文件中设置。在 Debian 中,默认配置文件位于 /usr/lib/NetworkManager/conf.d/20-connectivity-debian.conf 中。

[connectivity]
uri=http://network-test.debian[……]

Read more

问题描述
今天原本要做别的事情,但是突然发现 JumpServer 发布新版本。并且,我们还发现优化资产树节点排序问题(这是我们比较关心的问题,2.4.4 的资产排序方式“似乎没有规律”,导致资产节点显示有些“不整齐”)。
因此,我们决定对我们的 JumpServer 服务进行升级,升级到最新的版本(2.8.2)。也许这太鲁莽,但是换个角度看:做好数据备份以后,即使升级失败,我们也能够进行回滚;此外,JumpServer 的配置不会经常变动,哪怕回滚导致数据遗失,对于我们来说是在可接受范围内的。所以,我们能够接受升级失败带来的后果。
该笔记将记录:将 JumpServer[……]

Read more

构建镜像的两种方法
方法一、使用 docker commit 命令(不推荐)
类似于版本控制系统的提交命令,比如 git commit 命令。
创建容器 -> 修改 -> 提交
使用docker commit命令提交修改过的容器。该命令只提交与之前差异的部分。
还可以使用 -a 选项指定作者,选项 -m 指定提交信息。
使用 docker inspect 命令查看镜像信息。
访问 docker commit 查看 docker commit 命令的所有选项。
方法二、使用 Dockerfile 构建镜像(推荐)
因为通过[……]

Read more

问题描述
最然现在 Docker 非常方便,也成为我们运行及部署应用的主要方式,但是某些场景还是需要使用虚拟化方案。
该笔记将记录:在 Linux 中,如何部署及使用 KVM 虚拟化环境,以及部署相关的问题处理。
解决方案
第一步、检查硬件虚拟化
检查是否支持硬件虚拟化:

grep –color -E ‘(vmx|svm)’ /proc/cpuinfo

输出中应该出现 vmx 或 svm 等内容,否则就是不支持硬件虚拟化。
第二步、检查内核模块
检查内核是否加载 KVM 模块,:

# lsmod | grep[……]

Read more

本文介绍基于libvirt的应用程序使用的常见网络配置。 此信息适用于所有「Hypervisor」,无论是Xen,还是KVM,又或者其他。
两种常见设置是:
* 虚拟网络:「NAT转发」。开箱即用,无需过多设置。
* 共享设备:「桥接网络」。需要进行特定的手动配置。

本文主要介绍这两种网络。最后一部分是「网络设备直通」相关的内容。
虚拟网络:NAT转发
#1 对Host配置
如果libvirt是标准安装的,那它默认提供基于NAT的虚拟机连接,开箱即用:

# virsh net-list –all
Name State[……]

Read more

问题描述
在 KVM 中,我们经常为虚拟机选择桥接网络,以使虚拟机暴露在内网中,可以被其他主机访问。
但是,使用桥接网络的问题是:虚拟机(Guest)无法访问宿主机(Host),而我们希望两者能够互相访问。
该笔记将记录:在 KVM 中,如何实现宿主机与虚拟机的相互访问,以及常见问题的处理方法。
问题原因
在 KVM 中,Guest 在桥接模式下,无法访问 Host 主机,这并不是错误,而是 macvtap 设备的特性。物理设备绑定到 macvtap 网桥,进入网桥的流量被转发到了设备上,不通过Host的IP网络栈。除此之外,从Host的IP网络栈发出的流量被[……]

Read more

问题描述
现代的高级语言,多数都具有扩展管理工具,以方便开发者安装扩展(插件、类库)。Python 也不例外,它也有自己的模块管理工具:pip
该笔记将记录:在 Python 中,如何使用 pip(1) 安装和管理 Python 模块,以及常见问题处理。
解决方案
第一步、安装 pip 命令
安装发行版自带版本(推荐):

apt-get install -y python2-pip

# 虽然版本较旧,但是经过发行版的完整测试,在当前系统中完全正常工作(几乎很少出问题)
# 如果需要新的版本(或模块),建议使用系统的 pi[……]

Read more

问题描述
虽然我们在 Linux 中办公(编程),但是许多日常工作需求与在 Windows 下是及其相似的。比如,该笔记将记录的截图。所谓一图胜千言,截图操作是在日常沟通中的重要操作,在某些留证说明中也要使用截图。不管是用 Windows macOS Linux 系统,截图都是我们必须要进行的事情。
所以,拥有一款好用的截图软件为非常必要的。在 Windows 中,我们能够使用某些通讯工具内置的截图功能。但是,在 Linux 中,就需要自己折腾(自行寻找合适的工具,或者自行开发)。
该笔记将记录:在 Linux 中,我们用过的截图工具,以及使用经验、常用问题处理等等。[……]

Read more

内容简介
本文将介绍如何搭建Kubernetes Cluster(内部etcd服务)。由于“内部etcd服务”式集群,占用主机数量少、管理相对简单、并且具有高可用性,所以选择该类型集群。
注意事项
本文内容参考官方「Creating Highly Available clusters with kubeadm v1.17」文档整理。
环境概述
操作系统:CentOS Linux release 7.4.1708 (Core) 软件版本:Kubernetes 1.16.2, Docker
前提条件
满足“kubeadm’s m[……]

Read more

在Host之间迁移Guest是一个复杂的问题,有许多可能的解决方案,每个解决方案都各有优劣。为了实现「Hypervisor集成」和「管理员部署」的最大灵活性,libvirt实现了多种迁移选项。
数据的传输方式
迁移期间使用的数据传输有两种选择:可以是Hypervisor的「原始传输」;或者通过libvirtd连接进行「隧道传输」。
原始传输(由Hypervisor提供)
「原始传输」不一定支持加密,取决于所讨论的Hypervisor,但通常会通过最小化所涉及的数据副本的数量来实现最低的计算成本。「原始传输」还需要管理员在部署Host时进行额外的“Hypervisor特定[……]

Read more