华为云用户手册

  • 根因分析 出现该问题通常是密码文件的属性的问题导致,也有可能是根目录空间满。 执行以下命令查看存放用户和密码的文件(/etc/passwd和/etc/shadow)属性。 lsattr /etc/passwd /etc/shadow 如上图所示,/etc/passwd和/etc/shadow文件中有i属性,"i"的文件属性表示该文件不能修改:它不能被删除或重命名,无法为此创建任何链接文件,不能将任何数据写入该文件。只有管理员用户可以设置或清除此属性。 1.如果设置了'a'属性的文件只能在append(只允许增加记录)写作模式。只有管理员用户可以设置或清除此属性。 CAP_LINUX_IMMUTABLE功能可以设置或清除这个属性。 其他文件属性可以执行以下命令查看chattr使用手册。 chattr 2.如果lsattr结果中没有限制增加或者修改的属性,则可能为根分区空间不足,可以查询根分区使用率。 df -h 处理方法则为删除根分区下不需要的文件。
  • 处理方法 用chattr命令将i权限撤销,然后再修改密码。 如果文件属性为"i",执行以下命令。 chattr -i /etc/passwd /etc/shadow 如果文件属性为"a",执行以下命令。 chattr -a /etc/passwd /etc/shadow (可选)如果对修改过属性的文件有安全要求需要设置相应的属性,请重新设置相应的属性。 如果设置文件属性为"i",执行以下命令。 chattr +i /etc/passwd /etc/shadow 如果设置文件属性为"a",执行以下命令。 chattr +a /etc/passwd /etc/shadow 查看修改后的文件属性,执行以下命令。 lsattr /etc/passwd /etc/shadow
  • 根因分析 出现该问题通常有三个原因: /etc/resolv.conf未配置 DNS地址 或者DNS地址错误导致。 /etc/nsswitch.conf文件删除DNS解析记录导致。 /lib64/libnss_dns.so.2库文件丢失导致无法解析 域名 。 执行以下命令,查看解析域名打开的所有文件。 strace -e trace=open ping www.baidu.com -c 1 该结果中出现的所有文件都会影响域名解析。
  • 处理方法 场景一:/etc/resolv.conf未配置DNS地址或者DNS地址错误导致。 /etc/resolv.conf中最关键的是nameserver项,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的。 nameserver表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下一个的nameserver。 请检查/etc/resolv.conf中配置的DNS地址。 场景二:/etc/nsswitch.conf文件删除DNS解析记录导致。 检查/etc/nsswitch.conf是否有DNS解析配置。 grep hosts /etc/nsswitch.conf 回显信息如下所示,hosts行中未配置DNS选项,导致解析域名时不会读取/etc/resolv.conf,导致域名解析失败。 #hosts: db files nisplus nis dns hosts: files myhostname 打开/etc/nsswitch.conf找到hosts行添加DNS解析。 #hosts: db files nisplus nis dns hosts: files dns myhostname hosts项的值代表按优先级顺序列出服务,这些服务用于查找域名的IP地址。 “file”表示使用/etc/hosts文件,“ dns”表示使用域名服务。如果“file”位于“ dns”之前,则意味着系统将首先尝试在/etc/hosts中查找域名,然后才通过DNS查找(这是默认配置)。如果未配置dns则不会使用DNS查找。 场景三:/lib64/libnss_dns.so.2库文件丢失导致无法解析域名。 /lib64/libnss_dns.so.2库文件由glibc包产生,可以通过校验glibc查看包是否被修改。 rpm -V glibc 在正常的Linux系统执行 rpm -qf /lib64/libnss_dns.so.2生成库文件。 回显信息如下所示,说明/lib64/libnss_dns.so.2文件缺失。 missing /lib64/libnss_dns.so.2 执行以下命令,重新建立软链接。 在正常的云服务器上执行ls -l /lib64/libnss_dns.so.2可知/lib64/libnss_dns.so.2的源文件为/usr/lib64/libnss_dns-2.17.so。 ln -s /usr/lib64/libnss_dns-2.17.so /usr/lib64/libnss_dns.so.2
  • 处理方法 在控制台重启主机,进入单用户模式。 进入单用户模式的详细操作请参考Linux云服务器如何进入单用户模式重置root密码 执行以下命令检查/etc/passwd文件 。 cat /etc/passwd 确认passwd文件已被破坏,执行以下命令使用系统初始的备份passwd-文件替换损坏的passwd文件 。 cp /etc/passwd- /etc/passwd 该操作会造成自行添加的用户丢失,如果为应用运行的用户会导致应用启动失败,待修复后请自行添加用户。 执行以下命令退出当前根目录至initramfs的根目录。 exit 重启云服务器。 (可选)待系统启动,添加丢失的用户,例如执行以下命令添加Nginx运行用户nobody并指定该用户shell为/sbin/nologin(请根据场景添加用户,需要登录系统的用户需要指定shell为/bin/bash)。 useradd nobody -s /sbin/nologin
  • 操作场景 本节操作适用于Linux操作系统云服务器/etc/passwd文件损坏导致云服务器无法登录的问题。 本节操作为紧急恢复系统方法,需要在单用户模式下会将系统备份初始备份/etc/passwd-文件替换已损坏的/etc/passwd文件,该操作会造成自行添加的用户丢失(包括应用运行的用户,可以参考/etc/shadow文件添加其他账号)。 本节操作涉及重启云服务器操作,重启云服务器会造成业务中断,请谨慎操作。
  • 问题分析 在 Linux 的内存管理中,buffer是Linux内存中的Buffer cache。cache是Linux内存中的Page cache。 Buffer cache:主要是当系统对块设备进行读写的时候,对块进行数据缓存的系统来使用,即对块的操作会使用buffer cache进行缓存。 例如:当对一个文件进行写操作的时候,page cache 的内容会被改变,而buffer cache则可以用来将page标记为不同的缓冲区,并记录是哪一个缓冲区被修改了。内核在后续执行脏数据的回写writeback时,就不用将整个page写回,而只需要写回修改的部分即可。 Page cache:主要用来作为文件系统上的文件数据的缓存来用,尤其是针对当进程对文件有read/write操作的时候。Linux默认会将读取的文件内容缓存在内存中,方便后续使用。 Linux默认使用的是lazy模式,即内存如果还够用,则不会主动释放当前的占用的buffer和cache,如果需要内存,则会自动释放buffer和cache,所以正常情况下,cache占用高不会对系统造成影响。
  • 处理方法 短期处理方法: 执行以下命令重启NetworkManager服务。 systemctl restart NetworkManager 长期处理方法: CentOS 7操作系统云服务器 执行以下命令停止NetworkManager服务,改用network管理网络 systemctl disable NetworkManager /sbin/chkconfig network on kill `pgrep -o dhclient` systemctl stop NetworkManager systemctl start network 出现network启动失败可能为系统内置多网卡配置文件导致,处理方法参考多网卡配置文件导致network启动失败处理。 Ubuntu16.04操作系统 执行以下命令使用networking管理网络。 systemctl disable NetworkManager systemctl disable network-manager systemctl enable networking kill `pgrep -o dhclient` systemctl stop NetworkManager systemctl start networking 启用networking服务,一定要检查interfaces文件中是否设置网络配置为DHCP模式。 vi /etc/network/interfaces 若只有一个网卡eth0则可以检查或增加: auto eth0 iface eth0 inet dhcp 图1 设置网络配置为DHCP模式
  • 根因分析 执行以下命令,查询有问题的mount unit。 systemctl list-units --type=mount |grep failed test1.mount loaded failed failed /test1 执行以下命令,查询该unit的状态。 systemctl status test1.mount 回显信息如下所示: ● test1.mount - /test1 Loaded: loaded (/etc/fstab; bad; vendor preset: disabled) Active: failed (Result: exit-code) since Wed 2019-08-28 15:32:53 CS T; 3min 27s ago Where: /test1 What: /dev/vdb1 Docs: man:fstab(5) man:systemd-fstab-generator(8) Process: 4601 ExecUnmount=/bin/umount /test1 (code=exited, status=0/SUC CES S) Process: 3129 ExecMount=/bin/mount /dev/vdb1 /test1 -t ext4 (code=exited, status=0/SUCCESS) ... ... Warning: test1.mount changed on disk. Run 'systemctl daemon-reload' to reload units. 如回显信息所示test1.mount磁盘发生了改变,需要运行systemctl daemon-reload重新加载units。 更改/etc/fstab时,必须执行systemctl daemon-reload。在运行该命令之前,systemd不读取fstab并生成装载单元。
  • CentOS 6操作系统 登录控制台,重启云服务器,单击“远程登录”。 在出现Booting CentOS界面时,按任意键,进入内核选择界面。 图1 Booting CentOS 内核选择界面出现时按下键将光标移至第二内核,然后按回车键进行启动。 待系统启动后,执行以下命令设置默认启动内核为第二内核。 sed 's/default=0/default=1/' /boot/grub/grub.conf -i default默认值为 0(代表从/boot/grub/grub.conf文件中kernel菜单中第一个,从上往下依次是 0,1,2 等)。
  • 问题现象 Linux操作系统云服务器根目录空间占用率过高。例如,以图1为例,根目录空间占用率为96%。 图1 根目录空间占用率过高 查询当前系统存在一个约42G大小的文件access_log,这个文件是apache产生的访问日志文件,从日志大小判断是很久没有清理的apache日志文件了。 执行以下命令删除access_log。 rm /tmp/access_log 执行以下命令查看文件系统使用率。 df -h 删除该文件后使用df查看文件系统使用率仍是96%。
  • 根因分析 通常不会出现删除文件后空间不释放的情况,特殊情况是文件进程锁定,或有进程一直在向这个文件写数据。 为了分析根因,首先需要了解Linux文件的存储机制和存储结构。 一个文件在文件系统中存放分为两个部分: 指针部分:指针位于文件系统的meta-data中,在将数据删除后,这个指针就从meta-data中清除了。 数据部分:而数据部分存储在磁盘中。 将数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容。出现删除access_log文件后,空间还没有释放的原因,是因为httpd进程还在一直向这个文件写入内容,导致删除了access_log文件后,进程锁定,文件对应的指针部分并未从meta-data中清除,由于指针并未删除,系统内核就默认文件并未被删除,因此查询文件系统使用率时,显示空间并未释放。
  • 场景二:如果结果显示挂载方式rw,则确认是否为文件系统错误导致 执行以下命令,检查内核中关于文件系统的信息。 dmesg |egrep "ext[2..4]|xfs" 输出结果中如果有I/O error ... inode 的错误信息则根因为文件系统错误导致进入只读模式。 如图所示,需要修复文件系统,请先备份数据后操作,由于文件系统在使用中无法修复,需要通过单用户模式(在该模式下磁盘未挂载)修复文件系统。 重启进入单用户模式尝试修复文件系统。 查询当前设备及文件系统 blkid 检查文件系统(以vdb1为例)。 ext系列文件系统执行以下命令 fsck -n /dev/vdb1 xfs系列文件系统执行以下命令 xfs_check /dev/vdb1 如果遇到提示当前文件系统为mounted,需要先umount文件系统。 执行以下命令,查看当前挂载信息执行 mount 卸载设备 umount 挂载点 修复文件系统(以vdb1为例)。 ext系列文件系统执行以下命令 fsck /dev/vdb1 xfs系列文件执行以下命令 xfs_repair /dev/vdb1
  • 场景一:/var/empty/sshd属主非root导致sshd启动失败 sshd启动失败,查看journal日志,提示/var/empty/sshd must be owned by root。 journalctl -xe 查看/var/empty/sshd文件属主信息 ll /var/empty/sshd 如上图所示,由于/var/empty/sshd目录属主非root用户导致sshd服务启动失败。 修改/var/empty/sshd属主,及其权限。 chown -R root.root /var/empty/sshd chmod -R 711 /var/empty/sshd 重启sshd服务,执行: systemctl restart sshd
  • 分析atop日志 atop启动后,会将采集记录存放在/var/log/atop目录下的日志文件中。 执行如下命令,查看日志文件。 atop -r /var/log/atop/atop_2024XXXX atop常用命令 打开日志文件后,您可以使用以下命令筛选数据。 c:按照进程CPU使用率进行降序筛选。 m:按照进程内存使用率进行降序筛选。 d:按照进程磁盘使用率进行降序筛选。 a:按照进程资源综合使用率进行降序筛选。 n:按照进程网络使用率进行降序筛选。 t:跳转到下一个监控采集点。 T:跳转到上一个监控采集点。 b:指定时间点,格式为YYYYMMDDhhmm。 系统资源监控字段含义 下图为部分监控字段以及数值,具体数值根据采样周期和atop版本有所不同。下图仅供参考,具体数据以您实际数据为准。 图1 系统资源监控字段 主要参数说明如下: ATOP 行:主机名、信息采样日期和时间点。 PRC 行:进程整体运行情况。 #sys 及 user:内核态和用户态所占 CPU 的时间值。 #proc:进程总数。 #zombie:僵死进程的数量。 #exit:采样周期期间退出的进程数量。 CPU 行:CPU 整体(即多核 CPU 作为一个整体 CPU 资源)的使用情况。CPU 行的各字段数值相加结果为 N*100%,N 为 CPU 核数。 #sys 及 user:内核态和用户态所占 CPU 的时间比例。 #irq:CPU 被用于处理中断的时间比例。 #idle:CPU 处在完全空闲状态的时间比例。 #wait:CPU 处在进程等待磁盘 IO ,导致 CPU 空闲状态的时间比例。 CPL 行:CPU 负载情况。 #avg1、avg5 和 avg15:过去1分钟、5分钟和15分钟内运行队列中的平均进程数量。 #csw:指示上下文交换次数。 #intr:指示中断发生次数。 MEM 行:内存的使用情况。 #tot:物理内存大小。 #free:空闲的物理内存大小 #cache :用于页缓存的内存大小。 #buff:用于文件缓存的内存大小。 #slab:系统内核占用的内存大小。 SWP 行:交换空间的使用情况。 #tot:交换区总量。 #free:空闲交换空间大小。 DSK 行:磁盘使用情况,每一个磁盘设备对应一列。如果有 sdb 设备,那么增加一行 DSK 信息。 #sda:磁盘设备标识。 #busy:磁盘忙时比例。 #read 及 write:读、写请求数量。 NET 行:多列 NET 展示了网络状况,包括传输层(TCP 和 UDP)、IP 层以及各活动的网口信息。 #xxxxxi:各层或活动网口收包数目。 #xxxxxo:各层或活动网口发包数目。 停止 atop atop运行会占用额外的系统和磁盘资源,不建议在业务环境下长期运行,您可在问题排查完成后,执行以下命令停止atop。 systemctl stop atop CentOS 6执行以下命令停止atop。 service atop stop
  • 配置kdump操作步骤 查看是否已经安装kexec-tools。 rpm -q kexec-tools 如果没有安装,则执行下面命令安装。 yum install -y kexec-tools 开启kdump默认启动。 systemctl enable kdump 设置craskkernel参数,设置这个参数的目的是预留内存给capture kernel。 首先查看参数是否已经设置。 grep crashkernel /proc/cmdline 如果有显示,则表示已经设置,如果没有显示,则需要重新设置。 设置crashkernel,编辑/etc/default/grub文件。 GRUB_TIMEOUT=5 GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CM DLI NE_LINUX="crashkernel=auto rd.lvm.lv=rhel00/root rd.lvm.lv=rhel00/swap rhgb quiet" GRUB_DISABLE_RECOVERY="true" 找到GRUB_CMDLINE_LINUX参数,添加crashkernel=auto,其他内容不变。 执行grub命令,使以上配置生效。 grub2-mkconfig -o /boot/grub2/grub.cfg 打开/etc/kdump.conf文件中找到“path”参数,添加以下内容。 path /var/crash 默认是保存在/var/crash目录下,如果要保存到其他目录,则改成对应的目录, 例如保存在/home/kdump下,则改成: path /home/kdump 要确保指定的路径有足够的空间保存vmcore,建议剩余空间不小于 RAM 大小;也可以保存在SAN,nfs等共享设备上。 设置转存vmcore级别。 修改/etc/kdump.conf文件,添加如下参数,如果存在则无需添加。 core_collector makedumpfile -d 31 -c -c表示压缩vmcore文件, -d表示过滤掉部分无效的内存数据,可以根据需要调整,一般31即可,31是由如下的值与计算而成。 zero pages = 1 cache pages = 2 cache private = 4 user pages = 8 free pages = 16 执行如下命令重启系统,使以上配置生效。 reboot
  • CentOS 7/8、AlmaLinux、 Rocky Linux系列操作系统配置atop 执行以下命令,安装atop。 yum install -y atop 编辑配置文件,修改采样周期。 vi /etc/sysconfig/atop 修改如下配置参数,修改后保存并退出。 LOG INTERVAL默认是600,可以修改成15,单位秒。 默认atop日志保存周期为28天,可以根据实际修改LOGGENERATIONS的值为3,单位为天。 LOGINTERVAL=15 LOGGENERATIONS=3 启动atop服务。 systemctl start atop 检查是否启动成功,active(running) 表示运行正常。 systemctl status atop atop.service - Atop advanced performance monitor Loaded: loaded (/usr/lib/systemd/system/atop.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2024-03-6 11:49:47 CST; 2h 27min ago
  • Ubuntu 18、Debian 8/9系列操作系统配置atop 执行以下命令,安装atop。 apt-get install -y atop 编辑配置文件,修改采样周期。 vi /usr/share/atop/atop.daily 修改如下配置参数,修改后保存并退出。 LOGINTERVAL默认是600,可以修改成15,单位秒。 默认atop日志保存周期为28天,可以根据实际修改“-mtime”的值为3,单位为天。 LOGINTERVAL=15 …… ( (sleep 3; find $LOGPATH -name 'atop_*' -mtime +3 -exec rm {} \;)& ) 启动atop服务。 systemctl start atop 检查是否启动成功,active(running) 表示运行正常。 systemctl status atop atop.service - Atop advanced performance monitor Loaded: loaded (/etc/init.d/atop; bad; vendor preset: disabled) Active: active (running) since Sat 2024-03-6 14:09:47 CST; 15s ago
  • 操作场景 本节操作介绍atop和kdump的配置方法。 不同的Linux版本使用的atop工具版本不同,因此配置方法稍微有所不同。 配置atop: atop简介 atop安装前准备 CentOS 7/8、AlmaLinux、 Rocky Linux系列操作系统配置atop CentOS 6系列操作系统配置atop Ubuntu 20/22、Debian 10/11系列操作系统配置atop Ubuntu 18、Debian 8/9系列操作系统配置atop Ubuntu 16系列操作系统配置atop SUSE 15、SUSE 12系列操作系统配置atop 使用源码方式安装(适用于CentOS Stream 9、openEuler、EulerOS等系列操作系统) 分析atop日志 配置kdump: 配置kdump使用须知 kdump简介 配置kdump操作步骤 检查kdump配置是否生效
  • CentOS 6系列操作系统配置atop 执行以下命令,安装atop。 yum install -y atop 编辑配置文件,修改采样周期。 vi /etc/sysconfig/atop 修改如下配置参数,修改后保存并退出。 LOGINTERVAL默认是600,可以修改成15,单位秒。 LOGINTERVAL=15 vi /etc/logrotate.d/atop 修改如下配置参数,修改后保存并退出。 默认atop日志保存周期为40天,可以根据实际修改“-mtime”的值为3,单位为天。 postrotate /usr/bin/find /var/log/atop/ -maxdepth 1 -mount -name atop_\[0-9\]\[0-9\]\[0-9\]\[0-9\]\[0-9\]\[0-9\]\[0-9\]\[0-9\]\* -mtime +3 -exec /bin/rm {} \; endscript 启动atop服务。 service atop start 检查是否启动成功,is running 表示运行正常。 service atop status atop (pid 3170) is running
  • Ubuntu 20/22、Debian 10/11系列操作系统配置atop 执行以下命令,安装atop。 apt-get install -y atop 编辑配置文件,修改采样周期。 vi /etc/default/atop 修改如下配置参数,修改后保存并退出。 LOGINTERVAL默认是600,可以修改成15,单位秒。 默认atop日志保存周期为28天,可以根据实际修改LOGGENERATIONS的值为3,单位为天。 LOGINTERVAL=15 LOGGENERATIONS=3 启动atop服务。 systemctl start atop 检查是否启动成功,active(running) 表示运行正常。 systemctl status atop atop.service - Atop advanced performance monitor Loaded: loaded (/etc/init.d/atop; bad; vendor preset: disabled) Active: active (running) since Sat 2024-03-11 14:09:47 CST; 16s ago
  • Ubuntu 16系列操作系统配置atop 执行以下命令,安装atop。 apt-get install -y atop 编辑配置文件,修改采样周期。 vi /etc/default/atop 修改如下配置参数,修改后保存并退出。 LOGINTERVAL默认是600,可以修改成15,单位秒。 默认atop日志保存周期为28天,不支持修改。 LOGINTERVAL=15 启动atop服务。 systemctl start atop 检查是否启动成功,active(running) 表示运行正常。 systemctl status atop atop.service - LSB: Monitor for system resources and process activity Loaded: loaded (/etc/init.d/atop; bad; vendor preset: enabled) Active: active (running) since Mon 2024-04-29 19:33:22 CST; 38s ago
  • SUSE 15、SUSE 12系列操作系统配置atop 下载atop源码安装包。 wget https://www.atoptool.nl/download/atop-2.6.0-1.src.rpm 执行以下命令安装源码atop。 rpm -ivh atop-2.6.0-1.src.rpm 安装编译atop依赖软件包 zypper -n install rpm-build ncurses-devel zlib-devel 执行以下命令编译atop cd /usr/src/packages/SPECS rpmbuild -bb atop-2.6.0.spec 执行以下命令安装atop cd /usr/src/packages/RPMS/x86_64 rpm -ivh atop-2.6.0-1.x86_64.rpm 编辑配置文件,修改采样周期。 vi /etc/default/atop 修改如下配置参数,修改后保存并退出。 LOGINTERVAL默认是600,可以修改成15,单位秒。 默认atop日志保存周期为28天,可以根据实际修改LOGGENERATIONS的值为3,单位为天。 LOGINTERVAL=15 LOGGENERATIONS=3 重启atop服务。 systemctl restart atop 检查是否启动成功,active(running) 表示运行正常。 systemctl status atop atop.service - Atop advanced performance monitor Loaded: loaded (/usr/lib/systemd/system/atop.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2021-06-19 16:50:01 CST; 6s ago
  • 处理方法 方法1:执行以下命令,停止firewalld服务并取消开机自启。 建议通过安全组和ACL进行访问控制,如业务需要开启firewalld请参考•方法2:执行以下命令,在firewalld服务... systemctl stop firewalld systemctl disable firewalld 方法2:执行以下命令,在firewalld服务中添加新的端口55660。 firewall-cmd --add-port=55660/tcp --permanent --zone=public firewall-cmd --reload
  • 根因分析 登录管理控制台,并通过VNC方式登录云服务器。 执行以下命令,查看是否开启了firewalld。 systemctl status firewalld 图1 开启firewalld 如图1所示,系统已开启firewalld。 执行以下命令,查看firewalld中的规则。 firewall-cmd --list-all 图2 查看firewalld规则 如图2所示,firewall当前的zone为public,该zone默认只放通ssh和dhcpv6-client服务。其中ssh服务为默认的22端口,当ssh修改为非22端口时就无法访问。
  • 处理方法 执行以下命令,排查磁盘的物理空间是否已满。 df -h 图1 检查磁盘物理空间 如图1所示,磁盘空间还有剩余,排除物理磁盘空间已满的情形 执行以下命令,查看系统可用的inode节点使用率。 df -i 当结果中的Use%为100%时则为inode耗尽,可以执行以下的操作步骤释放inode。 执行以下命令,将所有在目录文件进行归档。 tar czvf /tmp/backup.tar.gz /home/data 删除对应目录下确认不需要的文件释放inode。
  • 处理方法 备份多余的网卡,然后删除/etc/sysconfig/network-scripts目录下多余的网卡配置文件。 执行以下命令,进入该网卡配置文件目录。 本例中查看云服务器内部包含11个网卡配置文件。 cd /etc/sysconfig/network-scripts 执行以下命令备份网卡文件。 mkdir tmp cp ifcfg-* tmp/ ls tmp/ 图2 查看网卡配置文件 如果只使用一张网卡,则删除ifcfg-eth0外多余的网卡配置文件,如果有ifcfg-ens5配置文件也需要删除。 本例以删除ifcfg-eth1到ifcfg-eth11,和ifcfg-ens5为例,请根据实际网卡配置情况更新命令。 rm -rf ifcfg-eth[1-9] ifcfg-eth10 ifcfg-eth11 ifcfg-ens5 图3 删除多余的配置文件 结束多余的dhclient进程。 查询dhclient进程 ps -ef | grep dhclient 以PID为770 为例,执行以下命令结束该进程。 kill -9 770 请注意正确拼写服务的PID。 kill -9 PID表示强制结束进程。 图4 结束dhclient进程 重启network服务。 systemctl restart network 查看network网络状态恢复正常。 systemctl status network 图5 查看network网络状态
  • 根因分析 执行以下命令,查看系统内核是否开启了TIME_WAIT快速回收和重利用策略 sysctl -a |grep tcp_tw 如图1所示,确认已开启该策略。 图1 TIME_WAIT 由于服务端开启了TIME_WAIT快速回收和重利用策略导致,即启用了net.ipv4.tcp_tw_recycle或者net.ipv4.tcp_tw_reuse。系统默认是不启用该功能。 客户端通常在NAT环境下,多台终端使用同一个公网ip,无法实现服务端与客户端的一对一连接。如果开启此参数服务端会回收处于TIME_WAIT状态的TCP连接,导致连接断开。
  • 方法二:使用DenyHosts允许或者禁止指定IP通过SSH登录 linux 服务器通过设置 /etc/hosts.allow 和 /etc/hosts.deny 这个两个文件,可以限制或者允许某个或者某段IP地址远程SSH登录服务器.方法比较简单,具体如下: 允许192.168.1.3 这个IP地址ssh登录,打开/etc/hosts.allow,添加如下行: sshd: 192.168.1.3 禁止所有ip通过ssh登录,打开/etc/hosts.deny,添加如下行: sshd:ALL hosts.allow 和hosts.deny 两个文件同时设置规则的时候,hosts.allow 文件中的规则优先级高,假设按照上述方法设置后服务器只允许192.168.1.3这个IP地址的SSH登录,其它的 IP 都会拒绝。
  • 方法一:通过编辑sshd配置文件实现允许或者禁止指定用户/用户组或者IP登录 允许指定用户进行登录(白名单) 在/etc/ssh/sshd_config 配置文件中设置AllowUsers选项,在配置文件末尾添加行格式如下(例如允许用户test通过192.168.1.2登录)。 AllowUsers test@192.168.1.2 配置了指定用户或者用户组允许登录后,默认拒绝其他所有用户或者用户组。 禁止指定用户登录(黑名单) 在 /etc/ssh/sshd_config 配置文件中设置DenyUsers选项,在配置文件末尾添加行格式如下(例如禁止用户testuser登录)。 DenyUsers testuser 上述修改需要重启sshd服务。 CentOS 6系列执行以下命令进行重启: service sshd restart Centos 7/EulerOS系列执行以下命令进行重启: systemctl restart sshd
共100000条