1. 内核参数调优

网络缓冲区调整

# 增加TCP读写缓冲区范围
echo "net.ipv4.tcp_rmem = 4096 87380 16777216" >> /etc/sysctl.conf
echo "net.ipv4.tcp_wmem = 4096 65536 16777216" >> /etc/sysctl.conf

# 增加最大缓冲区大小
echo "net.core.rmem_max = 16777216" >> /etc/sysctl.conf
echo "net.core.wmem_max = 16777216" >> /etc/sysctl.conf

# 增加默认缓冲区大小
echo "net.core.rmem_default = 1048576" >> /etc/sysctl.conf
echo "net.core.wmem_default = 1048576" >> /etc/sysctl.conf

连接处理优化

# 增加最大连接数
echo "net.core.somaxconn = 32768" >> /etc/sysctl.conf

# 增加等待连接队列大小
echo "net.ipv4.tcp_max_syn_backlog = 8192" >> /etc/sysctl.conf

# 启用TCP快速打开
echo "net.ipv4.tcp_fastopen = 3" >> /etc/sysctl.conf

拥塞控制算法

# 查看可用算法
sysctl net.ipv4.tcp_available_congestion_control

# 设置拥塞控制算法(推荐使用bbr或cubic)
echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf

2. 文件系统优化

大文件传输优化

# 增加文件描述符限制
echo "fs.file-max = 1000000" >> /etc/sysctl.conf
ulimit -n 1000000

# 使用更高效的文件传输工具(如bbcp、rsync with --partial等)

3. 网络协议栈优化

TCP参数调整

# 启用时间戳
echo "net.ipv4.tcp_timestamps = 1" >> /etc/sysctl.conf

# 启用选择性确认
echo "net.ipv4.tcp_sack = 1" >> /etc/sysctl.conf

# 调整keepalive时间
echo "net.ipv4.tcp_keepalive_time = 300" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_probes = 5" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_intvl = 15" >> /etc/sysctl.conf

4. 硬件和驱动优化

中断亲和性设置

# 查看网络接口的中断
cat /proc/interrupts | grep eth

# 设置中断亲和性(根据CPU核心数调整)
# 例如将eth0的中断绑定到CPU0
echo 1 > /proc/irq/[中断号]/smp_affinity

启用巨帧(如果网络支持)

ifconfig eth0 mtu 9000

5. 应用层优化

使用高效传输工具

  • rsyncrsync -avz --partial --progress source destination
  • bbcp: 专为高速网络设计的点对点拷贝工具
  • iperf3: 用于测试网络性能 iperf3 -c server_ip

多线程传输

# 使用axel多线程下载工具
axel -n 10 http://example.com/largefile.iso

# 使用parallel-rsync进行并行rsync传输

6. 应用后验证

# 应用所有sysctl设置
sysctl -p

# 验证当前TCP参数
sysctl -a | grep tcp

# 监控网络性能
iftop -n -i eth0
nload eth0

注意事项

  1. 根据实际硬件配置和网络环境调整参数值
  2. 修改前备份原始配置文件
  3. 生产环境建议先在测试环境验证
  4. 不同Linux发行版可能有细微差异
  5. 对于云环境,部分参数可能受限于云服务商设置

这些优化可以显著提高Linux系统在大流量传输场景下的性能,但最佳配置需要根据具体应用场景和硬件环境进行测试和调整。

当你在 Linux 或 macOS 系统中运行 dig 命令时遇到 bash: dig: command not found 错误,说明系统未安装 dig 工具。dig(Domain Information Groper)是用于 DNS 查询的常用工具,属于 BIND 软件包的一部分。


解决方法

1. 安装 dig(不同系统的安装方式)

Debian/Ubuntu 等基于 APT 的系统

sudo apt update
sudo apt install dnsutils -y

安装后验证:

dig google.com

RHEL/CentOS/Fedora 等基于 YUM/DNF 的系统

# CentOS/RHEL 7 或更早版本
sudo yum install bind-utils -y

# CentOS/RHEL 8+/Fedora
sudo dnf install bind-utils -y

安装后验证:

dig google.com

Arch Linux/Manjaro

sudo pacman -S bind-tools

macOS(使用 Homebrew)

brew install bind

Windows(WSL 或手动安装)

  • 方法 1:在 WSL(Windows Subsystem for Linux)中安装 Ubuntu/Debian,然后运行 sudo apt install dnsutils
  • 方法 2:手动下载 dig for Windows(如 BIND for Windows)。

2. 临时替代方案(如果无法安装 dig

如果无法安装 dig,可以使用以下替代命令进行 DNS 查询:

使用 nslookup(通常默认安装)

nslookup google.com

使用 host

host google.com

使用 curl 查询 DNS(如 Cloudflare 的 1.1.1.1)

curl -s https://1.1.1.1/dns-query?name=google.com | jq .  # 需要安装 jq

3. 检查 dig 是否在 PATH 中

如果安装后仍然报错,可能是 dig 不在 PATH 中。手动查找 dig 的位置:

which dig

如果返回空,尝试重新安装或手动添加路径:

export PATH=$PATH:/usr/sbin  # dig 通常在 /usr/sbin/dig

4. 验证 DNS 解析

安装完成后,测试 dig 是否正常工作:

dig baidu.com +short

如果返回类似 142.250.190.46 的 IP 地址,说明 dig 已正确安装。


总结

系统安装命令
Debian/Ubuntusudo apt install dnsutils
RHEL/CentOS 7sudo yum install bind-utils
RHEL/CentOS 8+/Fedorasudo dnf install bind-utils
Arch Linuxsudo pacman -S bind-tools
macOS (Homebrew)brew install bind
Windows (WSL)sudo apt install dnsutils

在 Linux 系统下获取 ARM 处理器的型号,可以通过以下几种方法:


1. 查看 /proc/cpuinfo 文件

运行以下命令,查看处理器的详细信息:

cat /proc/cpuinfo
  • 关键字段
    • model name(部分系统可能显示为 Processor 或 Hardware):直接显示处理器型号。
    • CPU part(十六进制代码):如 0xd03 对应 Cortex-A53,0xd08 对应 Cortex-A72 等。
    • Hardware:显示 SoC(系统级芯片)的型号(如树莓派的 BCM2835)。

示例输出片段

Processor   : ARMv7 Processor rev 5 (v7l)
Hardware    : BCM2835
CPU part    : 0xc07

2. 使用 lscpu 命令

显示 CPU 架构的汇总信息:

lscpu
  • 输出内容
    • Architecture:如 aarch64(64 位 ARM)或 armv7l(32 位 ARMv7)。
    • Model name(部分系统支持):直接显示处理器型号。

3. 使用 dmidecode(需 root 权限)

读取硬件信息表(可能因设备而异):

sudo dmidecode -t processor
  • 输出内容:查找 Product Name 或 Version 字段。

4. 查看 SoC/设备特定信息

  • 树莓派:bash复制vcgencmd cpu_version或查看 /proc/device-tree/model:bash复制cat /proc/device-tree/model
  • 其他设备
    查看 /sys/devices 或 /sys/firmware 下的信息,例如:bash复制cat /sys/firmware/devicetree/base/model

5. 通过 CPU part 代码查询 ARM 型号

如果 /proc/cpuinfo 中显示 CPU part 字段(如 0xd03),可参考 ARM 官方文档:

  • 常见代码
    • 0xd03 → Cortex-A53
    • 0xd08 → Cortex-A72
    • 0xc07 → Cortex-A7
    • 0xc0f → Cortex-A15

6. 使用硬件检测工具

安装 lshw 或 hardinfo 工具:

sudo apt install lshw    # Debian/Ubuntu
sudo lshw -C cpu

示例流程

  1. 快速检查:bash复制cat /proc/cpuinfo | grep -E “model name|Hardware|CPU part”
  2. 结合输出分析
    • 若 Hardware 显示 BCM2837,则处理器为 Cortex-A53(树莓派 3)。
    • 若 CPU part 为 0xd08,则对应 Cortex-A72。

通过以上方法,你可以定位到具体的 ARM 处理器型号或 SoC 型号。如果信息有限,建议结合设备厂商的文档进一步确认。

使用 cloudflared 和 systemd 在 Linux 上设置 DNS over HTTPS (DoH)

Linux 上如何使用 systemd 设置 DNS over HTTPS (DoH) ?通过利用 systemd,我们可以确保在启动时自动启动提供 DoH 服务的 cloudflared

第一步:安装 cloudflared

  1. 首先,下载 cloudflared
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64

Copy

  1. 使二进制文件可执行并移至合适的目录:
chmod +x cloudflared-linux-amd64
sudo mv cloudflared-linux-amd64 /usr/local/bin/cloudflared

Copy

第二步:配置 cloudflared

  1. 创建 cloudflared 的配置目录:
sudo mkdir /etc/cloudflared

Copy

  1. 创建配置文件:
sudo nano /etc/cloudflared/config.yml

Copy

  1. 填入以下内容:
proxy-dns: true
proxy-dns-upstream:
  - https://1.1.1.1/dns-query
  - https://1.0.0.1/dns-query

Copy

保存并退出。

第三步:将 cloudflared 设置为 systemd 服务

  1. 创建 systemd 服务文件:
sudo nano /etc/systemd/system/cloudflared.service

Copy

  1. 填入以下内容:
[Unit]
Description=cloudflared DNS over HTTPS 代理
After=syslog.target network-online.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/cloudflared proxy-dns
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

Copy

保存并退出。

  1. 启用并开始服务:
sudo systemctl enable cloudflared
sudo systemctl start cloudflared

Copy

第四步:更新系统 DNS 设置

  1. 编辑 resolv.conf
sudo nano /etc/resolv.conf

Copy

  1. 修改或添加:
nameserver 127.0.0.1

Copy

这将使用 cloudflared 代理作为系统的 DNS 服务器。

第五步:验证 DoH 配置

检查 DNS 请求是否通过 HTTPS:

dig @127.0.0.1 example.com

Copy

注意:使用 NetworkManager 或其他网络工具的系统可能会覆盖 /etc/resolv.conf。确保配置这些工具以防止此类更改,或使 resolv.conf 不可变。

我们希望此指南帮助您在 Linux 上使用 cloudflared 和 systemd 设置了 DNS over HTTPS。如果遇到任何问题,请查阅相关文档或寻求技术支持。

错误命令行:

root@ubuntu:/etc/apt# apt install vim
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
vim : Depends: vim-common (= 2:7.4.052-1ubuntu3.1) but 2:8.0.1453-1ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.

原因
已有安装过vim,但没有安装成功

解决方案
先执行 sudo apt-get remove vim-common 卸载vim-common
再进行安装vim,执 sudo apt-get install vim

今天,Linus Torvalds 宣布了 Linux 6.5 内核系列的最终发布,这是一个重大更新,引入了多项新功能,更新和新的驱动程序以获得更好的硬件支持,以及其他更改。

经过七个RC版本的测试,Linux内核6.5现已发布,新功能包括在ALSA中支持MIDI 2.0,为RISC-V架构提供ACPI支持,为UML(User-Mode Linux)提供Landlock支持,更好地支持AMD“Zen”系统,以及对ARMv8.8 memcpy/memset指令的用户空间支持,改进 Btrfs 性能等。

Linux内核6.5现在可以从Linus Torvalds’ Git treekernel.org网站下载。但这是源代码,需要手动编译。如果这不符合你的口味,你将不得不等待Linux 6.5出现在你的GNU/Linux发行版的稳定软件存储库中以进行更新。

Ubuntu是站长个人常用的系统镜像,当然有些在运维的时候还是需要用到一些命令操作的。这里整理常用的20个Ubuntu常用命令。

1、ls:列出当前目录下的文件和文件夹。

示例:ls

2、cd:切换到指定目录。

示例:cd /home/user/Documents

3、pwd:显示当前工作目录的路径。

示例:pwd

4、mkdir:创建一个新的目录。

示例:mkdir new_directory

5、rm:删除文件或目录。

示例:rm file.txt 或 rm -r directory

6、cp:复制文件或目录。

示例:cp file.txt new_file.txt 或 cp -r directory new_directory

7、mv:移动文件或目录,可以同时用于重命名文件或目录。

示例:mv file.txt new_location/file.txt 或 mv file.txt new_name.txt

8、cat:显示文件内容。

示例:cat file.txt

9、grep:在文件中搜索指定的字符串。

示例:grep “search_string” file.txt

10、chmod:修改文件或目录的权限。

示例:chmod 755 file.txt

11、chown:修改文件或目录的所有者。

示例:chown user:group file.txt

12、chgrp:修改文件或目录的所属组。

示例:chgrp group file.txt

13、apt-get:用于安装、更新和卸载软件包。

示例:sudo apt-get install package_name

14、dpkg:用于管理Debian软件包。

示例:sudo dpkg -i package.deb

15、wget:从网络上下载文件。

示例:wget http://example.com/file.txt

16、tar:打包和解压缩文件。

示例:tar -cvf archive.tar file1 file2 或 tar -xvf archive.tar

17、ssh:通过SSH协议远程登录到另一台计算机。

示例:ssh username@remote_host

18、top:显示系统中运行的进程和资源占用情况。

示例:top

19、ifconfig:显示和配置网络接口信息。

示例:ifconfig

20、ping:测试与另一台计算机之间的连通性。

示例:ping 192.168.0.1

OpenSSL 是一个用于安全通信的开放源代码项目,可以用来检查证书。下面是使用 OpenSSL 检查证书的步骤

1.下载并安装 OpenSSL

在你的计算机上下载并安装 OpenSSL 工具。可从官网https://www.openssl.org/source/下载。下载后按照官网提供的安装方法进行安装。

2.导入证书

将证书导入 OpenSSL,可以通过以下命令将证书导入 OpenSSL 中:

openssl x509 -in cert_file.pem -text

复制

上述命令指出打印 cert_file.pem 证书文件的详细信息,其中包括证书持有人、颁发机构、有效期等。

3.验证证书

可以使用 OpenSSL 验证证书的有效性,可以使用以下命令:

openssl verify cert_file.pem

如果证书是有效的,命令将返回以下信息:

cert_file.pem: OK

如果证书无效,命令将返回以下信息:

cert_file.pem: C = US, O = Example Company, CN = example.com
error 18 at 0 depth lookup:self signed certificate
error cert_file.pem:self signed certificate

4.检查证书链

可以检查整个证书链的有效性,可以使用以下命令:

openssl verify -CAfile ca_file.pem cert_file.pem

上述命令用于检查 cert_file.pem 证书文件是否在 ca_file.pem 证书链中,同时也可以检查证书链的有效性。如果证书链有效,则命令将返回以下信息:

cert_file.pem: OK

如果证书链无效,则命令将返回以下信息:

cert_file.pem: C=US,O=Example Company,CN=example.com
error 20 at 0 depth lookup:unable to get local issuer certificate
error cert_file.pem: verification failed

复制

上述异常错误信息也可能有多种,可以根据具体的错误类型进行诊断。

5.其他操作

OpenSSL 还支持其他证书查询与操作,如通过 OCSP 验证证书状态等。

综上所述,OpenSSL 提供了丰富的功能来检查证书,可以通过简单的命令行操作来实现。同时,需要注意正确安装 OpenSSL 后才能进行上述的检查操作。

错误信息 “/lib64/libm.so.6: version `GLIBC_2.27′ not found” 表示程序运行需要 GLIBC 2.27 版本的 libc 库,而系统中安装的 libc 库的版本较低,因此无法找到所需的库。

要解决这个问题,一种可行的方法是更新 libc 库的版本。可以按照以下步骤进行操作:

  1. 检查系统中 libc 库的版本。可以使用以下命令查看:
ldd --version

该命令会返回系统中的 libc 库版本以及其他相关信息。

  1. 下载 GLIBC 2.27 版本的源码包。可以从 GLIBC 的官方网站下载(http://ftp.gnu.org/gnu/glibc/glibc-2.27.tar.gz)。
  2. 解压源码包并进入源码目录。
  3. 编译并安装 GLIBC 2.27。可以使用以下命令:
./configure --prefix=/usr/local/glibc-2.27
make
sudo make install

请注意,安装的目录可以根据实际情况进行修改。

  1. 将新的 libc 库路径添加到 LD_LIBRARY_PATH 环境变量中。可以使用以下命令:
export LD_LIBRARY_PATH=/usr/local/glibc-2.27/lib:$LD_LIBRARY_PATH
  1. 重新运行程序,查看是否仍然出现错误。

请注意,更新系统的 libc 库版本可能会影响到其他程序的运行,因此在执行此操作之前,请仔细考虑潜在的影响,并在操作之前备份重要数据。

在大部分 Linux 系统中,cat 命令是通过 coreutils 包默认安装的。但是如果您在 Alpine Linux 中找不到 cat 命令,您可以按照以下步骤安装 Coreutils 包:

1. 使用 apk 命令更新索引:

apk update   

2. 安装 Coreutils 包:

apk add coreutils   

安装完成后,您就可以使用 cat 命令了。

注意:在 Alpine Linux 中,cat 命令位于 coreutils 包中,该包提供了其他常见的 Linux 命令,如 chgrp、chmod、chown、cp、date、dd、df等等,因此安装 coreutils 包是非常重要的。